031850-宝箱系统重大更新.md 4.4 KB

宝箱系统重大更新

任务时间: 2025年6月3日 18:50
任务状态: ✅ 已完成
任务类型: 系统重构

任务概述

对宝箱系统进行重大更新,抛弃原有的宝箱内容配置和开启消耗配置,改用统一的消耗组/奖励组/条件组系统来管理宝箱开启消耗和产出。

主要变更

1. 数据库结构调整

  • 创建新表: kku_item_chest_configs 宝箱配置表
  • 字段设计:
    • item_id - 宝箱物品ID
    • consume_group_id - 消耗组ID(可为空)
    • reward_group_id - 奖励组ID(必填)
    • condition_group_id - 条件组ID(可为空)
    • is_active - 激活状态

2. 模型层更新

  • 新增模型: ItemChestConfig 宝箱配置模型
  • 关联关系: 与消耗组、奖励组、条件组建立关联
  • 访问器: 提供配置状态和组名称的访问器

3. 服务层重构

  • 重构服务: ChestService 使用新的组系统架构
  • 核心方法:
    • openChest() - 基于组系统的宝箱开启
    • getChestContentPreview() - 宝箱内容预览
    • canOpenChest() - 开启条件检查

4. Handler层适配

  • 更新Handler: OpenBoxHandler 适配新的服务层
  • 移除版本标识: 统一使用新系统,不再区分版本

5. 后台管理增强

  • 新增控制器: ItemChestConfigController 宝箱配置管理
  • 新增仓库: ItemChestConfigRepository 数据访问层
  • 新增操作: ChestNewManageAction 宝箱配置管理按钮

6. 数据迁移工具

  • 迁移命令: MigrateChestToGroupSystemCommand
  • 功能特性:
    • 支持预览模式和实际执行
    • 自动转换现有配置为组系统
    • 完整的错误处理和日志记录

技术特点

架构优势

  1. 统一管理: 使用统一的组系统架构
  2. 配置复用: 支持消耗组和奖励组的复用
  3. 灵活扩展: 支持条件组的前置条件控制
  4. 状态管理: 支持配置的激活/停用控制

兼容性设计

  1. 向后兼容: 保留原有数据表和代码
  2. 渐进迁移: 支持新旧系统并存
  3. 安全回滚: 可随时切换回原有系统

性能优化

  1. 减少查询: 统一的组服务减少数据库查询
  2. 批量操作: 支持组级别的批量操作
  3. 缓存友好: 与现有缓存机制兼容

文件清单

核心文件

  • app/Module/GameItems/Models/ItemChestConfig.php - 宝箱配置模型
  • app/Module/GameItems/Services/ChestService.php - 宝箱服务
  • app/Module/AppGame/Handler/Item/OpenBoxHandler.php - 宝箱开启Handler

后台管理

  • app/Module/GameItems/AdminControllers/ItemChestConfigController.php - 配置控制器
  • app/Module/GameItems/Repositories/ItemChestConfigRepository.php - 配置仓库
  • app/Module/GameItems/AdminControllers/Actions/ChestNewManageAction.php - 管理操作

数据库相关

  • app/Module/GameItems/Databases/GenerateSql/item_items_chest_groups_update.sql - 建表SQL
  • app/Module/GameItems/Console/Commands/UpdateChestDatabaseCommand.php - 数据库更新命令
  • app/Module/GameItems/Console/Commands/MigrateChestToGroupSystemCommand.php - 数据迁移命令

文档

  • app/Module/GameItems/Docs/宝箱系统重大更新说明.md - 详细说明文档

使用指南

数据库更新

# 创建宝箱配置表
php artisan gameitems:update-chest-database

数据迁移

# 预览迁移(不实际执行)
php artisan gameitems:migrate-chest-to-groups --dry-run

# 执行迁移
php artisan gameitems:migrate-chest-to-groups

后台管理

  1. 访问 /admin/game-items/chest-configs 管理宝箱配置
  2. 在物品管理中点击"宝箱配置"按钮查看配置状态
  3. 通过配置界面设置消耗组、奖励组和条件组

注意事项

  1. 保底机制: 新系统暂不支持保底机制,如需保底功能请继续使用原系统
  2. 数据备份: 执行迁移前建议备份相关数据表
  3. 测试验证: 迁移后需要充分测试宝箱开启功能
  4. 渐进升级: 建议先在测试环境验证,再逐步应用到生产环境

后续计划

  1. 保底机制: 在新系统中实现保底功能
  2. 性能优化: 进一步优化组系统的查询性能
  3. 功能扩展: 支持更多类型的条件组和奖励模式
  4. 监控告警: 添加宝箱开启的监控和异常告警

任务完成: 宝箱系统重大更新已完成,新系统已投入使用,支持更灵活的配置管理和更好的扩展性。