Browse Source

refactor(validation): 移除实体类中的校验注解以简化代码

- 从 ConnectorInfo 类中删除所有 Jakarta Bean Validation 注解
- 从 EquipmentInfo 类中移除所有字段的校验注解和 @Valid 标注
- 从 StationInfo 类中去除所有字段的校验注解及 @Valid 标注
- 从 QueryStationsInfoVO 类中删除所有字段的校验注解及 @Valid 标注
- ElectricTokenManager 中优化 Redis Token 获取逻辑,处理类型转换问题,增强稳定性
SheepHy 1 week ago
parent
commit
70fb3e5aab

+ 1 - 18
src/main/java/com/zsElectric/boot/charging/entity/ConnectorInfo.java

@@ -2,7 +2,6 @@ package com.zsElectric.boot.charging.entity;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.constraints.*;
 import lombok.Data;
 
 
@@ -14,54 +13,38 @@ import lombok.Data;
 public class ConnectorInfo {
     
     /** 充电设备接口编码 - 同一运营商内唯一,≤64字符 */
-    @NotBlank(message = "接口编码不能为空")
-    @Size(max = 64, message = "接口编码长度不能超过64字符")
     @JsonProperty("ConnectorID")
     private String ConnectorID;
     
     /** 充电设备接口名称 - ≤64字符 */
-    @NotBlank(message = "接口名称不能为空")
-    @Size(max = 64, message = "接口名称长度不能超过64字符")
     @JsonProperty("ConnectorName")
     private String ConnectorName;
     
     /** 充电设备接口类型 */
-    @NotNull(message = "接口类型不能为空")
     @JsonProperty("ConnectorType")
     private Integer ConnectorType;
     
     /** 额定电压上限 - 单位:V */
-    @NotNull(message = "额定电压上限不能为空")
-    @Positive(message = "电压上限必须大于0")
     @JsonProperty("VoltageUpperLimits")
     private Integer VoltageUpperLimits;
     
     /** 额定电压下限 - 单位:V */
-    @NotNull(message = "额定电压下限不能为空")
-    @Positive(message = "电压下限必须大于0")
     @JsonProperty("VoltageLowerLimits")
     private Integer VoltageLowerLimits;
     
     /** 额定电流 - 单位:A */
-    @NotNull(message = "额定电流不能为空")
-    @Positive(message = "额定电流必须大于0")
     @JsonProperty("Current")
     private Integer Current;
     
     /** 额定功率 - 单位:kW,保留小数点后一位 */
-    @NotNull(message = "额定功率不能为空")
-    @Positive(message = "额定功率必须大于0")
-    @Digits(integer = 4, fraction = 1, message = "功率最多保留1位小数")
     @JsonProperty("Power")
     private Double Power;
     
     /** 车位号 - 停车场车位编号,10字符 */
-    @Size(max = 10, message = "车位号长度不能超过10字符")
     @JsonProperty("ParkNo")
     private String ParkNo;
     
     /** 国家标准 - 1-2011,2-2015 */
-    @NotNull(message = "国家标准不能为空")
     @JsonProperty("NationalStandard")
     private Integer NationalStandard;
-}
+}

+ 1 - 22
src/main/java/com/zsElectric/boot/charging/entity/EquipmentInfo.java

@@ -2,8 +2,6 @@ package com.zsElectric.boot.charging.entity;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.*;
 import lombok.Data;
 
 import java.util.List;
@@ -16,65 +14,46 @@ import java.util.List;
 public class EquipmentInfo {
     
     /** 设备编码 - 对同一运营商保证唯一,≤64字符 */
-    @NotBlank(message = "设备编码不能为空")
-    @Size(max = 64, message = "设备编码长度不能超过64字符")
     @JsonProperty("EquipmentID")
     private String EquipmentID;
     
     /** 设备生产商组织机构代码 - 9字符 */
-    @Pattern(regexp = "\\d{0,9}", message = "设备生产商组织机构代码必须为9位数字")
     @JsonProperty("ManufacturerID")
     private String ManufacturerID;
     
     /** 设备生产商名称 - ≤128字符 */
-    @Size(max = 128, message = "设备生产商名称长度不能超过128字符")
     @JsonProperty("ManufacturerName")
     private String ManufacturerName;
     
     /** 设备型号 - ≤64字符 */
-    @Size(max = 64, message = "设备型号长度不能超过64字符")
     @JsonProperty("EquipmentModel")
     private String EquipmentModel;
     
     /** 设备生产日期 - YYYY-MM-DD格式 */
-    @Pattern(regexp = "\\d{4}-\\d{2}-\\d{2}", message = "生产日期格式应为YYYY-MM-DD")
     @JsonProperty("ProductionDate")
     private String ProductionDate;
     
     /** 设备类型 - 1-直流设备,2-交流设备,3-交直流一体设备,4-无线设备,5-其他 */
-    @NotNull(message = "设备类型不能为空")
     @JsonProperty("EquipmentType")
     private Integer EquipmentType;
     
     /** 充电设备接口列表 */
-    @Valid
-    @NotEmpty(message = "充电设备接口信息不能为空")
     @JsonProperty("ConnectorInfos")
     private List<ConnectorInfo> ConnectorInfos;
     
     /** 充电设备经度 - GCJ-02坐标系 */
-    @DecimalMin(value = "-180.0", message = "经度范围无效")
-    @DecimalMax(value = "180.0", message = "经度范围无效")
-    @Digits(integer = 3, fraction = 6, message = "经度最多保留6位小数")
     @JsonProperty("EquipmentLng")
     private Double EquipmentLng;
     
     /** 充电设备纬度 - GCJ-02坐标系 */
-    @DecimalMin(value = "-90.0", message = "纬度范围无效")
-    @DecimalMax(value = "90.0", message = "纬度范围无效")
-    @Digits(integer = 2, fraction = 6, message = "纬度最多保留6位小数")
     @JsonProperty("EquipmentLat")
     private Double EquipmentLat;
     
     /** 充电设备总功率 - 单位:kW,保留小数点后1位 */
-    @NotNull(message = "设备总功率不能为空")
-    @Positive(message = "设备总功率必须大于0")
-    @Digits(integer = 4, fraction = 1, message = "功率最多保留1位小数")
     @JsonProperty("Power")
     private Double Power;
     
     /** 充电设备名称 - ≤128字符 */
-    @Size(max = 128, message = "设备名称长度不能超过128字符")
     @JsonProperty("EquipmentName")
     private String EquipmentName;
-}
+}

