# 项目设计关键点和接口总结 ## 1. 项目概述 本项目是一个慢性病管理应用程序的后端系统,主要提供健康数据管理、用户认证、用户绑定关系管理等功能。系统采用 Spring Boot 框架构建,使用 MyBatis-Plus 进行数据持久化操作。 ## 2. 核心设计关键点 ### 2.1 统一响应格式 系统采用 [R.java](file:///D:/慢病APP/other/EmulatedProject/src/main/java/work/baiyun/chronicdiseaseapp/common/R.java) 类作为统一的 API 响应格式,确保所有接口返回一致的结构: - code: 响应状态码 - message: 响应消息 - data: 响应数据 - timestamp: 时间戳 - requestId: 请求ID - traceId: 链路追踪ID ### 2.2 身份认证与授权 - 使用 Token 机制进行身份认证 - Token 有效期为 72 小时,小于 24 小时自动刷新 - 通过 [AuthInterceptor](file:///D:/慢病APP/other/EmulatedProject/src/main/java/work/baiyun/chronicdiseaseapp/config/AuthInterceptor.java) 拦截器实现身份验证 - 支持多种 Token 传递方式:Authorization header、X-Token header、token header 或请求体参数 ### 2.3 数据模型设计 - 使用 BaseEntity 作为所有实体类的基类,包含通用字段(ID、版本号、创建时间、更新时间等) - 采用 MyBatis-Plus 实现数据库操作 - 使用自定义 TypeHandler 处理枚举类型与数据库字段的映射 ### 2.4 异常处理机制 - 通过 [CustomExceptionHandler](file:///D:/慢病APP/other/EmulatedProject/src/main/java/work/baiyun/chronicdiseaseapp/exception/CustomExceptionHandler.java) 统一处理各种异常 - 定义了详细的错误码体系,便于前端进行精确的错误处理 ### 2.5 用户绑定关系 - 实现了患者与医生、患者与家属之间的绑定关系管理 - 不同类型的绑定关系具有不同的数据访问权限(如家属只能查看一年内的数据) ### 2.6 链路追踪 - 通过 [TraceInterceptor](file:///D:/慢病APP/other/EmulatedProject/src/main/java/work/baiyun/chronicdiseaseapp/config/TraceInterceptor.java) 实现请求跟踪 - 使用 MDC(Mapped Diagnostic Context)记录 requestId 和 traceId,便于日志追踪 ## 3. 核心业务模块 ### 3.1 健康数据管理模块 包括血糖、血压、心率和体格数据的管理,各模块具有相似的结构: - 添加数据接口 - 分页查询当前用户数据接口 - 分页查询指定患者数据接口(需绑定关系) - 删除数据接口 ### 3.2 用户管理模块 - 微信登录认证(通过 code 获取 openid) - 用户信息管理(头像、昵称、手机号等) - 用户头像上传和获取 ### 3.3 用户绑定模块 - 创建用户绑定关系 - 删除用户绑定关系 - 查询绑定关系列表 - 检查绑定关系是否存在 ### 3.4 地理位置模块 - 根据经纬度获取最近位置信息 ## 4. 主要接口列表 ### 4.1 血糖数据接口 (`/blood-glucose`) - `POST /blood-glucose/add` - 添加血糖数据 - `POST /blood-glucose/list` - 分页查询血糖数据 - `POST /blood-glucose/list-by-bound-user` - 医生/家属分页查询患者血糖数据 - `POST /blood-glucose/delete` - 删除血糖数据 ### 4.2 血压数据接口 (`/blood-pressure`) - `POST /blood-pressure/add` - 添加血压数据 - `POST /blood-pressure/list` - 分页查询血压数据 - `POST /blood-pressure/list-by-bound-user` - 医生/家属分页查询患者血压数据 - `POST /blood-pressure/delete` - 删除血压数据 ### 4.3 心率数据接口 (`/heart-rate`) - `POST /heart-rate/add` - 添加心率数据 - `POST /heart-rate/list` - 分页查询心率数据 - `POST /heart-rate/list-by-bound-user` - 医生/家属分页查询患者心率数据 - `POST /heart-rate/delete` - 删除心率数据 ### 4.4 体格数据接口 (`/physical`) - `POST /physical/add` - 添加体格数据 - `POST /physical/list` - 分页查询体格数据 - `POST /physical/list-by-bound-user` - 医生/家属分页查询患者体格数据 - `POST /physical/delete` - 删除体格数据 ### 4.5 用户绑定接口 (`/user-binding`) - `POST /user-binding/create` - 创建用户绑定关系 - `POST /user-binding/delete` - 删除用户绑定关系 - `POST /user-binding/list-by-patient` - 分页查询患者的绑定关系列表 - `POST /user-binding/list-by-bound-user` - 分页查询用户被绑定的关系列表 - `POST /user-binding/check` - 检查用户绑定关系 ### 4.6 微信接口 - `POST /get_openid` - 获取 openid - `POST /user_info` - 获取用户信息 - `POST /update_user_info` - 更新用户信息 ### 4.7 用户头像接口 - `POST /user/avatar/upload` - 上传/更新用户头像 - `GET /user/avatar/{userId}` - 获取用户头像 ### 4.8 地理位置接口 (`/geo`) - `GET /geo/nearest` - 获取最近位置 ## 5. 技术特点 ### 5.1 安全性 - 多种 Token 传递方式支持 - 绑定关系权限控制 - 文件上传安全检查(类型、大小、路径穿越防护) ### 5.2 可维护性 - 统一的异常处理机制 - 完整的 API 文档(集成 Swagger/Knife4j) - 详细的日志记录和链路追踪 ### 5.3 扩展性 - 模块化设计,各业务模块相对独立 - 使用 Spring Boot 自动配置特性 - 枚举类型定义便于扩展新的业务类型 ## 6. 部署和运行 项目支持通过 Maven 命令运行:`mvn spring-boot:run`,也可通过项目根目录下的批处理脚本运行应用。