# service 目录服务类说明 在 `src/main/java/work/baiyun/chronicdiseaseapp/service` 目录下包含了项目中的服务接口和实现类,这些类负责处理业务逻辑,是系统的核心部分。 ## 接口类 ### BloodGlucoseDataService.java #### 用途 BloodGlucoseDataService 是血糖数据服务接口,定义了血糖数据相关业务操作的方法。 #### 方法说明 - addBloodGlucoseData: 添加血糖数据 - listBloodGlucoseData: 分页查询当前用户的血糖数据 - listBloodGlucoseDataByPatient: 分页查询指定患者的血糖数据(需要绑定关系) - deleteBloodGlucoseData: 删除指定ID的血糖数据 ### BloodPressureDataService.java #### 用途 BloodPressureDataService 是血压数据服务接口,定义了血压数据相关业务操作的方法。 #### 方法说明 - addBloodPressureData: 添加血压数据 - listBloodPressureData: 分页查询当前用户的血压数据 - listBloodPressureDataByPatient: 分页查询指定患者的血压数据(需要绑定关系) - deleteBloodPressureData: 删除指定ID的血压数据 ### HeartRateDataService.java #### 用途 HeartRateDataService 是心率数据服务接口,定义了心率数据相关业务操作的方法。 #### 方法说明 - addHeartRateData: 添加心率数据 - listHeartRateData: 分页查询当前用户的心率数据 - listHeartRateDataByPatient: 分页查询指定患者的心率数据(需要绑定关系) - deleteHeartRateData: 删除指定ID的心率数据 ### PhysicalDataService.java #### 用途 PhysicalDataService 是体格数据服务接口,定义了体格数据相关业务操作的方法。 #### 方法说明 - addPhysicalData: 添加体格数据 - listPhysicalData: 分页查询当前用户的体格数据 - listPhysicalDataByPatient: 分页查询指定患者的体格数据(需要绑定关系) - deletePhysicalData: 删除指定ID的体格数据 ### TokenService.java #### 用途 TokenService 是令牌服务接口,负责用户认证令牌的生成、验证和撤销。 #### 方法说明 - createToken: 为用户生成新的令牌 - validateToken: 校验令牌并返回认证主体信息 - revokeToken: 撤销指定令牌 ### UserAvatarService.java #### 用途 UserAvatarService 是用户头像服务接口,负责用户头像的保存和加载。 #### 方法说明 - saveAvatar: 保存用户头像并返回相对路径 - loadAvatarAsResource: 根据用户ID加载头像资源 ### UserBindingService.java #### 用途 UserBindingService 是用户绑定服务接口,负责处理用户之间的绑定关系。 #### 方法说明 - createUserBinding: 创建用户绑定关系 - deleteUserBinding: 删除用户绑定关系 - listBindingsByPatient: 分页查询患者的绑定关系列表 - listBindingsByBoundUser: 分页查询用户被绑定的关系列表 - checkUserBinding: 检查绑定关系是否存在 ### UserService.java #### 用途 UserService 是用户服务接口,继承自 MyBatis-Plus 的 IService 接口。 ### WeChatService.java #### 用途 WeChatService 是微信服务接口,负责与微信小程序相关的操作。 #### 方法说明 - getOpenId: 根据微信code获取用户openid ## 实现类 ### BloodGlucoseDataServiceImpl.java #### 用途 BloodGlucoseDataServiceImpl 是血糖数据服务的实现类,实现了血糖数据相关业务逻辑。 #### 实现细节 - 实现了添加血糖数据功能,自动关联当前用户 - 实现了分页查询功能,支持按时间范围查询 - 实现了根据患者ID查询血糖数据功能,包含权限控制(家属只能查看一年内的数据) - 实现了删除血糖数据功能,验证数据归属后才允许删除 ### BloodPressureDataServiceImpl.java #### 用途 BloodPressureDataServiceImpl 是血压数据服务的实现类,实现了血压数据相关业务逻辑。 #### 实现细节 - 实现了添加血压数据功能,自动关联当前用户 - 实现了分页查询功能,支持按时间范围查询 - 实现了根据患者ID查询血压数据功能,包含权限控制(家属只能查看一年内的数据) - 实现了删除血压数据功能,验证数据归属后才允许删除 ### HeartRateDataServiceImpl.java #### 用途 HeartRateDataServiceImpl 是心率数据服务的实现类,实现了心率数据相关业务逻辑。 #### 实现细节 - 实现了添加心率数据功能,自动关联当前用户 - 实现了分页查询功能,支持按时间范围查询 - 实现了根据患者ID查询心率数据功能,包含权限控制(家属只能查看一年内的数据) - 实现了删除心率数据功能,验证数据归属后才允许删除 ### PhysicalDataServiceImpl.java #### 用途 PhysicalDataServiceImpl 是体格数据服务的实现类,实现了体格数据相关业务逻辑。 #### 实现细节 - 实现了添加体格数据功能,自动关联当前用户 - 实现了分页查询功能,支持按时间范围查询 - 实现了根据患者ID查询体格数据功能,包含权限控制(家属只能查看一年内的数据) - 实现了删除体格数据功能,验证数据归属后才允许删除 ### TokenServiceImpl.java #### 用途 TokenServiceImpl 是令牌服务的实现类,负责用户认证令牌的生成、验证和撤销。 #### 实现细节 - 使用 TokenUtil 工具类生成令牌 - 实现了令牌的创建和更新逻辑 - 实现了令牌验证功能,包含过期检查和自动续期机制 - 实现了令牌撤销功能 ### UserAvatarServiceImpl.java #### 用途 UserAvatarServiceImpl 是用户头像服务的实现类,负责用户头像的保存和加载。 #### 实现细节 - 实现了头像文件的上传和保存,包含文件类型和大小验证 - 实现了防止路径穿越的安全措施 - 实现了头像文件的加载功能 - 通过事务管理确保数据库更新和文件保存的一致性 ### UserBindingServiceImpl.java #### 用途 UserBindingServiceImpl 是用户绑定服务的实现类,负责处理用户之间的绑定关系。 #### 实现细节 - 实现了创建用户绑定关系功能,支持更新已存在的绑定关系 - 实现了删除用户绑定关系功能(软删除) - 实现了分页查询绑定关系功能,支持按患者ID或绑定用户ID查询 - 实现了批量查询用户信息以避免N+1问题 - 实现了绑定关系检查功能 ### UserServiceImpl.java #### 用途 UserServiceImpl 是用户服务的实现类,继承自 MyBatis-Plus 的 ServiceImpl 类。 ### WeChatServiceImpl.java #### 用途 WeChatServiceImpl 是微信服务的实现类,负责与微信小程序相关的操作。 #### 实现细节 - 实现了调用微信 jscode2session 接口获取 openid 的功能 - 包含了完整的错误处理和日志记录 - 使用 RestTemplate 进行 HTTP 请求