Files
contract-manager/docs/task/server模块service缓存调整为Vo对象/TODO_server模块service缓存调整为Vo对象.md
songqq 49413ad473 refactor(service): 统一Service缓存为VO对象并优化关联实体处理
重构Service类实现,将QueryService泛型参数调整为VO类型,确保缓存VO对象而非实体。优化关联实体处理逻辑,减少重复代码。修改findById方法返回VO对象,新增getById方法获取实体。更新相关调用点以适配新接口。

调整WebSocket处理、控制器及Service实现,确保数据类型一致性。完善文档记录重构过程及发现的问题。为后续优化提供基础架构支持。
2025-09-29 19:31:51 +08:00

84 lines
2.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TODO - Server模块service缓存调整为Vo对象
## 1. 批量修改其他Service类
按照CompanyFileTypeService的修改模式批量修改以下Service类
- CompanyCustomerFileTypeService
- CustomerFileTypeService
- CompanyFileService
- CompanyCustomerFileService
### 操作指引:
1. 对于每个Service类
- 调整QueryService接口的泛型参数为对应的Vo类
- 重构findById方法返回类型改为对应的Vo类并添加@Cacheable注解
- 保留getById方法用于获取实体对象
- 让实体类继承Voable接口并实现toVo方法完成从实体到Vo的转换
- 确保所有标注@Cacheable注解的方法的返回参数类型不为Model类型全部调整为Vo类型
- findAll(JsonNodePageable)方法的返回类型调整为Page<Vo>并使用实体类自带的toVo方法进行转换
- findAll(SpecificationPageable)方法的返回类型保持为Page<Model>
- 仅保留一个save(Model)方法,用于保存实体对象
- **不创建独立的toVo方法**:直接使用实体类自带的`toVo()`方法进行转换
2. 确保每个Service类的修改都符合以下要求
- 保持接口兼容性
- 正确使用缓存注解
- 实现实体与Vo之间的正确转换
## 2. Redis缓存清理
在所有Service类修改完成后需要清理Redis中的缓存数据以确保新的缓存策略能够正确生效。
### 操作指引:
1. 开发一个缓存清理工具或脚本
2. 执行缓存清理操作,清除所有相关的缓存键
3. 验证清理结果,确保缓存已被正确清除
## 3. WebSocket服务兼容性处理
检查并确保WebSocket服务能够正确处理Vo对象避免序列化问题。
### 操作指引:
1. 分析WebSocket服务的代码
2. 确保WebSocket服务能够正确序列化和反序列化Vo对象
3. 必要时进行相应的修改
## 4. 测试验证
对所有修改进行全面的测试验证,确保功能正常。
### 操作指引:
1. 编写单元测试和集成测试
2. 执行功能测试验证各Service类的功能是否正常
3. 执行性能测试,验证缓存策略的效果
4. 记录测试结果
## 5. 文档更新
完成所有修改后更新相关文档包括系统架构文档、API文档等。
### 操作指引:
1. 整理所有修改内容
2. 更新系统架构文档
3. 更新API文档
4. 更新用户手册
## 6. 部署计划
制定详细的部署计划,确保修改能够顺利上线。
### 操作指引:
1. 确定部署时间窗口
2. 制定回滚策略
3. 准备部署脚本
4. 通知相关人员
## 7. 上线后监控
上线后进行持续监控,确保系统运行稳定。
### 操作指引:
1. 设置监控指标
2. 配置告警机制
3. 定期检查系统运行状态
4. 及时处理异常情况