Explorar el Código

Merge remote-tracking branch 'origin/master' into prod

tanbin hace 1 año
padre
commit
10210af36e

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

@@ -8,6 +8,7 @@ import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.xy.annotate.RestMappingController;
+import com.xy.annotation.LogOperate;
 import com.xy.collections.list.JArrayList;
 import com.xy.collections.map.JMap;
 import com.xy.device.EnumDeviceActiveStatus;
@@ -88,6 +89,7 @@ public class MercMiniDeviceController {
         redisService.remove("device:auth:code:" + deviceId);
     }
 
+    @LogOperate
     @ApiOperation("解绑商户")
     @PostMapping("unBindMercDevice")
     R<Boolean> unBindMercDevice(@RequestBody @Validated DeviceInfoDto.MercDeviceUnBindDto dto) {
@@ -95,9 +97,12 @@ public class MercMiniDeviceController {
         dto.setMercId(merc.getId());
         dto.setMercCode(merc.getMercCode());
         dto.setMercName(merc.getName());
-        return R.ok(deviceInfoService.unBindDeviceByMerc(dto));
+        List<Long> deviceIds = dto.getDeviceIds();
+        String log = String.format("解绑商户:被解绑商户:%s,解绑设备:%s", merc.getId() + "," + merc.getName(), CollUtil.isEmpty(deviceIds) ? "" : CollUtil.join(deviceIds, ","));
+        return R.ok(deviceInfoService.unBindDeviceByMerc(dto)).setLogMsg(log);
     }
 
+    @LogOperate
     @ApiOperation("商户设备授权")
     @PostMapping("deviceAuth")
     public R mercDeviceAuth(@RequestBody @Validated DeviceInfoDto.MercDeviceAuthDto auth) {
@@ -110,9 +115,11 @@ public class MercMiniDeviceController {
         auth.setMercName(merc.getName());
         auth.setAlgorithmId(merc.getAlgorithmId());
         auth.setMercOperate(true);
-        //设备服务授权处理
+        // 设备服务授权处理
         R<Boolean> r = R.feignCheck(deviceInfoService.mercDeviceAuth(auth));
-        return R.ok(r.getData());
+        List<Long> deviceIds = auth.getDeviceIds();
+        String log = String.format("商户设备授权:授权商户:%s,授权设备:%s", merc.getId() + "," + merc.getName(), deviceIds.size() == 0 ? "取消所有设备授权" : CollUtil.join(deviceIds, ","));
+        return R.ok(r.getData()).setLogMsg(log);
     }
 
     @ApiOperation("设备分页-管理员")
@@ -131,7 +138,7 @@ public class MercMiniDeviceController {
         dto.setMercId(MercAuthUtils.getMercId());
         Boolean choosed = dto.getChoosed();
         if (BooleanUtil.isTrue(choosed)) {
-            //查询已选择,为前端传入 deviceIds
+            // 查询已选择,为前端传入 deviceIds
             dto.setDeviceIds(deviceIds);
         }
         dto.setMyDeviceIds(getMyDevices());
@@ -197,7 +204,7 @@ public class MercMiniDeviceController {
         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))));
             MercPlaceDto.Vo mercPlace = CollUtil.isNotEmpty(merPlaceList) ? merPlaceList.get(0) : null;
@@ -206,7 +213,7 @@ public class MercMiniDeviceController {
                 vo.setPlaceName(mercPlace.getPlaceName());
             }
 
-            //返显区域名称
+            // 返显区域名称
 
             DeviceStatusDto.Vo deviceStatus = vo.getDeviceStatus();
             vo.setNetStateName(deviceStatus == null ? StrUtil.EMPTY : DeviceNetSateType.getEnumByCode(deviceStatus.getNetState()).getDescription());
