本项目采用Maven作为构建工具,遵循标准的Maven目录结构。项目基于Spring Boot框架开发,使用Java 17作为开发语言。项目包名为work.baiyun.chronicdiseaseapp。
ChronicDiseaseApp/
├── pom.xml # Maven项目配置文件
├── src/ # 源代码目录
│ ├── main/ # 主源代码
│ │ ├── java/ # Java源代码
│ │ │ └── work/baiyun/chronicdiseaseapp/ # 主包
│ │ │ ├── SpringAPP.java # Spring Boot 主启动类(@EnableKnife4j)
│ │ │ ├── common/ # 通用类
│ │ │ │ ├── Page.java # 分页类(PageHelper 封装)
│ │ │ │ └── R.java # 统一响应类
│ │ │ ├── config/ # 配置类
│ │ │ │ ├── AuthInterceptor.java # 认证拦截器
│ │ │ │ ├── CorsConfig.java # CORS 配置
│ │ │ │ ├── Knife4jConfig.java # Knife4j 配置
│ │ │ │ ├── MybatisPlusConfig.java # MyBatis-Plus 配置
│ │ │ │ ├── RestTemplateConfig.java # RestTemplate 配置
│ │ │ │ ├── WebMvcConfig.java # Web MVC 配置(拦截器注册)
│ │ │ │ └── WeChatProperties.java # 微信配置属性
│ │ │ ├── controller/ # 控制器层
│ │ │ │ ├── GeoController.java # 地理位置控制器
│ │ │ │ ├── WeChatController.java # 微信控制器
│ │ │ │ ├── BloodGlucoseDataController.java # 血糖数据控制器
│ │ │ │ ├── BloodPressureDataController.java # 血压数据控制器
│ │ │ │ ├── HeartRateDataController.java # 心率数据控制器
│ │ │ │ └── PhysicalDataController.java # 体征数据控制器
│ │ │ ├── enums/ # 枚举类
│ │ │ │ ├── ExceptionResultCode.java # 异常结果码枚举
│ │ │ │ ├── FailResultCode.java # 失败结果码枚举
│ │ │ │ ├── Gender.java # 性别枚举
│ │ │ │ ├── PermissionGroup.java # 权限组枚举
│ │ │ │ ├── SuccessResultCode.java # 成功结果码枚举
│ │ │ │ └── BloodGlucoseType.java # 血糖类型枚举
│ │ │ ├── exception/ # 异常处理
│ │ │ │ ├── CustomException.java # 自定义异常(RuntimeException)
│ │ │ │ └── CustomExceptionHandler.java # 全局异常处理器
│ │ │ ├── handler/ # MyBatis 处理器
│ │ │ │ ├── CustomMetaObjectHandler.java # 元对象处理
│ │ │ │ ├── GenderTypeHandler.java # 性别类型处理
│ │ │ │ └── PermissionGroupTypeHandler.java # 权限组类型处理
│ │ │ ├── mapper/ # 数据访问层(Mapper 接口)
│ │ │ │ ├── SysUserMapper.java # 系统用户Mapper
│ │ │ │ ├── UserInfoMapper.java # 用户信息Mapper
│ │ │ │ ├── UserTokenMapper.java # 用户令牌Mapper
│ │ │ │ ├── BloodGlucoseDataMapper.java # 血糖数据Mapper
│ │ │ │ ├── BloodPressureDataMapper.java# 血压数据Mapper
│ │ │ │ ├── HeartRateDataMapper.java # 心率数据Mapper
│ │ │ │ └── PhysicalDataMapper.java # 体征数据Mapper
│ │ │ ├── model/ # 数据模型
│ │ │ │ ├── bo/ # 业务对象
│ │ │ │ ├── po/ # 持久化对象(实体)
│ │ │ │ │ ├── BaseEntity.java # 基础实体
│ │ │ │ │ ├── UserInfo.java # 用户信息实体
│ │ │ │ │ ├── UserToken.java # 用户令牌实体
│ │ │ │ │ ├── BloodGlucoseData.java # 血糖实体
│ │ │ │ │ ├── BloodPressureData.java# 血压实体
│ │ │ │ │ ├── HeartRateData.java # 心率实体
│ │ │ │ │ └── PhysicalData.java # 体征实体
│ │ │ │ └── vo/ # 视图/请求响应对象
│ │ │ │ ├── GetOpenidRequest.java # 获取OpenID请求
│ │ │ │ ├── QueryUserRequest.java # 查询用户请求
│ │ │ │ ├── QueryUserResponse.java # 查询用户响应
│ │ │ │ ├── UpdateUserInfoRequest.java # 更新用户信息请求
│ │ │ │ ├── AuthPrincipal.java # 鉴权主体(userId, role)
│ │ │ │ └── 各类数据请求/响应 VO(如 BloodPressureDataResponse 等)
│ │ │ ├── service/ # 服务接口
│ │ │ │ ├── TokenService.java # 令牌服务接口
│ │ │ │ ├── UserService.java # 用户服务接口
│ │ │ │ ├── WeChatService.java # 微信服务接口
│ │ │ │ └── impl/ # 服务实现
│ │ │ │ ├── TokenServiceImpl.java # 令牌服务实现
│ │ │ │ ├── UserServiceImpl.java # 用户服务实现
│ │ │ │ ├── BloodGlucoseDataServiceImpl.java # 血糖服务实现
│ │ │ │ ├── BloodPressureDataServiceImpl.java# 血压服务实现
│ │ │ │ ├── HeartRateDataServiceImpl.java # 心率服务实现
│ │ │ │ └── PhysicalDataServiceImpl.java # 体征服务实现
│ │ │ └── util/ # 工具类
│ │ │ ├── TokenUtil.java # 令牌工具类
│ │ │ └── SecurityUtils.java # 安全相关辅助方法
│ │ └── resources/ # 资源文件
│ │ ├── application.yml # 应用配置
│ │ ├── logback-spring.xml # 日志配置
│ │ └── cert/ # 证书
│ │ ├── fullchain.pem # 证书链(仓库副本 — 生产请使用安全注入)
│ │ └── privkey.pem # 私钥(不要在公共仓库中保存)
│ └── test/ # 测试代码
│ └── java/ # 测试Java代码(当前为空)
├── target/ # 编译输出目录(忽略提交)
│ ├── classes/ # 编译后的类文件
│ ├── generated-sources/ # 生成的源代码
│ ├── generated-test-sources/ # 生成的测试源代码
│ └── test-classes/ # 编译后的测试类文件
├── docs/ # 文档目录
│ ├── ReadME.md # 项目说明文档
│ └── DevRule/ # 开发规范目录
├── logs/ # 运行时日志目录
└── cert/ # 仓库证书副本(生产环境请使用密钥管理)
存放通用工具类和基础类,如统一响应对象R、分页对象Page等。
存放Spring配置类,包括拦截器、CORS、MyBatis-Plus、Web MVC等配置。
存放Spring MVC控制器类,处理HTTP请求和响应。
存放枚举类,如结果码枚举、性别枚举、权限组枚举等。
存放自定义异常类和全局异常处理器。
存放MyBatis处理器,如元对象处理器、类型处理器等。
存放MyBatis Mapper接口,用于数据访问。
存放工具类,如令牌生成工具等。
存放单元测试和集成测试代码。目前项目中该目录为空。
Maven编译后的输出目录,包含编译后的类文件、生成的源代码等。生产环境部署时通常不需要包含此目录。
target、logs 与 certtarget/:为 Maven 构建输出目录,应在 .gitignore 中忽略,不提交到版本控制。logs/:运行时日志目录,通常为部署所在机器的本地目录;如需要在容器或云环境下运行,请将日志重定向到标准输出或使用集中化日志(例如 ELK、Azure Monitor 等)。cert/:仓库中存在证书副本(resources 下有 cert/),生产密钥和证书应通过安全密钥管理器(例如 Vault、Azure KeyVault)或 CI/CD 的机密存储注入,避免在公共或共享仓库中保存私钥。src/test/java/:存放单元测试和集成测试代码。当前目录为空,建议引入基础单元测试(示例:服务层的 TokenService / UserService 单元测试)并在 CI 中运行。target/、logs/、以及 IDE 特有的配置目录(例如 .idea/)加入 .gitignore。