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/ - 配置类

类名

职责

AppConfig.java

应用配置,定义应用级别的配置项

GlobalExceptionHandler.java

全局异常处理器,统一处理系统异常

JwtFilter.java

JWT过滤器,验证token合法性

JwtUtil.java

JWT工具类,生成和解析token

SecurityConfig.java

安全配置,定义安全规则和认证方式

SwaggerConfig.java

Swagger配置,生成API文档

UtilConfig.java

工具类配置,定义工具类的Bean

3.2 controller/ - 控制器层

类名

职责

AiAssistantController.java

AI小助手相关接口,处理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

运动记录统计接口,处理运动数据的统计分析请求

3.3 dto/ - 数据传输对象

类名

职责

AiAssistantSettingsRequest.java

AI助手设置请求,包含助手名称、性格、头像等设置

ChangePasswordRequest.java

修改密码请求,包含旧密码和新密码

SecurityQuestionRequest.java

安全问题请求,包含安全问题和答案

UserLoginRequest.java

用户登录请求,包含用户名和密码

UserRegisterRequest.java

用户注册请求,包含用户名、密码、邮箱等信息

UserResponse.java

用户响应,包含用户基本信息

3.4 entity/ - 实体类

类名

职责

AiAssistantAvatar.java

AI助手头像,存储用户自定义的AI助手头像图片

AiChatHistory.java

AI对话历史,存储用户与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

运动照片,存储运动相关的图片信息

3.5 exception/ - 异常类

类名

职责

AuthException.java

认证异常,处理登录、注册等认证相关的异常

BaseException.java

基础异常,所有自定义异常的父类

FileException.java

文件异常,处理文件上传、下载等相关的异常

UserException.java

用户异常,处理用户相关的异常,如用户不存在、密码错误等

3.6 repository/ - 数据访问层

类名

职责

AiAssistantAvatarRepository.java

AI助手头像数据访问,处理AI助手头像的CRUD操作

AiChatHistoryRepository.java

AI对话历史数据访问,处理对话历史的CRUD操作和自定义查询

FoodPhotoRepository.java

食物照片数据访问,处理食物照片的CRUD操作

FoodRecordRepository.java

饮食记录数据访问,处理饮食记录的CRUD操作和自定义查询

HealthAnalysisRecordRepository.java

健康分析记录数据访问,处理分析记录的CRUD操作

MoodPhotoRepository.java

情绪照片数据访问,处理情绪照片的CRUD操作

MoodRecordRepository.java

情绪记录数据访问,处理情绪记录的CRUD操作和自定义查询

SleepRecordRepository.java

睡眠记录数据访问,处理睡眠记录的CRUD操作和自定义查询

UserPhotoRepository.java

用户照片数据访问,处理用户照片的CRUD操作

UserRepository.java

用户数据访问,处理用户的CRUD操作和自定义查询

WeightRecordRepository.java

体重记录数据访问,处理体重记录的CRUD操作和自定义查询

WorkoutItemRepository.java

运动项目数据访问,处理运动项目的CRUD操作

WorkoutPhotoRepository.java

运动照片数据访问,处理运动照片的CRUD操作

WorkoutRepository.java

运动记录数据访问,处理运动记录的CRUD操作和自定义查询

3.7 service/ - 服务层

服务接口

接口名

职责

AiAssistantService.java

AI小助手服务,定义AI对话、历史记录管理、助手设置等方法

AiHealthAnalysisService.java

AI健康分析服务,定义分析报告生成、查询等方法

FoodRecordService.java

饮食记录服务,定义饮食记录的CRUD操作方法

FoodRecordSummaryService.java

饮食记录统计服务,定义饮食数据的统计分析方法

MoodRecordService.java

情绪记录服务,定义情绪记录的CRUD操作方法

MoodRecordSummaryService.java

情绪记录统计服务,定义情绪数据的统计分析方法

SleepRecordService.java

睡眠记录服务,定义睡眠记录的CRUD操作方法

SleepRecordSummaryService.java

睡眠记录统计服务,定义睡眠数据的统计分析方法

UserService.java

用户服务,定义用户注册、登录、修改密码等方法

WeightRecordService.java

体重记录服务,定义体重记录的CRUD操作方法

WeightRecordSummaryService.java

体重记录统计服务,定义体重数据的统计分析方法

WorkoutService.java

运动记录服务,定义运动记录的CRUD操作方法

WorkoutSummaryService.java

运动记录统计服务,定义运动数据的统计分析方法

服务实现

类名

职责

AiAssistantServiceImpl.java

AI小助手服务实现,处理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

运动记录统计服务实现

3.8 util/ - 工具类

类名

职责

PhotoConverter.java

照片转换工具,处理照片的上传、转换、存储等操作

ResponseBuilder.java

响应构建工具,统一构建API响应格式


4. 核心流程

4.1 用户认证流程

  1. 用户发送登录请求到 /api/auth/login

  2. UserController接收请求并验证参数

  3. 调用UserService.login验证用户名密码

  4. 使用JwtUtil.generateToken生成JWT token

  5. 返回包含token和用户信息的响应

  6. 用户在后续请求中携带token

  7. JwtFilter验证token合法性

  8. 允许访问受保护资源

4.2 健康记录流程

  1. 用户发送健康记录请求(如添加体重记录)

  2. 控制器接收请求,Spring Validation验证参数

  3. 调用服务层方法处理业务逻辑

  4. 服务层调用repository操作数据库

  5. 服务层使用@Transactional管理事务

  6. 返回处理结果(保存成功的记录或错误信息)

4.3 AI分析流程

  1. 用户请求生成健康分析报告 /api/ai-analysis/generate

  2. AiHealthAnalysisController接收请求并验证用户身份

  3. AiHealthAnalysisService.generateAnalysis聚合用户健康数据

  4. 基于聚合数据生成分析报告(健康状况评估、建议等)

  5. 将分析报告保存到数据库,生成分析记录

  6. 返回分析报告内容供用户查看

4.4 AI小助手对话流程

  1. 用户发送消息到 /api/ai-assistant/chat

  2. AiAssistantController接收请求并验证用户身份

  3. AiAssistantService.chat构建AI请求(包含用户消息、历史上下文、助手配置)

  4. 调用AI服务生成回复,根据助手性格生成不同风格的回复

  5. 保存对话历史,更新或创建AiChatHistory记录

  6. 返回AI回复内容供用户查看

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