+ 4 - 46
src/main/java/com/zsElectric/boot/charging/entity/StationInfo.java

@@ -2,8 +2,6 @@ package com.zsElectric.boot.charging.entity;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.JsonProperty;
-import jakarta.validation.Valid;
-import jakarta.validation.constraints.*;
 import lombok.Data;
 import java.util.List;
 
@@ -15,142 +13,102 @@ import java.util.List;
 public class StationInfo {
     
     /** 充电站ID - 运营商自定义的唯一编码,≤64字符 */
-    @NotBlank(message = "充电站ID不能为空")
-    @Size(max = 64, message = "充电站ID长度不能超过64字符")
     @JsonProperty("StationID")
     private String StationID;
     
     /** 运营商ID - 9字符 */
-    @NotBlank(message = "运营商ID不能为空")
-    @Pattern(regexp = "\\d{9}", message = "运营商ID必须为9位数字")
     @JsonProperty("OperatorID")
     private String OperatorID;
     
     /** 设备所属方ID - 设备所属运营平台组织机构代码,9字符 */
-    @NotBlank(message = "设备所属方ID不能为空")
-    @Pattern(regexp = "\\d{9}", message = "设备所属方ID必须为9位数字")
     @JsonProperty("EquipmentOwnerID")
     private String EquipmentOwnerID;
     
     /** 充电站名称 - ≤128字符 */
-    @NotBlank(message = "充电站名称不能为空")
-    @Size(max = 128, message = "充电站名称长度不能超过128字符")
     @JsonProperty("StationName")
     private String StationName;
     
     /** 充电站国家代码 - 比如CN,≤32字符 */
-    @NotBlank(message = "国家代码不能为空")
-    @Size(max = 32, message = "国家代码长度不能超过32字符")
     @JsonProperty("CountryCode")
     private String CountryCode;
     
     /** 充电站省市辖区编码 - 参照GB/T2260-2015,20字符 */
-    @NotBlank(message = "区域编码不能为空")
-    @Size(max = 20, message = "区域编码长度不能超过20字符")
     @JsonProperty("AreaCode")
     private String AreaCode;
     
     /** 详细地址 - ≤255字符 */
-    @NotBlank(message = "详细地址不能为空")
-    @Size(max = 255, message = "详细地址长度不能超过255字符")
     @JsonProperty("Address")
     private String Address;
     
     /** 站点电话 - ≤128字符 */
-    @Size(max = 128, message = "站点电话长度不能超过128字符")
     @JsonProperty("StationTel")
     private String StationTel;
     
     /** 服务电话 - 平台服务电话,≤128字符 */
-    @NotBlank(message = "服务电话不能为空")
-    @Size(max = 128, message = "服务电话长度不能超过128字符")
     @JsonProperty("ServiceTel")
     private String ServiceTel;
     
     /** 站点类型 */
-    @NotNull(message = "站点类型不能为空")
     @JsonProperty("StationType")
     private Integer StationType;
     
     /** 站点状态 */
-    @NotNull(message = "站点状态不能为空")
     @JsonProperty("StationStatus")
     private Integer StationStatus;
     
     /** 车位数量 - 可停放进行充电的车位总数 */
-    @Min(value = 0, message = "车位数量不能小于0")
     @JsonProperty("ParkNums")
-    private Integer ParkNums = 0;
+    private Integer ParkNums;
     
     /** 经度 - GCJ-02坐标系,保留小数点后6位 */
-    @DecimalMin(value = "-180.0", message = "经度范围无效")
-    @DecimalMax(value = "180.0", message = "经度范围无效")
-    @Digits(integer = 3, fraction = 6, message = "经度最多保留6位小数")
     @JsonProperty("StationLng")
     private Double StationLng;
     
     /** 纬度 - GCJ-02坐标系,保留小数点后6位 */
-    @DecimalMin(value = "-90.0", message = "纬度范围无效")
-    @DecimalMax(value = "90.0", message = "纬度范围无效")
-    @Digits(integer = 2, fraction = 6, message = "纬度最多保留6位小数")
     @JsonProperty("StationLat")
     private Double StationLat;
     
     /** 站点引导 - ≤1024字符 */
-    @Size(max = 1024, message = "站点引导长度不能超过1024字符")
     @JsonProperty("SiteGuide")
     private String SiteGuide;
     
     /** 建设场所 */
-    @NotNull(message = "建设场所不能为空")
     @JsonProperty("Construction")
     private Integer Construction;
     
     /** 站点照片URL列表 */
     @JsonProperty("Pictures")
-    private List<@Size(max = 512) String> Pictures;
+    private List<String> Pictures;
     
     /** 营业时间描述 - ≤128字符 */
-    @NotBlank(message = "营业时间不能为空")
-    @Size(max = 128, message = "营业时间描述长度不能超过128字符")
     @JsonProperty("BusineHours")
     private String BusineHours;
     
     /** 充电电费率描述 - ≤255字符 */
-    @NotBlank(message = "充电电费率不能为空")
-    @Size(max = 255, message = "充电电费率描述长度不能超过255字符")
     @JsonProperty("ElectricityFee")
     private String ElectricityFee;
     
     /** 服务费率描述 - ≤255字符 */
-    @NotBlank(message = "服务费率不能为空")
-    @Size(max = 255, message = "服务费率描述长度不能超过255字符")
     @JsonProperty("ServiceFee")
     private String ServiceFee;
     
     /** 停车费率描述 - ≤255字符 */
-    @NotBlank(message = "停车费不能为空")
-    @Size(max = 255, message = "停车费率描述长度不能超过255字符")
     @JsonProperty("ParkFee")
     private String ParkFee;
     
     /** 支付方式描述 - ≤64字符 */
-    @Size(max = 64, message = "支付方式描述长度不能超过64字符")
     @JsonProperty("Payment")
     private String Payment;
     
     /** 是否支持预约 - 0-不支持,1-支持 */
     @JsonProperty("SupportOrder")
-    private Integer SupportOrder = 0;
+    private Integer SupportOrder;
     
     /** 备注信息 - ≤255字符 */
-    @Size(max = 255, message = "备注信息长度不能超过255字符")
     @JsonProperty("Remark")
     private String Remark;
     
     /** 充电设备信息列表 */
-    @Valid
-    @NotEmpty(message = "充电设备信息不能为空")
     @JsonProperty("EquipmentInfos")
     private List<EquipmentInfo> EquipmentInfos;
-}
+}

