03日1351-商店商品增加JSON配置表逻辑.md 4.9 KB

商店商品增加JSON配置表逻辑

任务时间: 2025年06月03日 13:51
任务类型: 功能开发
任务状态: ✅ 已完成

任务描述

为商店商品增加JSON配置表逻辑,参考GenerateItemsJsonCommand模式,关联更新后台和JsonController。

实现内容

1. 核心文件创建

1.1 命令类

  • 文件: app/Module/Shop/Commands/GenerateShopItemsJsonCommand.php
  • 功能: 生成商店商品JSON配置表数据
  • 特点:
    • 查询激活的商店商品
    • 预加载关联数据(分类、消耗组、奖励组、限购配置)
    • 过滤上架/下架时间
    • 按排序权重和ID排序

1.2 缓存配置类

  • 文件: app/Module/Game/DCache/ShopItemsJsonConfig.php
  • 功能: 缓存管理和文件保存
  • 特点:
    • 缓存时间:1小时
    • 防重复执行:10分钟
    • 自动保存到public/json/shop_items.json

1.3 同步工具类

  • 文件: app/Module/Shop/AdminControllers/Tools/SyncShopItemsJsonTool.php
  • 功能: 后台管理界面同步按钮
  • 特点: 支持手动触发JSON生成

2. 系统集成

2.1 JsonController更新

  • 文件: app/Module/AppGame/HttpControllers/JsonController.php
  • 修改: 添加shop_items配置表映射
  • 访问: /json/shop_items.json

2.2 后台管理更新

  • 文件: app/Module/Shop/AdminControllers/ShopItemController.php
  • 修改: 添加"同步商品JSON"按钮到工具栏

2.3 服务提供者注册

  • 文件: app/Module/Shop/Providers/ShopServiceProvider.php
  • 修改: 注册GenerateShopItemsJsonCommand命令
  • 文件: config/app.php
  • 修改: 注册Shop模块ServiceProvider

3. 文档和说明

3.1 目录说明

  • 文件: public/json/README.md
  • 内容: JSON配置表目录说明,声明自动生成不可修改

3.2 详细文档

  • 文件: app/Module/Shop/Docs/商店商品配置表.md
  • 内容: 完整的配置表使用说明和技术文档

JSON数据结构

{
  "generated_ts": 1748930537,
  "generated_at": "2025-06-03 14:02:17",
  "shop_items": [
    {
      "id": 17,
      "name": "丰收之神x1",
      "description": "供奉丰收之神,保护所有土地的产量奖励最大化,有效期24小时",
      "category_id": 6,
      "category_name": "神器",
      "consume_group_id": 23,
      "reward_group_id": 22,
      "max_single_buy": 1,
      "sort_order": 12,
      "display_attributes": {
        "icon": "",
        "color": "",
        "tag": "",
        "background": "",
        "badge": "",
        "quality": 1,
        "is_hot": false,
        "is_new": false,
        "is_limited": false
      },
      "start_time": null,
      "end_time": null,
      "category": {
        "id": 6,
        "name": "神像类"
      },
      "consume_group": {
        "id": 23,
        "name": "商店-神器消耗2880钻",
        "description": "购买神器类商品消耗2880钻石",
        "items": [...]
      },
      "reward_group": {
        "id": 22,
        "name": "商店-丰收之神奖励",
        "description": "购买丰收之神获得的奖励",
        "items": [...]
      }
    }
  ]
}

使用方式

1. 命令行生成

php artisan shop:generate-json

2. 后台管理

  • 进入商店商品管理页面
  • 点击"同步商品JSON"按钮

3. API访问

  • 直接访问: /json/shop_items.json
  • API接口: /json/shop_items.json

4. 服务端调用

use App\Module\Game\DCache\ShopItemsJsonConfig;

// 获取配置数据
$config = ShopItemsJsonConfig::getData();

// 强制刷新
$config = ShopItemsJsonConfig::getData([], true);

功能特点

  1. 完整数据: 包含商品基础信息、消耗组、奖励组、限购配置
  2. 智能过滤: 自动过滤激活商品和有效时间范围
  3. 缓存机制: 支持缓存和防重复生成
  4. 文件保存: 自动保存到public/json目录
  5. 后台集成: 支持后台管理界面操作
  6. API支持: 提供标准的JSON API访问

测试验证

  1. ✅ 命令行生成测试通过
  2. ✅ JSON文件成功生成到public/json/shop_items.json
  3. ✅ 数据结构完整,包含所有必要字段
  4. ✅ 关联数据正确加载(分类、消耗组、奖励组)
  5. ✅ 后台同步按钮集成完成

技术要点

  1. 参考模式: 完全参考GenerateItemsJsonCommand的实现模式
  2. 数据预加载: 使用Eloquent的with方法预加载关联数据
  3. 文件保存: 在缓存类中实现自动文件保存功能
  4. 错误处理: 完善的异常处理和日志记录
  5. 权限管理: 确保public/json目录的写入权限

后续优化建议

  1. 可考虑添加增量更新机制
  2. 可添加配置表版本控制
  3. 可优化大数据量的性能表现
  4. 可添加配置表数据验证机制

任务完成时间: 2025年06月03日 14:02
代码提交: 已提交并推送到远程仓库
文档更新: 已创建完整的技术文档