@@ -230,7 +237,7 @@ public class MercMiniDeviceController {
                 Integer deviceStateR = deviceStatus.getLockStateR();
                 Boolean isUseBattery = deviceStatus.getIsUseBattery();
                 if (BooleanUtil.isTrue(isUseBattery)) {
-                    //使用电池。即断电状态
+                    // 使用电池。即断电状态
                     vo.setSysPower(2);
                 } else {
                     vo.setSysPower(1);
@@ -244,22 +251,22 @@ public class MercMiniDeviceController {
 
                 if (AlgorithmTypeEnum.ALIPAY.getId() == algorithmId) {
                     String deviceId = String.valueOf(vo.getDeviceId());
-                    //主动查询一次温度、音量 温度:TEMP 音量:VOL
+                    // 主动查询一次温度、音量 温度:TEMP 音量:VOL
                     alipayDeviceService.queryAttributes(new DeviceQueryAttr().setTerminalId(deviceId).setType("VOL"));
                     alipayDeviceService.queryAttributes(new DeviceQueryAttr().setTerminalId(deviceId).setType("TEMP"));
-                    //支付宝状态实时返回
+                    // 支付宝状态实时返回
                     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);
                 }
             }
-            //工作温度设置
+            // 工作温度设置
             DeviceTempSetDto.Vo lastTempset = R.feignCheckData(deviceTempSetService.getLastOne(new DeviceTempSetDto.GetLastOneDto().setDeviceId(vo.getDeviceId())));
             vo.setJobTempSetValue(lastTempset == null ? null : lastTempset.getTempValue());
         }
