model 目录模型类说明
在 src/main/java/work/baiyun/chronicdiseaseapp/model 目录下包含了项目中的模型类,分为 po(持久化对象)和 vo(值对象)两个子目录。这些类用于表示系统中的数据结构和传输对象。
po 包(持久化对象)
BaseEntity.java
用途
BaseEntity 是所有持久化对象的基类,包含了实体对象的通用字段。
实现细节
- 实现了 Serializable 接口
- 包含以下通用字段:
- id: 主键ID,使用雪花算法生成
- version: 版本号,用于乐观锁
- createUser: 创建者ID
- createTime: 创建时间
- updateUser: 更新者ID
- updateTime: 更新时间
- remark: 备注
- 使用了 MyBatis-Plus 注解进行数据库映射
- 使用了 Jackson 注解进行 JSON 序列化处理
- 使用了 Lombok 注解简化 getter 和 setter 方法
BloodGlucoseData.java
用途
BloodGlucoseData 是血糖数据实体类,对应数据库中的 t_blood_glucose_data 表。
实现细节
- 继承自 BaseEntity
- 包含以下字段:
- userId: 用户ID
- measureTime: 测量时间
- type: 血糖测量类型
- value: 血糖值
- 使用了 Swagger 注解进行 API 文档说明
BloodPressureData.java
用途
BloodPressureData 是血压数据实体类,对应数据库中的 t_blood_pressure_data 表。
实现细节
- 继承自 BaseEntity
- 包含以下字段:
- userId: 用户ID
- systolicPressure: 收缩压(mmHg)
- diastolicPressure: 舒张压(mmHg)
- measureTime: 测量时间
- 使用了 Swagger 注解进行 API 文档说明
HeartRateData.java
用途
HeartRateData 是心率数据实体类,对应数据库中的 t_heart_rate_data 表。
实现细节
- 继承自 BaseEntity
- 包含以下字段:
- userId: 用户ID
- heartRate: 心率(次/分钟)
- measureTime: 测量时间
- 使用了 Swagger 注解进行 API 文档说明
PhysicalData.java
用途
PhysicalData 是体格数据实体类,对应数据库中的 t_physical_data 表。
实现细节
- 继承自 BaseEntity
- 包含以下字段:
- userId: 用户ID
- height: 身高(cm)
- weight: 体重(kg)
- measureTime: 测量时间
- 使用了 Swagger 注解进行 API 文档说明
UserBinding.java
用途
UserBinding 是用户绑定关系实体类,对应数据库中的 t_user_binding 表。
实现细节
- 继承自 BaseEntity
- 包含以下字段:
- patientUserId: 患者用户ID
- boundUserId: 被绑定用户ID(医生或家属)
- bindingType: 绑定类型(DOCTOR-医生, FAMILY-家属)
- status: 绑定状态(1-有效,0-无效)
- 使用了自定义的 UserBindingTypeHandler 进行类型处理
UserInfo.java
用途
UserInfo 是用户信息实体类,对应数据库中的 t_user_info 表。
实现细节
- 继承自 BaseEntity
- 包含以下字段:
- username: 用户名
- password: 密码
- role: 角色(权限组)
- wxOpenid: 微信ID
- avatar: 头像
- nickname: 昵称
- sex: 性别
- phone: 手机号
- age: 年龄
- address: 地址
- 使用了自定义的 PermissionGroupTypeHandler 和 GenderTypeHandler 进行类型处理
UserToken.java
用途
UserToken 是用户认证令牌实体类,对应数据库中的 t_user_token 表。
实现细节
- 继承自 BaseEntity
- 包含以下字段:
- userId: 用户ID
- token: 认证令牌
- expireTime: 过期时间
- 设计说明:
- 每次登录成功后,生成新的token,覆盖旧的token
- token有效期为72小时
- 每次请求时,检查token是否过期,若过期则返回未登录状态
- 每次请求时,若token快过期(小于24小时),则延长token有效期
- token的生成格式为uuid,存储在DB中
vo 包(值对象/视图对象)
BaseQueryRequest.java
用途
BaseQueryRequest 是基础查询请求对象,用于分页查询的参数传递。
实现细节
- 包含以下字段:
- pageNum: 页码,默认值为1
- pageSize: 每页大小,默认值为10,最大值为100
- startTime: 开始时间
- endTime: 结束时间
- 使用了验证注解确保参数的有效性
AuthPrincipal.java
用途
AuthPrincipal 是认证主体对象,包含用户ID和权限组信息。
实现细节
- 包含以下字段:
- 提供了默认构造方法和带参构造方法
- 提供了 getter 和 setter 方法
UserBindingResponse.java
用途
UserBindingResponse 是用户绑定关系响应对象,用于返回用户绑定关系信息。
实现细节
- 包含以下字段:
- id: 记录ID
- patientUserId: 患者用户ID
- boundUserId: 被绑定用户ID(医生或家属)
- bindingType: 绑定类型
- status: 绑定状态
- createTime: 创建时间
- boundUserNickname: 被绑定用户昵称
- boundUserPhone: 被绑定用户手机号
BloodGlucoseDataResponse.java
用途
BloodGlucoseDataResponse 是血糖数据响应对象,用于返回血糖数据信息。
实现细节
- 包含以下字段:
- id: 记录ID
- measureTime: 测量时间
- type: 血糖测量类型
- value: 血糖值
- createTime: 创建时间
AddBloodGlucoseDataRequest.java
用途
AddBloodGlucoseDataRequest 是添加血糖数据请求对象,用于接收添加血糖数据的参数。
实现细节
- 包含以下字段:
- type: 血糖测量类型(必填)
- value: 血糖值(必填,范围1.0-30.0)
- measureTime: 测量时间(必填)
- 使用了验证注解确保参数的有效性
PhysicalDataPageResponse.java
用途
PhysicalDataPageResponse 是体格数据分页响应对象,用于返回分页查询的体格数据结果。
实现细节
- 包含以下字段:
- records: 数据列表
- total: 总数
- size: 每页大小
- current: 当前页码
- orders: 排序字段
- optimizeCountSql: 是否优化 count SQL
- searchCount: 是否搜索 count
- optimizeJoinOfCountSql: 是否优化 join count SQL
- maxLimit: 最大限制
- countId: countId
- pages: 总页数
- 内部定义了 OrderItem 静态类用于表示排序信息