|
@@ -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();
|
|
|
+ }
|
|
|
}
|