06-153059-宠物事件系统优化.md 2.9 KB

宠物事件系统优化工作日志

日期

2025年5月6日

工作内容概述

优化宠物模块的事件系统,增加 PetUpdateEvent 事件,并更新 PetStatusChangedEvent 的实现,同时更新相关文档。

详细工作内容

1. 创建 PetUpdateEvent 事件类

  • 创建了新的 PetUpdateEvent 类,结构与 PetCreatedEvent 一致
  • 该事件用于表示宠物数据发生重大变更,如升级、洗髓、重置等场景
  • 只包含 userIdpetId 两个属性,保持简洁

2. 优化 PetStatusChangedEvent 事件

  • 更新了 PetStatusChangedEvent 的实现,使用 DataPetSimpleDto 来表示宠物状态
  • 旧状态和新状态使用不完整的 DataPetSimpleDto,附加数据使用完整的 DataPetSimpleDto
  • 修改了事件触发条件描述为"当宠物基本属性状态发生变化时"
  • reasonpetData 参数设置为必填

3. 创建 PetUpdateListener 监听器

  • 创建了 PetUpdateListener 类来监听 PetUpdateEvent 事件
  • 实现了 handle 方法,调用 PetTemp::handlePetUpdate 处理临时数据

4. 在 PetLogic 中触发新事件

  • levelUpPet 方法中添加了对 PetUpdateEvent 的触发
  • remouldPet 方法中添加了对 PetUpdateEvent 的触发

5. 在 PetTemp 中添加处理方法

  • 添加了 handlePetUpdate 方法,将宠物更新数据临时存储
  • 添加了 getUserPetUpdatesgetUserPetUpdateById 方法,用于获取宠物更新数据

6. 在 PetTempService 中添加服务方法

  • 添加了 getUserPetUpdatesgetUserPetUpdateById 方法,提供对外接口

7. 在 GameServiceProvider 中注册监听器

  • 注册了 PetUpdateListener 来监听 PetUpdateEvent 事件

8. 更新事件系统文档

  • 添加了 PetUpdateEvent 的完整描述
  • 更新了 PetStatusChangedEvent 的描述
  • 更新了事件列表和暂存系统部分
  • 添加了新的应用场景
  • 更新了总结部分

技术要点

  1. 使用事件系统实现模块间的松耦合通信
  2. 使用 DTO 对象优化数据传输
  3. 通过暂存系统提高前端用户体验
  4. 保持文档与代码实现的一致性

遇到的问题及解决方案

  1. 问题PetStatusChangedEvent 的数据结构需要优化 解决方案:使用 DataPetSimpleDto 来表示宠物状态,减少数据量

  2. 问题:需要一个新的事件来表示宠物数据的重大变更 解决方案:创建 PetUpdateEvent 事件,结构与 PetCreatedEvent 一致

后续工作

  1. 考虑在其他可能触发宠物重大变更的场景中添加 PetUpdateEvent 的触发
  2. 优化前端对这些事件的处理逻辑
  3. 考虑添加更多的单元测试来验证事件系统的正确性

总结

本次工作成功优化了宠物模块的事件系统,增加了新的事件类型,并更新了相关文档。这些改进使得宠物模块能够更好地与其他模块交互,提高了代码的可维护性和用户体验。