+ 0 - 7
src/main/java/com/zsElectric/boot/charging/vo/QueryStationsInfoVO.java

@@ -15,25 +15,18 @@ import java.util.List;
 public class QueryStationsInfoVO {
 
     /** 当前页数 - 如果查询页码大于页码总数,返回查询页码数 */
-    @NotNull(message = "当前页数不能为空")
-    @Min(value = 1, message = "当前页数不能小于1")
     @JsonProperty("PageNo")
     private Integer PageNo;
 
     /** 页码总数 - 总页数 */
-    @NotNull(message = "总页数不能为空")
-    @Min(value = 0, message = "总页数不能小于0")
     @JsonProperty("PageCount")
     private Integer PageCount;
 
     /** 总记录条数 - 符合条件的电站总数 */
-    @NotNull(message = "总记录条数不能为空")
-    @Min(value = 0, message = "总记录条数不能小于0")
     @JsonProperty("ItemSize")
     private Integer ItemSize;
 
     /** 充电站信息列表 - 包含充电站的基本信息、服务信息、支付信息、设备信息等 */
-    @Valid
     @JsonProperty("StationInfos")
     private List<StationInfo> StationInfos;
 }

+ 14 - 2
src/main/java/com/zsElectric/boot/common/util/electric/ElectricTokenManager.java

@@ -58,7 +58,7 @@ public class ElectricTokenManager {
     }
 
     /**
-     * 从Redis获取存储的Token
+     * 从 Redis获取存储的Token
      */
     private ApiToken getStoredToken() {
         try {
@@ -67,7 +67,19 @@ public class ElectricTokenManager {
                 log.debug("Redis中未找到Token,tokenKey: {}", TOKEN_KEY);
                 return null;
             }
-            return (ApiToken) tokenObj;
+                
+            // 如果是LinkedHashMap,需要转换为ApiToken
+            if (tokenObj instanceof java.util.LinkedHashMap) {
+                return BeanUtil.toBean(tokenObj, ApiToken.class);
+            }
+                
+            // 如果已经是ApiToken类型,直接返回
+            if (tokenObj instanceof ApiToken) {
+                return (ApiToken) tokenObj;
+            }
+                
+            log.warn("Redis中的Token类型不正确: {}", tokenObj.getClass().getName());
+            return null;
         } catch (Exception e) {
             log.error("从Redis获取Token失败,tokenKey: {}", TOKEN_KEY, e);
             // 清除可能的错误数据