tanbin 1 жил өмнө
parent
commit
06935e5887

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

@@ -82,6 +82,15 @@ public class MercMiniDeviceController {
 
     private final DeviceTempSetServiceImpl deviceTempSetService;
 
+    @ApiOperation("解绑商户")
+    @PostMapping("unBindMercDevice")
+    R<Boolean> unBindMercDevice(@RequestBody @Validated DeviceInfoDto.MercDeviceUnBindDto dto) {
+        MercAuthUtils.MercAuth.Merc merc = MercAuthUtils.getMercAuth().getMerc();
+        dto.setMercId(merc.getId());
+        dto.setMercCode(merc.getMercCode());
+        dto.setMercName(merc.getName());
+        return R.ok(deviceInfoService.unBindDeviceByMerc(dto));
+    }
 
     @ApiOperation("设备分页-管理员")
     @PostMapping("pageByAdminName")

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

@@ -800,6 +800,41 @@ public class DeviceInfoServiceImpl extends ServiceImpl<DeviceInfoMapper, DeviceI
         return R.ok(removeMerRefDevicesToTopMerc(deviceInfos));
     }
 
+    /**
+     * 商户解绑设备 --商家端
+     *
+     * @param dto
+     * @return {@link Boolean}
+     */
+    public Boolean unBindDeviceByMerc(DeviceInfoDto.MercDeviceUnBindDto dto) {
+        List<DeviceInfo> deviceInfos = this.listByIds(dto.getDeviceIds());
+        if (CollUtil.isNotEmpty(deviceInfos)) {
+            List<Long> mercIds = deviceInfos.stream().map(DeviceInfo::getMercId).collect(Collectors.toList());
+            mercIds.forEach(mercId -> {
+                if (mercId.longValue() == dto.getMercId().longValue()) {
+                    throw new CommRuntimeException("只能选择子商户设备进行解绑,请检查是否选择了当前商户下的设备!");
+                }
+            });
+        }
+        return removeMerDevicesByDeviceIds(dto, deviceInfos);
+    }
+
+    private Boolean removeMerDevicesByDeviceIds(DeviceInfoDto.MercDeviceUnBindDto dto, List<DeviceInfo> deviceInfos) {
+        if (CollUtil.isNotEmpty(deviceInfos)) {
+            deviceInfos.forEach(deviceInfo -> {
+                //回收 到当前操作商户
+                deviceInfo.setMercId(dto.getMercId());
+                deviceInfo.setMercDeviceCode(StrUtil.EMPTY);
+                deviceInfo.setMercName(dto.getMercName());
+                deviceInfo.setMercCode(dto.getMercCode());
+            });
+            //批量更新
+            return updateBatchById(deviceInfos);
+        }
+
+        return Boolean.FALSE;
+
+    }
 
     /**
      * 回收机器

+ 11 - 0
device-api/src/main/java/com/xy/dto/DeviceInfoDto.java

@@ -16,6 +16,7 @@ import lombok.Data;
 import lombok.experimental.Accessors;
 
 import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.math.BigDecimal;
 import java.time.LocalDate;
@@ -876,9 +877,19 @@ public class DeviceInfoDto {
     @Data
     @Accessors(chain = true)
     public static class MercDeviceUnBindDto {
+        @NotEmpty(message = "请选择设备!")
         @ApiModelProperty(value = "设备ID", required = false)
         private List<Long> deviceIds;
 
+        @ApiModelProperty(value = "商户ID")
+        private Long mercId;
+
+        @ApiModelProperty(value = "商户ID")
+        private String mercName;
+
+        @ApiModelProperty(value = "商户编码")
+        private String mercCode;
+
     }