Prechádzať zdrojové kódy

feat(device): 添加北向夹角参数校验功能- 在设备更新接口中增加对北向夹角参数的非空校验- 实现北向夹角值的有效性检查,仅允许 0、90、180、270 度
- 引入新的错误码 DEVICE_NORTH_ERROR用于标识角度范围错误
- 更新异常处理逻辑,使用专用错误码替换通用参数错误码
- 修改设备网关实现类,统一北向夹角校验逻辑
- 在公共请求参数类中为北向夹角字段添加注解约束

hxd 1 týždeň pred
rodič
commit
20274c6091

+ 1 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/device/UpdateDeviceParams.java

@@ -34,6 +34,7 @@ public class UpdateDeviceParams extends BaseVO {
 
 
     @Schema(description = "北向夹角 允许传值: 0,90,180,270")
+    @NotNull(message = "北向夹角不能为空")
     private BigDecimal northAngle;
 
     @Schema(description = "安装方式:Wall-墙装,Ceiling-顶装")

+ 1 - 0
portal-service-common/src/main/java/com/hfln/portal/common/request/device/WebUpdateDeviceParams.java

@@ -41,6 +41,7 @@ public class WebUpdateDeviceParams extends BaseVO {
     private String wifiPassword;
 
     @Schema(description = "北向夹角 允许传值: 0,90,180,270")
+    @NotNull(message = "北向夹角不能为空")
     private BigDecimal northAngle;
 
     @Schema(description = "安装方式:Wall-墙装,Ceiling-顶装")

+ 1 - 0
portal-service-domain/src/main/java/com/hfln/portal/domain/exception/ErrorEnum.java

@@ -64,6 +64,7 @@ public enum ErrorEnum implements ErrorEnumInterface {
     STATUS_LIGHT_IS_NOT_EXIST("50006", "指示灯状态不合法!"),
     USER_NO_PERMISSION("50007", "当前用户没有权限!"),
     DEVICE_UPDATE_FAIL("50008", "设备更新失败!"),
+    DEVICE_NORTH_ERROR("50009", "指示灯角度范围错误!"),
 
     /**
      * 设备房间相关

+ 17 - 1
portal-service-infrastructure/src/main/java/com/hfln/portal/infrastructure/gateway/impl/DeviceGatewayImpl.java

@@ -386,6 +386,20 @@ public class DeviceGatewayImpl implements DeviceGateway {
 
         logService.saveLog(devInfo.getDevId(), OprLogType.UPDATE_DEVICE.getCode(), devInfo);
 
+
+        // 校验 北向夹角
+        List<BigDecimal> validAngles = Arrays.asList(
+                BigDecimal.ZERO,
+                BigDecimal.valueOf(90),
+                BigDecimal.valueOf(180),
+                BigDecimal.valueOf(270)
+        );
+        boolean valid = validAngles.stream()
+                .anyMatch(angle -> angle.compareTo(params.getNorthAngle()) == 0);
+        if (!valid) {
+            throw new BizException(ErrorEnum.DEVICE_NORTH_ERROR.getErrorCode(), ErrorEnum.DEVICE_NORTH_ERROR.getErrorMessage());
+        }
+
         //2.更新数据
         devInfo.setTenantId(params.getTenantId());
         devInfo.setDevName(params.getDevName());
@@ -440,6 +454,8 @@ public class DeviceGatewayImpl implements DeviceGateway {
             throw new BizException(ErrorEnum.DEVICE_PARAM_ERROR.getErrorCode(), ErrorEnum.DEVICE_PARAM_ERROR.getErrorMessage());
         }
 
+
+        // 校验 北向夹角
         List<BigDecimal> validAngles = Arrays.asList(
                 BigDecimal.ZERO,
                 BigDecimal.valueOf(90),
@@ -449,7 +465,7 @@ public class DeviceGatewayImpl implements DeviceGateway {
         boolean valid = validAngles.stream()
                 .anyMatch(angle -> angle.compareTo(params.getNorthAngle()) == 0);
         if (!valid) {
-            throw new BizException(ErrorEnum.DEVICE_PARAM_ERROR.getErrorCode(), ErrorEnum.DEVICE_PARAM_ERROR.getErrorMessage());
+            throw new BizException(ErrorEnum.DEVICE_NORTH_ERROR.getErrorCode(), ErrorEnum.DEVICE_NORTH_ERROR.getErrorMessage());
         }
 
         //2.校验设备是否存在