Переглянути джерело

支付宝设备详情联网状态实时获取

谭斌 1 рік тому
батько
коміт
7e38a79bac

+ 26 - 13
device-api-service-merc-mini/src/main/java/com/xy/controller/MercMiniDeviceController.java

@@ -1,38 +1,33 @@
 package com.xy.controller;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.BooleanUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.xy.annotate.RestMappingController;
 import com.xy.device.EnumDeviceActiveStatus;
 import com.xy.device.EnumDeviceFreezeStatus;
 import com.xy.device.EnumDeviceType;
-import com.xy.dto.DeviceBluetoothAuthDto;
-import com.xy.dto.DeviceInfoDto;
-import com.xy.dto.DeviceStatusDto;
-import com.xy.dto.MercMiniDeviceDto;
+import com.xy.dto.*;
 import com.xy.dto.be.MercDto;
 import com.xy.dto.common.MercLineDto;
 import com.xy.dto.common.MercPlaceDto;
 import com.xy.dto.mini.MiniMercRegionDto;
-import com.xy.entity.DeviceBluetoothAuth;
-import com.xy.entity.DeviceInfo;
-import com.xy.entity.DeviceSysinfo;
-import com.xy.entity.DeviceTempRecords;
+import com.xy.entity.*;
 import com.xy.enums.MercStatus;
-import com.xy.service.DeviceBluetoothAuthServiceImpl;
-import com.xy.service.DeviceInfoServiceImpl;
-import com.xy.service.DeviceSysinfoServiceImpl;
-import com.xy.service.DeviceTempRecordsServiceImpl;
+import com.xy.service.*;
 import com.xy.service.be.MercFeignService;
 import com.xy.service.common.MercLineService;
 import com.xy.service.common.MercPlaceService;
 import com.xy.service.factory.device.DeviceFactory;
 import com.xy.utils.*;
+import com.xy.utils.Enum.AlgorithmTypeEnum;
 import com.xy.utils.enums.DeviceActiveStateEnum;
 import com.xy.utils.enums.DeviceAuthCodeUseStatus;
 import com.xy.utils.enums.DeviceLockState;
 import com.xy.utils.enums.DeviceNetSateType;
+import com.xy.vo.DeviceDetailVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -76,6 +71,10 @@ public class MercMiniDeviceController {
 
     private final DeviceTempRecordsServiceImpl deviceTempRecordsService;
 
+    private final AlipayDeviceService alipayDeviceService;
+
+    private final DeviceStatusServiceImpl deviceStatusService;
+
     @ApiOperation("商户设备首页统计")
     @PostMapping("mercHomeStatistical")
     public R<DeviceInfoDto.MercHomeStatisticalVO> mercHomeStatistical(@RequestBody @Valid DeviceInfoDto.MercHomeQueryDTO dto) {
@@ -113,7 +112,7 @@ public class MercMiniDeviceController {
         R<DeviceInfoDto.Vo> r = deviceInfoService.obj(obj);
         DeviceInfoDto.Vo vo = r.getData();
         if (vo != null) {
-
+            Long algorithmId = vo.getAlgorithmId();
             //点位
             Long placeId = vo.getPlaceId();
             List<MercPlaceDto.Vo> merPlaceList = R.feignCheckData(mercPlaceService.list(new MercPlaceDto.ListDto().setIds(CollUtil.newArrayList(placeId))));
@@ -153,8 +152,22 @@ public class MercMiniDeviceController {
                 DeviceLockState deviceLockStateR = DeviceLockState.getEnumByCode(deviceStateR);
                 vo.setDeviceStateRName(deviceLockStateR == null ? "未知" : deviceLockStateR.getDescription());
                 vo.setDeviceStateLName(deviceLockStateL == null ? "未知" : deviceLockStateL.getDescription());
+
+                if (AlgorithmTypeEnum.ALIPAY.getId() == algorithmId) {
+                    //支付宝状态实时返回
+                    DeviceDetailVO deviceDetailVO = alipayDeviceService.queryDetail(new DeviceDetailDTO().setTerminalId(String.valueOf(vo.getDeviceId())));
+                    Boolean online = deviceDetailVO.getOnline();
+                    Integer netState = BooleanUtil.isTrue(online) ? DeviceNetSateType.CONNECTED.getCode() : DeviceNetSateType.DISCONNECT.getCode();
+                    if (!ObjectUtil.equals(netState, deviceStatus.getNetState())) {
+                        //存在差异更新设备状态表
+                        deviceStatusService.updateById(new DeviceStatus().setDeviceId(vo.getDeviceId()).setNetState(netState));
+                    }
+                    deviceStatus.setNetState(netState);
+                    vo.setDeviceStatus(deviceStatus);
+                }
             }
 
+
         }
         return R.ok(vo);
     }