SHOP_MODIFICATION_SUMMARY.md 3.4 KB

商店模块修改总结

修改概述

根据需求,对商店模块进行了以下主要修改:

  1. 商店商品表增加分类名字字段 - 添加 category_name 字段(字符串格式)
  2. 移除商品表的旧字段
    • item_id (关联的物品ID)
    • item_quantity (物品数量)
    • price (价格)
    • currency_id (货币类型ID)
  3. 添加新的关联字段
    • consume_group_id (关联消耗组)
    • reward_group_id (关联奖励组)

修改的文件列表

1. 数据库相关

  • app/Module/Shop/Databases/GenerateSql/shop_items.sql - 更新表结构定义
  • database/migrations/modify_shop_items_table.sql - 数据库迁移脚本

2. 模型文件

  • app/Module/Shop/Models/ShopItem.php - 更新模型属性和关联关系

3. 控制器文件

  • app/Module/Shop/AdminControllers/ShopItemController.php - 更新后台管理界面

4. 服务类文件

  • app/Module/Shop/Services/ShopService.php - 更新业务逻辑

5. 文档文件

  • app/Module/Shop/README.md - 更新表结构说明

数据库表结构变更

新增字段

`category_name` varchar(100) DEFAULT NULL COMMENT '分类名称(字符串格式,区别于现有分类机制)'
`consume_group_id` int unsigned DEFAULT NULL COMMENT '消耗组ID,外键关联kku_game_consume_groups表'
`reward_group_id` int unsigned DEFAULT NULL COMMENT '奖励组ID,外键关联kku_game_reward_groups表'

删除字段

`item_id` int unsigned NOT NULL COMMENT '关联的物品ID,外键关联kku_item_items表'
`item_quantity` int NOT NULL DEFAULT '1' COMMENT '物品数量'
`price` int NOT NULL COMMENT '价格'
`currency_id` int unsigned NOT NULL COMMENT '货币类型ID'

索引变更

  • 删除索引:shop_items_item_id_index, shop_items_currency_id_index
  • 新增索引:shop_items_consume_group_id_index, shop_items_reward_group_id_index

模型关联关系变更

删除的关联关系

  • item() - 关联物品表

新增的关联关系

  • consumeGroup() - 关联消耗组表
  • rewardGroup() - 关联奖励组表

需要进一步实现的功能

1. 消耗组和奖励组服务

需要实现以下服务类:

  • ConsumeService::consume() - 处理资源消耗
  • RewardService::giveReward() - 处理奖励发放

2. 购买逻辑重构

当前购买逻辑已标记为 TODO,需要:

  • 实现基于消耗组的资源扣除
  • 实现基于奖励组的奖励发放
  • 更新购买记录的存储逻辑

3. 价格计算逻辑

由于不再有固定价格,需要:

  • 基于消耗组计算"价格"概念
  • 更新促销活动的折扣计算逻辑

执行数据库迁移

在开发环境中执行以下 SQL 脚本:

mysql -u username -p database_name < database/migrations/modify_shop_items_table.sql

注意事项

  1. 数据丢失警告:此修改会删除现有的商品价格和物品关联数据,仅适用于开发环境
  2. 业务逻辑变更:购买流程从固定价格+物品模式改为消耗组+奖励组模式
  3. 向后兼容性:部分旧的 API 接口可能需要调整以适应新的数据结构
  4. 测试需求:建议在修改后进行全面的功能测试

后续开发建议

  1. 优先实现消耗组和奖励组的服务类
  2. 完善购买逻辑的 TODO 部分
  3. 更新相关的单元测试
  4. 考虑添加数据迁移工具,将旧数据转换为新格式