@@ -278,20 +285,20 @@ public class MercMiniDeviceController {
 
     private R checkDeviceByMerc(DeviceInfo deviceInfo) {
         Long mercId = MercAuthUtils.getMercId();
-        //商户是否已通过审核
+        // 商户是否已通过审核
         MercDto.Vo mercInfo = mercFeignService.obj(new MercDto.ListDTO().setId(mercId)).getData();
         if (!mercInfo.getStatus().equals(String.valueOf(MercStatus.APPROVED.getCode()))) {
             return R.fail("商户未通过审核");
         }
-        //设备是否存在
+        // 设备是否存在
         if (!Emptys.check(deviceInfo)) {
             return R.fail("机器不存在");
         }
-        //机器是否已授权给该商户
+        // 机器是否已授权给该商户
         if (!deviceInfo.getMercId().equals(mercId)) {
             return R.fail("机器未授权给商户");
         }
-        //机器是否冻结
+        // 机器是否冻结
         Integer freezeStatus = SysDictUtils.getValue(EnumDeviceFreezeStatus.Code.CODE.getCode(), EnumDeviceFreezeStatus.N_2.getCode(), Integer.class);
         if (deviceInfo.getFreezeStatus().equals(freezeStatus)) {
             return R.fail("机器已冻结");
@@ -307,7 +314,7 @@ public class MercMiniDeviceController {
         if (checkR.getCode() == R.Enum.SUCCESS.getCode()) {
             Integer activeState = SysDictUtils.getValue(EnumDeviceActiveStatus.Code.CODE.getCode(), EnumDeviceActiveStatus.N_1.getCode(), Integer.class);
             String refMercCode = deviceInfo.getMercCode();
-            //非质检商户需要进行判断,质检商户跳过
+            // 非质检商户需要进行判断,质检商户跳过
             if (!"10001".equals(refMercCode) && !deviceInfo.getActiveState().equals(activeState)) {
                 return R.fail("机器未激活");
             }
@@ -392,7 +399,7 @@ public class MercMiniDeviceController {
             }
             return deviceInfos.stream().map(DeviceInfo::getDeviceId).collect(Collectors.toList());
         } else {
-            //成员设备
+            // 成员设备
             List<Long> deviceIds = R.feignCheckData(mercFeignService.mercUserDevice());
             return deviceIds;
         }
@@ -408,7 +415,7 @@ public class MercMiniDeviceController {
             return R.fail("设备不存在!");
         }
         Long deviceId = deviceSysinfo.getDeviceId();
-        //用户输入的
+        // 用户输入的
         String authCode = dto.getAuthCode();
         List<Long> myDevices = getMyDevices();
         if (!myDevices.contains(deviceId)) {
@@ -425,14 +432,14 @@ public class MercMiniDeviceController {
             if (StrUtil.isNotEmpty(cacheAuthCode)) {
                 return R.fail("此设备尚有未使用的授权码:【" + cacheAuthCode + "】,请使用后再来生成!");
             } else {
-                //已失效了
+                // 已失效了
                 deviceBluetoothAuthService.saveOrUpdate(deviceBluetoothAuth.setUseStatus(DeviceAuthCodeUseStatus.TIME_OUT.getCode()));
             }
 
         }
 
 
-        //缓存
+        // 缓存
         setCacheAuthCode(deviceId, authCode);
         DeviceBluetoothAuth saveInfo = new DeviceBluetoothAuth()
                 .setDeviceId(deviceId)
@@ -455,7 +462,7 @@ public class MercMiniDeviceController {
         if (!authCode.equals(cacheAuthCode)) {
             return R.fail("您输入的授权码有误或者无效!");
         }
-        //验证通过,缓存去掉授权码,并更新状态
+        // 验证通过,缓存去掉授权码,并更新状态
 //        Long mercId = MercAuthUtils.getMercId();
         DeviceBluetoothAuth deviceBluetoothAuth = deviceBluetoothAuthService.getOne(Wrappers.<DeviceBluetoothAuth>lambdaQuery()
                         .eq(DeviceBluetoothAuth::getDeviceId, deviceId)
@@ -466,7 +473,7 @@ public class MercMiniDeviceController {
         if (deviceBluetoothAuth == null) {
             return R.fail("您输入的授权码无效!");
         }
-        //缓存去掉授权码
+        // 缓存去掉授权码
         delCacheAuthCode(deviceId);
         deviceBluetoothAuth.setUseStatus(DeviceAuthCodeUseStatus.USED.getCode());
         deviceBluetoothAuth.setUseUser(AuthorizeUtils.getLoginId(Long.class));

+ 6 - 0
device-api-service/src/main/java/com/xy/service/DeviceInfoServiceImpl.java

@@ -31,6 +31,7 @@ import com.xy.dto.be.MercDto;
 import com.xy.dto.common.MercPlaceDto;
 import com.xy.dto.device.DeviceQueryDTO;
 import com.xy.dto.device.DeviceRegDTO;
+import com.xy.dto.mini.MiniDeviceInfoDto;
 import com.xy.entity.*;
 import com.xy.enums.FileExportType;
 import com.xy.error.CommRuntimeException;
@@ -849,6 +850,8 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         }
         // 更新商户设备授权
         List<DeviceInfo> deviceInfos = this.listByIds(deviceIds);
+        // 绑定前,先进行旧的用户设备关联表清理
+        R.feignCheckData(mercService.unBindSubMercDevice(new MiniDeviceInfoDto.MercDeviceUnBindDto().setDeviceIds(deviceIds)));
         List<DeviceStatus> deviceStatuses = new ArrayList<>();
         for (DeviceInfo deviceInfo : deviceInfos) {
             Integer deviceType = deviceInfo.getDeviceType();
@@ -961,6 +964,9 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
                 deviceInfo.setMercName(dto.getMercName());
                 deviceInfo.setMercCode(dto.getMercCode());
             });
+            // 用户设备关联表清理
+            List<Long> deviceIds = deviceInfos.stream().map(DeviceInfo::getDeviceId).collect(Collectors.toList());
+            R.feignCheckData(mercService.unBindSubMercDevice(new MiniDeviceInfoDto.MercDeviceUnBindDto().setDeviceIds(deviceIds)));
             // 批量更新
             return updateBatchById(deviceInfos);
         }