refactor(model): 重构模型类包结构并优化序列化处理
重构模型类包结构,将模型类按功能模块划分到不同的子包中。优化序列化处理,为VO类添加serialVersionUID并实现Serializable接口。移除部分冗余的serialVersionUID字段,简化模型类代码。同时修复UITools中空值处理的问题,并更新pom版本至0.0.100-SNAPSHOT。 - 将模型类按功能模块划分到ds子包中 - 为VO类添加序列化支持 - 移除冗余的serialVersionUID字段 - 修复UITools空值处理问题 - 更新项目版本号
This commit is contained in:
@@ -1,84 +1,140 @@
|
||||
# TODO - Server模块service缓存调整为Vo对象
|
||||
# 6A工作流 - TODO阶段文档
|
||||
|
||||
## 1. 批量修改其他Service类
|
||||
## 任务名称:Server模块Service缓存调整为Vo对象
|
||||
|
||||
按照CompanyFileTypeService的修改模式,批量修改以下Service类:
|
||||
- CompanyCustomerFileTypeService
|
||||
- CustomerFileTypeService
|
||||
- CompanyFileService
|
||||
- CompanyCustomerFileService
|
||||
## 1. 未完成工作清单
|
||||
|
||||
### 操作指引:
|
||||
1. 对于每个Service类:
|
||||
- 调整QueryService接口的泛型参数为对应的Vo类
|
||||
- 重构findById方法,返回类型改为对应的Vo类,并添加@Cacheable注解
|
||||
- 保留getById方法,用于获取实体对象
|
||||
- 让实体类继承Voable接口并实现toVo方法,完成从实体到Vo的转换
|
||||
- 确保所有标注@Cacheable注解的方法的返回参数类型不为Model类型,全部调整为Vo类型
|
||||
- findAll(JsonNode,Pageable)方法的返回类型调整为Page<Vo>,并使用实体类自带的toVo方法进行转换
|
||||
- findAll(Specification,Pageable)方法的返回类型保持为Page<Model>
|
||||
- 仅保留一个save(Model)方法,用于保存实体对象
|
||||
- **不创建独立的toVo方法**:直接使用实体类自带的`toVo()`方法进行转换
|
||||
| 序号 | 未完成工作项 | 优先级 | 预计完成时间 | 负责人 |
|
||||
|------|------------|--------|------------|-------|
|
||||
| 1 | WebSocket服务兼容性处理 | 高 | 2024-03-20 | 开发团队 |
|
||||
|
||||
2. 确保每个Service类的修改都符合以下要求:
|
||||
- 保持接口兼容性
|
||||
- 正确使用缓存注解
|
||||
- 实现实体与Vo之间的正确转换
|
||||
## 2. 待办事项详细描述
|
||||
|
||||
## 2. Redis缓存清理
|
||||
### 2.1 WebSocket服务兼容性处理
|
||||
|
||||
在所有Service类修改完成后,需要清理Redis中的缓存数据,以确保新的缓存策略能够正确生效。
|
||||
**描述**:分析WebSocketServerHandler等核心类的代码,确保它们能够正确处理Service层返回的Vo对象,并对其类型处理逻辑和泛型关系进行必要的调整。
|
||||
|
||||
### 操作指引:
|
||||
1. 开发一个缓存清理工具或脚本
|
||||
2. 执行缓存清理操作,清除所有相关的缓存键
|
||||
3. 验证清理结果,确保缓存已被正确清除
|
||||
**具体工作内容**:
|
||||
|
||||
## 3. WebSocket服务兼容性处理
|
||||
1. **分析WebSocketServerHandler类的类型处理逻辑**
|
||||
- 分析`WebSocketServerHandler`类中的消息处理方法,特别是与Service层交互的部分
|
||||
- 检查这些方法是如何处理Service层返回的对象的
|
||||
- 识别可能存在的类型转换问题和泛型关系不匹配的情况
|
||||
|
||||
检查并确保WebSocket服务能够正确处理Vo对象,避免序列化问题。
|
||||
2. **分析WebSocketService类的类型处理逻辑**
|
||||
- 分析`WebSocketService`类中的方法,特别是与Service层交互的部分
|
||||
- 检查这些方法是如何处理Service层返回的对象的
|
||||
- 识别可能存在的类型转换问题和泛型关系不匹配的情况
|
||||
|
||||
### 操作指引:
|
||||
1. 分析WebSocket服务的代码
|
||||
2. 确保WebSocket服务能够正确序列化和反序列化Vo对象
|
||||
3. 必要时进行相应的修改
|
||||
3. **分析相关辅助类的类型处理逻辑**
|
||||
- 分析与WebSocket服务相关的辅助类,如消息转换器、编码器、解码器等
|
||||
- 检查这些类是如何处理Service层返回的对象的
|
||||
- 识别可能存在的类型转换问题和泛型关系不匹配的情况
|
||||
|
||||
## 4. 测试验证
|
||||
4. **调整类型处理逻辑和泛型关系**
|
||||
- 根据分析结果,对上述类的类型处理逻辑进行必要的调整
|
||||
- 调整泛型参数,确保与Service层返回的Vo对象类型相匹配
|
||||
- 确保所有相关类能够正确处理Service层返回的Vo对象
|
||||
|
||||
对所有修改进行全面的测试验证,确保功能正常。
|
||||
5. **确保Vo对象正确序列化**
|
||||
- 确保所有需要通过WebSocket传输的Vo对象都能够正确序列化
|
||||
- 检查Vo对象的序列化方式,确保与WebSocket服务的序列化要求相匹配
|
||||
- 必要时,为Vo对象添加额外的序列化支持
|
||||
|
||||
### 操作指引:
|
||||
1. 编写单元测试和集成测试
|
||||
2. 执行功能测试,验证各Service类的功能是否正常
|
||||
3. 执行性能测试,验证缓存策略的效果
|
||||
4. 记录测试结果
|
||||
6. **编写测试用例进行验证**
|
||||
- 编写测试用例,验证WebSocket服务是否能够正确处理Service层返回的Vo对象
|
||||
- 测试不同类型的Vo对象的序列化和反序列化
|
||||
- 测试WebSocket服务与Service层的交互是否正常
|
||||
|
||||
## 5. 文档更新
|
||||
**关键交付物**:
|
||||
- 修改后的`WebSocketServerHandler`类
|
||||
- 修改后的`WebSocketService`类
|
||||
- 修改后的相关辅助类
|
||||
- 测试用例和验证报告
|
||||
|
||||
完成所有修改后,更新相关文档,包括系统架构文档、API文档等。
|
||||
**依赖关系**:
|
||||
- 依赖于Service层的改造完成
|
||||
- 依赖于Vo对象的定义和实现完成
|
||||
|
||||
### 操作指引:
|
||||
1. 整理所有修改内容
|
||||
2. 更新系统架构文档
|
||||
3. 更新API文档
|
||||
4. 更新用户手册
|
||||
## 3. 风险评估与应对措施
|
||||
|
||||
## 6. 部署计划
|
||||
### 3.1 WebSocket服务兼容性处理风险评估
|
||||
|
||||
制定详细的部署计划,确保修改能够顺利上线。
|
||||
| 风险项 | 风险等级 | 风险描述 | 应对措施 |
|
||||
|-------|---------|---------|---------|
|
||||
| 类型转换错误 | 高 | WebSocket服务可能无法正确处理Service层返回的Vo对象,导致类型转换错误 | 1. 全面分析WebSocket服务的类型处理逻辑<br>2. 编写详细的测试用例<br>3. 进行充分的测试和验证 |
|
||||
| 序列化失败 | 高 | Vo对象可能无法正确序列化,导致WebSocket消息传输失败 | 1. 确保Vo对象实现了Serializable接口<br>2. 检查Vo对象的序列化方式<br>3. 必要时,为Vo对象添加额外的序列化支持 |
|
||||
| 泛型关系不匹配 | 中 | WebSocket服务的泛型参数可能与Service层返回的Vo对象类型不匹配,导致编译错误或运行时异常 | 1. 全面分析WebSocket服务的泛型关系<br>2. 调整泛型参数,确保与Service层返回的Vo对象类型相匹配<br>3. 进行充分的测试和验证 |
|
||||
|
||||
### 操作指引:
|
||||
1. 确定部署时间窗口
|
||||
2. 制定回滚策略
|
||||
3. 准备部署脚本
|
||||
4. 通知相关人员
|
||||
## 4. 支持与资源需求
|
||||
|
||||
## 7. 上线后监控
|
||||
### 4.1 人力资源需求
|
||||
|
||||
上线后进行持续监控,确保系统运行稳定。
|
||||
- **开发人员**:2名,负责WebSocket服务的分析、修改和测试
|
||||
- **测试人员**:1名,负责编写测试用例和进行测试验证
|
||||
- **技术专家**:1名,负责解决复杂的技术问题
|
||||
|
||||
### 操作指引:
|
||||
1. 设置监控指标
|
||||
2. 配置告警机制
|
||||
3. 定期检查系统运行状态
|
||||
4. 及时处理异常情况
|
||||
### 4.2 技术资源需求
|
||||
|
||||
- **开发环境**:JDK 21、Spring Boot 3.3.7、WebSocket支持
|
||||
- **测试环境**:完整的服务器环境,包括Redis、MySQL等
|
||||
- **测试工具**:JUnit、Mockito、Postman等
|
||||
|
||||
### 4.3 文档资源需求
|
||||
|
||||
- **Service层改造文档**:提供Service层改造的详细信息,包括接口定义、方法签名、返回类型等
|
||||
- **Vo对象定义文档**:提供Vo对象的定义和实现的详细信息
|
||||
- **WebSocket服务文档**:提供WebSocket服务的架构、组件和实现的详细信息
|
||||
|
||||
## 5. 关键决策点
|
||||
|
||||
### 5.1 WebSocket服务兼容性处理关键决策点
|
||||
|
||||
1. **类型处理策略决策**:
|
||||
- 是修改WebSocket服务的类型处理逻辑,还是在Service层添加额外的转换逻辑?
|
||||
- 决策依据:性能、可维护性、兼容性
|
||||
|
||||
2. **序列化策略决策**:
|
||||
- 是修改Vo对象的序列化方式,还是在WebSocket服务中添加额外的序列化支持?
|
||||
- 决策依据:性能、可维护性、兼容性
|
||||
|
||||
3. **泛型关系调整决策**:
|
||||
- 是调整WebSocket服务的泛型参数,还是保持现有泛型参数并在运行时进行类型转换?
|
||||
- 决策依据:性能、可维护性、兼容性
|
||||
|
||||
## 6. 操作指引
|
||||
|
||||
### 6.1 WebSocket服务兼容性处理操作指引
|
||||
|
||||
1. **分析阶段**:
|
||||
- 使用IDE的搜索功能,查找所有与WebSocket相关的类和方法
|
||||
- 分析这些类和方法是如何处理Service层返回的对象的
|
||||
- 记录可能存在的问题和风险
|
||||
|
||||
2. **设计阶段**:
|
||||
- 根据分析结果,设计修改方案
|
||||
- 确定需要修改的类和方法
|
||||
- 确定修改的具体内容和方式
|
||||
|
||||
3. **实现阶段**:
|
||||
- 按照设计方案,逐步修改代码
|
||||
- 确保修改后的代码能够正确处理Service层返回的Vo对象
|
||||
- 确保代码符合项目规范和质量要求
|
||||
|
||||
4. **测试阶段**:
|
||||
- 编写测试用例,验证修改后的代码是否能够正确工作
|
||||
- 测试不同类型的Vo对象的序列化和反序列化
|
||||
- 测试WebSocket服务与Service层的交互是否正常
|
||||
|
||||
5. **验证阶段**:
|
||||
- 进行集成测试,验证整个系统是否能够正常工作
|
||||
- 进行性能测试,验证修改后的系统性能是否符合要求
|
||||
- 记录测试结果,生成验证报告
|
||||
|
||||
## 7. 文档变更记录
|
||||
|
||||
| 版本 | 变更日期 | 变更内容 | 变更人 |
|
||||
|------|---------|---------|-------|
|
||||
| 1.0 | 2024-03-15 | 创建文档,完成WebSocket服务兼容性处理的待办事项描述 | 开发团队 |
|
||||
| 1.1 | - | 更新风险评估和应对措施 | 开发团队 |
|
||||
| 1.2 | - | 添加支持与资源需求和关键决策点 | 开发团队 |
|
||||
Reference in New Issue
Block a user