Explorar el Código

订单明细查询增加时间区间

谭斌 hace 2 años
padre
commit
06256445a4

+ 52 - 4
device-api-service/src/main/java/com/xy/service/factory/device/impl/alipay/AliPayOpenDeviceFatoryImpl.java

@@ -1,5 +1,6 @@
 package com.xy.service.factory.device.impl.alipay;
 
+import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONObject;
 import com.xy.alipay.SpiDeviceService;
 import com.xy.annotate.Factory;
@@ -15,13 +16,13 @@ import com.xy.dto.spi.DeviceAlarmNotifyDTO;
 import com.xy.dto.spi.DeviceStatusChangeNotifyDTO;
 import com.xy.entity.DeviceInfo;
 import com.xy.entity.DeviceStatus;
-import com.xy.service.AlipayDeviceService;
-import com.xy.service.DeviceEventMsgServiceImpl;
-import com.xy.service.DeviceInfoServiceImpl;
-import com.xy.service.DeviceStatusServiceImpl;
+import com.xy.entity.DeviceSysinfo;
+import com.xy.error.CommRuntimeException;
+import com.xy.service.*;
 import com.xy.service.factory.device.impl.open.OpenDeviceFactoryImpl;
 import com.xy.service.factory.device.DeviceFactory;
 import com.xy.utils.*;
+import com.xy.utils.enums.DeviceActiveStateEnum;
 import com.xy.utils.enums.DeviceErrorRecordTypesEnum;
 import com.xy.vo.DeviceDetailVO;
 import io.swagger.annotations.Api;
@@ -54,6 +55,8 @@ public class AliPayOpenDeviceFatoryImpl implements DeviceFactory, SpiDeviceServi
 
     private DeviceEventMsgServiceImpl deviceEventMsgService;
 
+    private DeviceSysinfoServiceImpl deviceSysinfoService;
+
     @Override
     public R save(DeviceRegisterDto.Save save) {
         R r = openDeviceFactoryImpl.save(save);
@@ -199,4 +202,49 @@ public class AliPayOpenDeviceFatoryImpl implements DeviceFactory, SpiDeviceServi
         execute.end();
         return R.ok();
     }
+
+    @ApiOperation("设备注册&激活")
+    @PostMapping("deviceActive")
+    public R deviceActive(@RequestBody AlipayDeviceActiveDto dto) {
+        Long deviceId = dto.getDeviceId();
+        String sn = dto.getSn();
+        DeviceInfoDto.Vo deviceInfo = R.feignCheckData(deviceInfoService.obj(new DeviceInfoDto.Obj().setDeviceId(deviceId).setIsSysinfo(Boolean.TRUE)));
+        Long mercId = deviceInfo.getMercId();
+        Integer activeState = deviceInfo.getActiveState();
+        if (DeviceActiveStateEnum.TRUE.getCode().equals(String.valueOf(activeState))) {
+            throw new CommRuntimeException("此设备已经在平台激活,请到货柜操作!");
+        }
+        DeviceSysinfoDto.Vo deviceSysinfo = deviceInfo.getDeviceSysinfo();
+        if (deviceSysinfo != null) {
+            String deviceSn = deviceSysinfo.getDeviceSn();
+            if (StrUtil.isNotEmpty(deviceSn)) {
+                //存在绑定关系了
+                //绑定sn与扫码获取的sn是否一致
+                if (!deviceSn.equals(sn)) {
+                    throw new CommRuntimeException("SN号与平台登记的不一致,请联系客服!");
+                }
+
+            } else {
+                //登记了 but 没有sn ,则启用扫码获取的sn
+                //调用支付宝 注册
+                Boolean regOk = R.feignCheckData(alipayDeviceService.deviceBind(new BindDeviceDTO().setTerminalId(String.valueOf(deviceId)).setBoardSn(sn)));
+                if (regOk) {
+                    deviceSysinfoService.updateById(new DeviceSysinfo().setDeviceId(deviceId).setDeviceSn(sn));
+                }
+            }
+            String deviceName = deviceInfo.getDeviceName();
+            deviceName = StrUtil.isNotEmpty(deviceInfo.getDeviceName()) ? deviceName : String.valueOf(deviceId);
+            //调用支付宝激活
+            Boolean activeOk = R.feignCheckData(alipayDeviceService.deviceActive(new BindActiveDTO().setTerminalId(String.valueOf(deviceId)).setBoardSn(sn).setDeviceName(deviceName)));
+            if (!activeOk) {
+                throw new CommRuntimeException("设备激活失败,请联系客服!");
+            }
+            //更新激活状态
+            deviceInfoService.updateById(new DeviceInfo().setDeviceId(deviceId).setActiveState(1));
+        } else {
+            throw new CommRuntimeException("此设备尚未在平台登记,请联系客服!");
+        }
+
+        return R.ok();
+    }
 }

+ 28 - 0
device-api/src/main/java/com/xy/dto/AlipayDeviceActiveDto.java

@@ -0,0 +1,28 @@
+package com.xy.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+
+/**
+ * 支付宝设备激活
+ *
+ * @author 谭斌
+ * @date 2023/06/09
+ */
+@Data
+@Accessors(chain = true)
+public class AlipayDeviceActiveDto {
+
+    @NotBlank(message = "sn不能为空")
+    @ApiModelProperty(value = "sn编号,扫码获得", required = true)
+    private String sn;
+
+    @NotNull(message = "设备编号不能为空")
+    @ApiModelProperty(value = "设备编号", required = true)
+    private Long deviceId;
+}