Bläddra i källkod

feat(validation): 添加健康数据校验功能

- 引入 spring-boot-starter-validation 依赖
- 新增血糖数据请求校验类 AddBloodGlucoseDataRequest
- 新增血压数据请求校验类 AddBloodPressureDataRequest
- 新增心率数据请求校验类 AddHeartRateDataRequest
- 新增体格数据请求校验类 AddPhysicalDataRequest
- 为各类数据添加详细的字段校验规则和提示信息
- 设置合理的数值范围限制确保数据有效性
- 添加对应的响应数据传输对象
mcbaiyun 2 månader sedan
förälder
incheckning
6be58a0919

+ 4 - 1
pom.xml

@@ -92,7 +92,10 @@
             <version>4.4.0</version>
         </dependency>
 
-
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-validation</artifactId>
+        </dependency>
 
     </dependencies>
 </project>

+ 27 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/AddBloodGlucoseDataRequest.java

@@ -0,0 +1,27 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import jakarta.validation.constraints.*;
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "添加血糖数据请求")
+@Data
+public class AddBloodGlucoseDataRequest {
+
+    @Schema(description = "血糖测量类型")
+    @NotNull(message = "测量类型不能为空")
+    private String type;
+
+    @Schema(description = "血糖值(mmol/L)")
+    @DecimalMin(value = "1.0", message = "血糖值不能低于1.0 mmol/L")
+    @DecimalMax(value = "30.0", message = "血糖值不能高于30.0 mmol/L")
+    @NotNull(message = "血糖值不能为空")
+    private BigDecimal value;
+
+    @Schema(description = "测量时间")
+    @NotNull(message = "测量时间不能为空")
+    private LocalDateTime measureTime;
+}

+ 28 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/AddBloodPressureDataRequest.java

@@ -0,0 +1,28 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.*;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "添加血压数据请求")
+@Data
+public class AddBloodPressureDataRequest {
+
+    @Schema(description = "收缩压(mmHg)")
+    @Min(value = 60, message = "收缩压不能低于60mmHg")
+    @Max(value = 250, message = "收缩压不能高于250mmHg")
+    @NotNull(message = "收缩压不能为空")
+    private Integer systolicPressure;
+
+    @Schema(description = "舒张压(mmHg)")
+    @Min(value = 40, message = "舒张压不能低于40mmHg")
+    @Max(value = 150, message = "舒张压不能高于150mmHg")
+    @NotNull(message = "舒张压不能为空")
+    private Integer diastolicPressure;
+
+    @Schema(description = "测量时间")
+    @NotNull(message = "测量时间不能为空")
+    private LocalDateTime measureTime;
+}

+ 22 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/AddHeartRateDataRequest.java

@@ -0,0 +1,22 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import jakarta.validation.constraints.*;
+import java.time.LocalDateTime;
+
+@Schema(description = "添加心率数据请求")
+@Data
+public class AddHeartRateDataRequest {
+
+    @Schema(description = "心率(次/分钟)")
+    @Min(value = 30, message = "心率不能低于30")
+    @Max(value = 200, message = "心率不能高于200")
+    @NotNull(message = "心率不能为空")
+    private Integer heartRate;
+
+    @Schema(description = "测量时间")
+    @NotNull(message = "测量时间不能为空")
+    private LocalDateTime measureTime;
+}

+ 30 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/AddPhysicalDataRequest.java

@@ -0,0 +1,30 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import jakarta.validation.constraints.*;
+import lombok.Data;
+
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "添加体格数据请求")
+@Data
+public class AddPhysicalDataRequest {
+
+    @Schema(description = "身高(cm)")
+    @DecimalMin(value = "100", message = "身高不能低于100cm")
+    @DecimalMax(value = "250", message = "身高不能超过250cm")
+    @NotNull(message = "身高不能为空")
+    private BigDecimal height;
+
+    @Schema(description = "体重(kg)")
+    @DecimalMin(value = "20", message = "体重不能低于20kg")
+    @DecimalMax(value = "300", message = "体重不能超过300kg")
+    @NotNull(message = "体重不能为空")
+    private BigDecimal weight;
+
+    @Schema(description = "测量时间")
+    @NotNull(message = "测量时间不能为空")
+    private LocalDateTime measureTime;
+}

+ 26 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/BloodGlucoseDataResponse.java

@@ -0,0 +1,26 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "血糖数据响应")
+@Data
+public class BloodGlucoseDataResponse {
+    @Schema(description = "记录ID")
+    private Long id;
+
+    @Schema(description = "测量时间")
+    private LocalDateTime measureTime;
+
+    @Schema(description = "血糖测量类型")
+    private String type;
+
+    @Schema(description = "血糖值")
+    private BigDecimal value;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+}

+ 25 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/BloodPressureDataResponse.java

@@ -0,0 +1,25 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "血压数据响应")
+@Data
+public class BloodPressureDataResponse {
+    @Schema(description = "记录ID")
+    private Long id;
+
+    @Schema(description = "收缩压(mmHg)")
+    private Integer systolicPressure;
+
+    @Schema(description = "舒张压(mmHg)")
+    private Integer diastolicPressure;
+
+    @Schema(description = "测量时间")
+    private LocalDateTime measureTime;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+}

+ 22 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/HeartRateDataResponse.java

@@ -0,0 +1,22 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Schema(description = "心率数据响应")
+@Data
+public class HeartRateDataResponse {
+    @Schema(description = "记录ID")
+    private Long id;
+
+    @Schema(description = "心率(次/分钟)")
+    private Integer heartRate;
+
+    @Schema(description = "测量时间")
+    private LocalDateTime measureTime;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+}

+ 29 - 0
src/main/java/work/baiyun/chronicdiseaseapp/model/vo/PhysicalDataResponse.java

@@ -0,0 +1,29 @@
+package work.baiyun.chronicdiseaseapp.model.vo;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.time.LocalDateTime;
+
+@Schema(description = "体格数据响应")
+@Data
+public class PhysicalDataResponse {
+    @Schema(description = "记录ID")
+    private Long id;
+
+    @Schema(description = "身高(cm)")
+    private BigDecimal height;
+
+    @Schema(description = "体重(kg)")
+    private BigDecimal weight;
+
+    @Schema(description = "BMI")
+    private BigDecimal bmi;
+
+    @Schema(description = "测量时间")
+    private LocalDateTime measureTime;
+
+    @Schema(description = "创建时间")
+    private LocalDateTime createTime;
+}