项目设计关键点和接口总结.md 5.2 KB

项目设计关键点和接口总结

1. 项目概述

本项目是一个慢性病管理应用程序的后端系统,主要提供健康数据管理、用户认证、用户绑定关系管理等功能。系统采用 Spring Boot 框架构建,使用 MyBatis-Plus 进行数据持久化操作。

2. 核心设计关键点

2.1 统一响应格式

系统采用 R.java 类作为统一的 API 响应格式,确保所有接口返回一致的结构:

  • code: 响应状态码
  • message: 响应消息
  • data: 响应数据
  • timestamp: 时间戳
  • requestId: 请求ID
  • traceId: 链路追踪ID

2.2 身份认证与授权

  • 使用 Token 机制进行身份认证
  • Token 有效期为 72 小时,小于 24 小时自动刷新
  • 通过 AuthInterceptor 拦截器实现身份验证
  • 支持多种 Token 传递方式:Authorization header、X-Token header、token header 或请求体参数

2.3 数据模型设计

  • 使用 BaseEntity 作为所有实体类的基类,包含通用字段(ID、版本号、创建时间、更新时间等)
  • 采用 MyBatis-Plus 实现数据库操作
  • 使用自定义 TypeHandler 处理枚举类型与数据库字段的映射

2.4 异常处理机制

  • 通过 CustomExceptionHandler 统一处理各种异常
  • 定义了详细的错误码体系,便于前端进行精确的错误处理

2.5 用户绑定关系

  • 实现了患者与医生、患者与家属之间的绑定关系管理
  • 不同类型的绑定关系具有不同的数据访问权限(如家属只能查看一年内的数据)

2.6 链路追踪

  • 通过 TraceInterceptor 实现请求跟踪
  • 使用 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,也可通过项目根目录下的批处理脚本运行应用。