فهرست منبع

feat(controller): 添加血糖、血压、心率和体征数据控制器

- 新增 BloodGlucoseDataController 控制器,支持添加和分页查询血糖数据
- 新增 BloodPressureDataController 控制器,支持添加和分页查询血压数据
- 新增 HeartRateDataController 控制器,支持添加和分页查询心率数据
- 新增 PhysicalDataController 控制器,支持添加和分页查询体征数据以及 BMI 计算功能
- 所有控制器均实现统一返回格式 R,并进行异常捕获处理
- 使用 Spring MVC 注解完成
mcbaiyun 2 ماه پیش
والد
کامیت
1d67c57857

+ 42 - 0
src/main/java/work/baiyun/chronicdiseaseapp/controller/BloodGlucoseDataController.java

@@ -0,0 +1,42 @@
+package work.baiyun.chronicdiseaseapp.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import work.baiyun.chronicdiseaseapp.common.R;
+import work.baiyun.chronicdiseaseapp.model.vo.AddBloodGlucoseDataRequest;
+import work.baiyun.chronicdiseaseapp.model.vo.BloodGlucoseDataResponse;
+import work.baiyun.chronicdiseaseapp.model.vo.BaseQueryRequest;
+import work.baiyun.chronicdiseaseapp.service.BloodGlucoseDataService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+@RestController
+@RequestMapping("/blood-glucose")
+public class BloodGlucoseDataController {
+
+    @Autowired
+    private BloodGlucoseDataService service;
+
+    @PostMapping(path = "/add", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> add(@RequestBody AddBloodGlucoseDataRequest req) {
+        try {
+            service.addBloodGlucoseData(req);
+            return R.success(200, "ok");
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+
+    @PostMapping(path = "/list", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> list(@RequestBody BaseQueryRequest req) {
+        try {
+            Page<BloodGlucoseDataResponse> page = service.listBloodGlucoseData(req);
+            return R.success(200, "ok", page);
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+}

+ 42 - 0
src/main/java/work/baiyun/chronicdiseaseapp/controller/BloodPressureDataController.java

@@ -0,0 +1,42 @@
+package work.baiyun.chronicdiseaseapp.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import work.baiyun.chronicdiseaseapp.common.R;
+import work.baiyun.chronicdiseaseapp.model.vo.AddBloodPressureDataRequest;
+import work.baiyun.chronicdiseaseapp.model.vo.BloodPressureDataResponse;
+import work.baiyun.chronicdiseaseapp.model.vo.BaseQueryRequest;
+import work.baiyun.chronicdiseaseapp.service.BloodPressureDataService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+@RestController
+@RequestMapping("/blood-pressure")
+public class BloodPressureDataController {
+
+    @Autowired
+    private BloodPressureDataService service;
+
+    @PostMapping(path = "/add", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> add(@RequestBody AddBloodPressureDataRequest req) {
+        try {
+            service.addBloodPressureData(req);
+            return R.success(200, "ok");
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+
+    @PostMapping(path = "/list", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> list(@RequestBody BaseQueryRequest req) {
+        try {
+            Page<BloodPressureDataResponse> page = service.listBloodPressureData(req);
+            return R.success(200, "ok", page);
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+}

+ 42 - 0
src/main/java/work/baiyun/chronicdiseaseapp/controller/HeartRateDataController.java

@@ -0,0 +1,42 @@
+package work.baiyun.chronicdiseaseapp.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import work.baiyun.chronicdiseaseapp.common.R;
+import work.baiyun.chronicdiseaseapp.model.vo.AddHeartRateDataRequest;
+import work.baiyun.chronicdiseaseapp.model.vo.HeartRateDataResponse;
+import work.baiyun.chronicdiseaseapp.model.vo.BaseQueryRequest;
+import work.baiyun.chronicdiseaseapp.service.HeartRateDataService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+@RestController
+@RequestMapping("/heart-rate")
+public class HeartRateDataController {
+
+    @Autowired
+    private HeartRateDataService service;
+
+    @PostMapping(path = "/add", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> add(@RequestBody AddHeartRateDataRequest req) {
+        try {
+            service.addHeartRateData(req);
+            return R.success(200, "ok");
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+
+    @PostMapping(path = "/list", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> list(@RequestBody BaseQueryRequest req) {
+        try {
+            Page<HeartRateDataResponse> page = service.listHeartRateData(req);
+            return R.success(200, "ok", page);
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+}

+ 64 - 0
src/main/java/work/baiyun/chronicdiseaseapp/controller/PhysicalDataController.java

@@ -0,0 +1,64 @@
+package work.baiyun.chronicdiseaseapp.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import work.baiyun.chronicdiseaseapp.common.R;
+import work.baiyun.chronicdiseaseapp.model.vo.AddPhysicalDataRequest;
+import work.baiyun.chronicdiseaseapp.model.vo.PhysicalDataResponse;
+import work.baiyun.chronicdiseaseapp.model.vo.BaseQueryRequest;
+import work.baiyun.chronicdiseaseapp.service.PhysicalDataService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/physical")
+public class PhysicalDataController {
+
+    @Autowired
+    private PhysicalDataService physicalDataService;
+
+    @PostMapping(path = "/add", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> addPhysicalData(@RequestBody AddPhysicalDataRequest req) {
+        try {
+            physicalDataService.addPhysicalData(req);
+            return R.success(200, "ok");
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+
+    @PostMapping(path = "/list", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> listPhysicalData(@RequestBody BaseQueryRequest req) {
+        try {
+            Page<PhysicalDataResponse> page = physicalDataService.listPhysicalData(req);
+            return R.success(200, "ok", page);
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+
+    @PostMapping(path = "/bmi", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
+    public R<?> calculateBmi(@RequestBody Map<String, Object> body) {
+        try {
+            if (body == null) return R.fail(400, "Missing body");
+            Object h = body.get("height");
+            Object w = body.get("weight");
+            if (h == null || w == null) return R.fail(400, "Missing height or weight");
+            BigDecimal height = new BigDecimal(h.toString());
+            BigDecimal weight = new BigDecimal(w.toString());
+            BigDecimal bmi = physicalDataService.calculateBMI(height, weight);
+            Map<String, Object> out = new HashMap<>();
+            out.put("bmi", bmi);
+            return R.success(200, "ok", out);
+        } catch (Exception e) {
+            return R.fail(500, e.getMessage());
+        }
+    }
+}