健康管理系统后端技术栈选择与架构设计
1. 项目技术栈
1.1 核心技术栈
|
技术 |
版本 |
用途 |
|---|---|---|
|
Spring Boot |
3.2.0 |
核心框架,提供自动配置和依赖管理 |
|
Spring Data JPA |
3.2.0 |
ORM框架,简化数据库操作 |
|
MySQL |
8.0.33 |
关系型数据库,存储健康记录数据 |
|
Spring Security |
3.2.0 |
安全框架,实现认证和授权 |
|
JWT |
0.11.5 |
无状态认证,支持前后端分离架构 |
|
Spring Validation |
3.2.0 |
请求参数验证,确保数据合法性 |
|
Spring Cache |
3.2.0 |
缓存框架,提升系统性能 |
|
Ehcache |
- |
缓存实现,存储热点数据 |
|
SpringDoc OpenAPI |
2.0.2 |
API文档生成,便于前端对接 |
|
Java |
21 |
开发语言 |
|
Maven |
3.15.0 |
项目构建和依赖管理 |
2. 项目架构设计
2.1 整体架构
健康管理系统后端采用经典的三层架构,同时融入了现代Spring Boot的最佳实践:
2.2 项目结构
backend/ # 项目根目录
├── src/
│ └── main/
│ ├── java/com/aihealth/
│ │ ├── config/ # 配置类
│ │ │ ├── AppConfig.java
│ │ │ ├── GlobalExceptionHandler.java
│ │ │ ├── JwtFilter.java
│ │ │ ├── JwtUtil.java
│ │ │ ├── SecurityConfig.java
│ │ │ ├── SwaggerConfig.java
│ │ │ └── UtilConfig.java
│ │ │
│ │ ├── controller/ # 控制器层
│ │ │ ├── AiAssistantController.java # AI小助手接口
│ │ │ ├── AiHealthAnalysisController.java # AI健康分析接口
│ │ │ ├── CaptchaController.java # 验证码接口
│ │ │ ├── FoodRecordController.java # 饮食记录接口
│ │ │ ├── FoodRecordSummaryController.java# 饮食统计接口
│ │ │ ├── MoodRecordController.java # 情绪记录接口
│ │ │ ├── MoodRecordSummaryController.java# 情绪统计接口
│ │ │ ├── SleepRecordController.java # 睡眠记录接口
│ │ │ ├── SleepRecordSummaryController.java# 睡眠统计接口
│ │ │ ├── UserController.java # 用户管理接口
│ │ │ ├── WeightRecordController.java # 体重记录接口
│ │ │ ├── WeightRecordSummaryController.java# 体重统计接口
│ │ │ ├── WorkoutController.java # 运动记录接口
│ │ │ └── WorkoutSummaryController.java # 运动统计接口
│ │ │
│ │ ├── dto/ # 数据传输对象
│ │ │ ├── AiAssistantSettingsRequest.java # AI助手设置请求
│ │ │ ├── ChangePasswordRequest.java # 修改密码请求
│ │ │ ├── SecurityQuestionRequest.java # 安全问题请求
│ │ │ ├── UserLoginRequest.java # 用户登录请求
│ │ │ ├── UserRegisterRequest.java # 用户注册请求
│ │ │ └── UserResponse.java # 用户响应
│ │ │
│ │ ├── entity/ # 实体类
│ │ │ ├── AiAssistantAvatar.java # AI助手头像
│ │ │ ├── AiChatHistory.java # AI对话历史
│ │ │ ├── FoodItem.java # 食物项目
│ │ │ ├── FoodPhoto.java # 食物照片
│ │ │ ├── FoodRecord.java # 饮食记录
│ │ │ ├── HealthAnalysisRecord.java # 健康分析记录
│ │ │ ├── MoodPhoto.java # 情绪照片
│ │ │ ├── MoodRecord.java # 情绪记录
│ │ │ ├── SleepPhoto.java # 睡眠照片
│ │ │ ├── SleepRecord.java # 睡眠记录
│ │ │ ├── User.java # 用户信息
│ │ │ ├── UserAvatar.java # 用户头像
│ │ │ ├── UserPhoto.java # 用户照片
│ │ │ ├── WeightRecord.java # 体重记录
│ │ │ ├── Workout.java # 运动记录
│ │ │ ├── WorkoutItem.java # 运动项目
│ │ │ └── WorkoutPhoto.java # 运动照片
│ │ │
│ │ ├── exception/ # 异常类
│ │ │ ├── AuthException.java # 认证异常
│ │ │ ├── BaseException.java # 基础异常
│ │ │ ├── FileException.java # 文件异常
│ │ │ └── UserException.java # 用户异常
│ │ │
│ │ ├── repository/ # 数据访问层
│ │ │ ├── AiAssistantAvatarRepository.java # AI助手头像数据访问
│ │ │ ├── AiChatHistoryRepository.java # AI对话历史数据访问
│ │ │ ├── FoodPhotoRepository.java # 食物照片数据访问
│ │ │ ├── FoodRecordRepository.java # 饮食记录数据访问
│ │ │ ├── HealthAnalysisRecordRepository.java # 健康分析记录数据访问
│ │ │ ├── MoodPhotoRepository.java # 情绪照片数据访问
│ │ │ ├── MoodRecordRepository.java # 情绪记录数据访问
│ │ │ ├── SleepRecordRepository.java # 睡眠记录数据访问
│ │ │ ├── UserPhotoRepository.java # 用户照片数据访问
│ │ │ ├── UserRepository.java # 用户数据访问
│ │ │ ├── WeightRecordRepository.java # 体重记录数据访问
│ │ │ ├── WorkoutItemRepository.java # 运动项目数据访问
│ │ │ ├── WorkoutPhotoRepository.java # 运动照片数据访问
│ │ │ └── WorkoutRepository.java # 运动记录数据访问
│ │ │
│ │ ├── service/ # 服务层
│ │ │ ├── impl/ # 服务实现
│ │ │ │ ├── AiAssistantServiceImpl.java # AI小助手服务实现
│ │ │ │ ├── AiHealthAnalysisServiceImpl.java # AI健康分析服务实现
│ │ │ │ ├── FoodRecordServiceImpl.java # 饮食记录服务实现
│ │ │ │ ├── FoodRecordSummaryServiceImpl.java # 饮食统计服务实现
│ │ │ │ ├── MoodRecordServiceImpl.java # 情绪记录服务实现
│ │ │ │ ├── MoodRecordSummaryServiceImpl.java # 情绪统计服务实现
│ │ │ │ ├── SleepRecordServiceImpl.java # 睡眠记录服务实现
│ │ │ │ ├── SleepRecordSummaryServiceImpl.java# 睡眠统计服务实现
│ │ │ │ ├── UserServiceImpl.java # 用户服务实现
│ │ │ │ ├── WeightRecordServiceImpl.java # 体重记录服务实现
│ │ │ │ ├── WeightRecordSummaryServiceImpl.java# 体重统计服务实现
│ │ │ │ ├── WorkoutServiceImpl.java # 运动记录服务实现
│ │ │ │ └── WorkoutSummaryServiceImpl.java # 运动统计服务实现
│ │ │ │
│ │ │ ├── AiAssistantService.java # AI小助手服务接口
│ │ │ ├── AiHealthAnalysisService.java # AI健康分析服务接口
│ │ │ ├── FoodRecordService.java # 饮食记录服务接口
│ │ │ ├── FoodRecordSummaryService.java # 饮食统计服务接口
│ │ │ ├── MoodRecordService.java # 情绪记录服务接口
│ │ │ ├── MoodRecordSummaryService.java # 情绪统计服务接口
│ │ │ ├── SleepRecordService.java # 睡眠记录服务接口
│ │ │ ├── SleepRecordSummaryService.java# 睡眠统计服务接口
│ │ │ ├── UserService.java # 用户服务接口
│ │ │ ├── WeightRecordService.java # 体重记录服务接口
│ │ │ ├── WeightRecordSummaryService.java# 体重统计服务接口
│ │ │ ├── WorkoutService.java # 运动记录服务接口
│ │ │ └── WorkoutSummaryService.java # 运动统计服务接口
│ │ │
│ │ ├── util/ # 工具类
│ │ │ ├── PhotoConverter.java # 照片转换工具
│ │ │ └── ResponseBuilder.java # 响应构建工具
│ │ │
│ │ └── Application.java # 应用主类
│ │
│ └── resources/
│ ├── application.properties # 应用配置
│ └── logback-spring.xml # 日志配置
│
├── .gitignore
├── README.md
└── pom.xml
3. 模块职责说明
3.1 config/ - 配置类
|
类名 |
职责 |
|---|---|
|
|
应用配置,定义应用级别的配置项 |
|
|
全局异常处理器,统一处理系统异常 |
|
|
JWT过滤器,验证token合法性 |
|
|
JWT工具类,生成和解析token |
|
|
安全配置,定义安全规则和认证方式 |
|
|
Swagger配置,生成API文档 |
|
|
工具类配置,定义工具类的Bean |
3.2 controller/ - 控制器层
|
类名 |
职责 |
|---|---|
|
|
AI小助手相关接口,处理AI对话、历史记录管理、助手设置等请求 |
|
|
AI健康分析相关接口,处理分析报告的生成、查询等请求 |
|
|
验证码接口,生成和验证验证码 |
|
|
饮食记录相关接口,处理饮食记录的增删改查请求 |
|
|
饮食记录统计接口,处理饮食数据的统计分析请求 |
|
|
情绪记录相关接口,处理情绪记录的增删改查请求 |
|
|
情绪记录统计接口,处理情绪数据的统计分析请求 |
|
|
睡眠记录相关接口,处理睡眠记录的增删改查请求 |
|
|
睡眠记录统计接口,处理睡眠数据的统计分析请求 |
|
|
用户管理相关接口,处理用户注册、登录、修改密码等请求 |
|
|
体重记录相关接口,处理体重记录的增删改查请求 |
|
|
体重记录统计接口,处理体重数据的统计分析请求 |
|
|
运动记录相关接口,处理运动记录的增删改查请求 |
|
|
运动记录统计接口,处理运动数据的统计分析请求 |
3.3 dto/ - 数据传输对象
|
类名 |
职责 |
|---|---|
|
|
AI助手设置请求,包含助手名称、性格、头像等设置 |
|
|
修改密码请求,包含旧密码和新密码 |
|
|
安全问题请求,包含安全问题和答案 |
|
|
用户登录请求,包含用户名和密码 |
|
|
用户注册请求,包含用户名、密码、邮箱等信息 |
|
|
用户响应,包含用户基本信息 |
3.4 entity/ - 实体类
|
类名 |
职责 |
|---|---|
|
|
AI助手头像,存储用户自定义的AI助手头像图片 |
|
|
AI对话历史,存储用户与AI助手的对话记录 |
|
|
食物项目,包含食物名称、热量、蛋白质等营养信息 |
|
|
食物照片,存储食物的图片信息 |
|
|
饮食记录,包含记录时间、食物项目、总热量等信息 |
|
|
健康分析记录,包含分析内容、健康等级、分析日期等信息 |
|
|
情绪照片,存储情绪相关的图片信息 |
|
|
情绪记录,包含记录时间、情绪等级、备注等信息 |
|
|
睡眠照片,存储睡眠相关的图片信息 |
|
|
睡眠记录,包含入睡时间、醒来时间、睡眠质量等信息 |
|
|
用户信息,包含用户名、密码、邮箱等基本信息 |
|
|
用户头像,存储用户的头像图片 |
|
|
用户照片,存储用户的其他图片 |
|
|
体重记录,包含记录日期、体重值、备注等信息 |
|
|
运动记录,包含记录时间、运动项目、消耗热量等信息 |
|
|
运动项目,包含运动名称、时长、消耗热量等信息 |
|
|
运动照片,存储运动相关的图片信息 |
3.5 exception/ - 异常类
|
类名 |
职责 |
|---|---|
|
|
认证异常,处理登录、注册等认证相关的异常 |
|
|
基础异常,所有自定义异常的父类 |
|
|
文件异常,处理文件上传、下载等相关的异常 |
|
|
用户异常,处理用户相关的异常,如用户不存在、密码错误等 |
3.6 repository/ - 数据访问层
|
类名 |
职责 |
|---|---|
|
|
AI助手头像数据访问,处理AI助手头像的CRUD操作 |
|
|
AI对话历史数据访问,处理对话历史的CRUD操作和自定义查询 |
|
|
食物照片数据访问,处理食物照片的CRUD操作 |
|
|
饮食记录数据访问,处理饮食记录的CRUD操作和自定义查询 |
|
|
健康分析记录数据访问,处理分析记录的CRUD操作 |
|
|
情绪照片数据访问,处理情绪照片的CRUD操作 |
|
|
情绪记录数据访问,处理情绪记录的CRUD操作和自定义查询 |
|
|
睡眠记录数据访问,处理睡眠记录的CRUD操作和自定义查询 |
|
|
用户照片数据访问,处理用户照片的CRUD操作 |
|
|
用户数据访问,处理用户的CRUD操作和自定义查询 |
|
|
体重记录数据访问,处理体重记录的CRUD操作和自定义查询 |
|
|
运动项目数据访问,处理运动项目的CRUD操作 |
|
|
运动照片数据访问,处理运动照片的CRUD操作 |
|
|
运动记录数据访问,处理运动记录的CRUD操作和自定义查询 |
3.7 service/ - 服务层
服务接口
|
接口名 |
职责 |
|---|---|
|
|
AI小助手服务,定义AI对话、历史记录管理、助手设置等方法 |
|
|
AI健康分析服务,定义分析报告生成、查询等方法 |
|
|
饮食记录服务,定义饮食记录的CRUD操作方法 |
|
|
饮食记录统计服务,定义饮食数据的统计分析方法 |
|
|
情绪记录服务,定义情绪记录的CRUD操作方法 |
|
|
情绪记录统计服务,定义情绪数据的统计分析方法 |
|
|
睡眠记录服务,定义睡眠记录的CRUD操作方法 |
|
|
睡眠记录统计服务,定义睡眠数据的统计分析方法 |
|
|
用户服务,定义用户注册、登录、修改密码等方法 |
|
|
体重记录服务,定义体重记录的CRUD操作方法 |
|
|
体重记录统计服务,定义体重数据的统计分析方法 |
|
|
运动记录服务,定义运动记录的CRUD操作方法 |
|
|
运动记录统计服务,定义运动数据的统计分析方法 |
服务实现
|
类名 |
职责 |
|---|---|
|
|
AI小助手服务实现,处理AI对话逻辑、历史记录存储、助手配置等 |
|
|
AI健康分析服务实现 |
|
|
饮食记录服务实现 |
|
|
饮食记录统计服务实现 |
|
|
情绪记录服务实现 |
|
|
情绪记录统计服务实现 |
|
|
睡眠记录服务实现 |
|
|
睡眠记录统计服务实现 |
|
|
用户服务实现 |
|
|
体重记录服务实现 |
|
|
体重记录统计服务实现 |
|
|
运动记录服务实现 |
|
|
运动记录统计服务实现 |
3.8 util/ - 工具类
|
类名 |
职责 |
|---|---|
|
|
照片转换工具,处理照片的上传、转换、存储等操作 |
|
|
响应构建工具,统一构建API响应格式 |
4. 核心流程
4.1 用户认证流程
-
用户发送登录请求到
/api/auth/login -
UserController接收请求并验证参数
-
调用UserService.login验证用户名密码
-
使用JwtUtil.generateToken生成JWT token
-
返回包含token和用户信息的响应
-
用户在后续请求中携带token
-
JwtFilter验证token合法性
-
允许访问受保护资源
4.2 健康记录流程
-
用户发送健康记录请求(如添加体重记录)
-
控制器接收请求,Spring Validation验证参数
-
调用服务层方法处理业务逻辑
-
服务层调用repository操作数据库
-
服务层使用@Transactional管理事务
-
返回处理结果(保存成功的记录或错误信息)
4.3 AI分析流程
-
用户请求生成健康分析报告
/api/ai-analysis/generate -
AiHealthAnalysisController接收请求并验证用户身份
-
AiHealthAnalysisService.generateAnalysis聚合用户健康数据
-
基于聚合数据生成分析报告(健康状况评估、建议等)
-
将分析报告保存到数据库,生成分析记录
-
返回分析报告内容供用户查看
4.4 AI小助手对话流程
-
用户发送消息到
/api/ai-assistant/chat -
AiAssistantController接收请求并验证用户身份
-
AiAssistantService.chat构建AI请求(包含用户消息、历史上下文、助手配置)
-
调用AI服务生成回复,根据助手性格生成不同风格的回复
-
保存对话历史,更新或创建AiChatHistory记录
-
返回AI回复内容供用户查看
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)