# 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: 过期时间 - 设计说明: 1. 每次登录成功后,生成新的token,覆盖旧的token 2. token有效期为72小时 3. 每次请求时,检查token是否过期,若过期则返回未登录状态 4. 每次请求时,若token快过期(小于24小时),则延长token有效期 5. token的生成格式为uuid,存储在DB中 ## vo 包(值对象/视图对象) ### BaseQueryRequest.java #### 用途 BaseQueryRequest 是基础查询请求对象,用于分页查询的参数传递。 #### 实现细节 - 包含以下字段: - pageNum: 页码,默认值为1 - pageSize: 每页大小,默认值为10,最大值为100 - startTime: 开始时间 - endTime: 结束时间 - 使用了验证注解确保参数的有效性 ### AuthPrincipal.java #### 用途 AuthPrincipal 是认证主体对象,包含用户ID和权限组信息。 #### 实现细节 - 包含以下字段: - userId: 用户ID - role: 权限组 - 提供了默认构造方法和带参构造方法 - 提供了 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 静态类用于表示排序信息