Browse Source

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

- 创建GenerateShopItemsJsonCommand命令类,支持生成商店商品JSON配置
- 创建ShopItemsJsonConfig缓存类,支持缓存和文件保存
- 在JsonController中添加shop_items配置表映射
- 在ShopItemController中添加同步JSON功能按钮
- 创建SyncShopItemsJsonTool工具类,支持后台手动同步
- 在ShopServiceProvider中注册命令
- 在config/app.php中注册Shop模块ServiceProvider
- 创建public/json目录和README.md说明文档
- 创建商店商品配置表详细文档

功能特点:
- 支持命令行和后台管理界面两种生成方式
- 包含完整的商品信息、消耗组、奖励组、限购配置
- 自动过滤激活商品和时间范围
- 支持缓存机制和文件保存
- 提供详细的API访问接口
notfff 7 months ago
parent
commit
8457fca50b

+ 2 - 0
app/Module/AppGame/HttpControllers/JsonController.php

@@ -15,6 +15,7 @@ use App\Module\Game\DCache\PetConfigJsonConfig;
 use App\Module\Game\DCache\PetLevelJsonConfig;
 use App\Module\Game\DCache\PetSkillJsonConfig;
 use App\Module\Game\DCache\RecipeJsonConfig;
+use App\Module\Game\DCache\ShopItemsJsonConfig;
 use Illuminate\Support\Facades\Log;
 use UCore\Exception\HandleNotException;
 use Uraus\Kku\Common\RESPONSE_CODE;
@@ -51,6 +52,7 @@ class JsonController extends Controller
             'recipe' => RecipeJsonConfig::class,
             'dismantle' => DismantleJsonConfig::class,
             'farm_seed' => FarmSeedJsonConfig::class,
+            'shop_items' => ShopItemsJsonConfig::class,
         ];
 
         // 检查请求的配置表是否存在

+ 90 - 0
app/Module/Game/DCache/ShopItemsJsonConfig.php

@@ -0,0 +1,90 @@
+<?php
+
+namespace App\Module\Game\DCache;
+
+use App\Module\Shop\Commands\GenerateShopItemsJsonCommand;
+use App\Module\LCache\DQueueJob;
+use Illuminate\Support\Facades\File;
+use Illuminate\Support\Facades\Log;
+
+/**
+ * 商店商品配置表缓存
+ */
+class ShopItemsJsonConfig extends DQueueJob
+{
+    /**
+     * 获取新数据
+     *
+     * @param array $parameter 参数
+     * @return mixed
+     */
+    static public function getNewData(array $parameter = [])
+    {
+        $data = GenerateShopItemsJsonCommand::generateJson();
+
+        // 保存JSON文件到public/json目录
+        if ($data !== false) {
+            self::saveJsonFile($data);
+        }
+
+        return $data;
+    }
+
+    /**
+     * 保存JSON文件到文件系统
+     *
+     * @param array $data 要保存的数据
+     * @return bool
+     */
+    protected static function saveJsonFile(array $data): bool
+    {
+        try {
+            $jsonDir = public_path('json');
+
+            // 确保目录存在
+            if (!File::exists($jsonDir)) {
+                File::makeDirectory($jsonDir, 0755, true);
+            }
+
+            $filePath = $jsonDir . '/shop_items.json';
+            $jsonContent = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
+
+            File::put($filePath, $jsonContent);
+
+            return true;
+        } catch (\Exception $e) {
+            Log::error('保存商店商品JSON文件失败: ' . $e->getMessage());
+            return false;
+        }
+    }
+
+    /**
+     * 获取缓存时间(秒)
+     *
+     * @return int
+     */
+    static public function getTtl(): int
+    {
+        return 3600; // 1小时
+    }
+
+    /**
+     * 获取防重复执行时间(秒)
+     *
+     * @return int
+     */
+    static public function getPreventDuplication(): int
+    {
+        return 600; // 10分钟
+    }
+
+    /**
+     * 获取必需参数索引
+     *
+     * @return array
+     */
+    static public function getRequiredArgIndex(): array
+    {
+        return [];
+    }
+}

+ 4 - 0
app/Module/Shop/AdminControllers/ShopItemController.php

@@ -5,6 +5,7 @@ namespace App\Module\Shop\AdminControllers;
 use App\Module\Activity\AdminControllers\Helper\FormHelper;
 use App\Module\Shop\Models\ShopCategory;
 use App\Module\Shop\Repositorys\ShopItemRepository;
+use App\Module\Shop\AdminControllers\Tools\SyncShopItemsJsonTool;
 use App\Module\Game\Models\GameConsumeGroup;
 use App\Module\Game\Models\GameRewardGroup;
 use Dcat\Admin\Form;
@@ -127,6 +128,9 @@ class ShopItemController extends AdminController
 
             // 工具栏
             $grid->toolsWithOutline(false);
+            $grid->tools(function (Grid\Tools $tools) {
+                $tools->append(new SyncShopItemsJsonTool());
+            });
             $grid->disableViewButton();
             $grid->showQuickEditButton();
             $grid->enableDialogCreate();

+ 84 - 0
app/Module/Shop/AdminControllers/Tools/SyncShopItemsJsonTool.php

@@ -0,0 +1,84 @@
+<?php
+
+namespace App\Module\Shop\AdminControllers\Tools;
+
+use App\Module\Game\DCache\ShopItemsJsonConfig;
+use Dcat\Admin\Grid\Tools\AbstractTool;
+use Illuminate\Http\Request;
+use Illuminate\Support\Facades\Log;
+
+/**
+ * 同步商店商品JSON配置表工具
+ */
+class SyncShopItemsJsonTool extends AbstractTool
+{
+    /**
+     * 按钮样式
+     *
+     * @var string
+     */
+    protected $style = 'btn btn-success waves-effect';
+
+    /**
+     * 按钮标题
+     *
+     * @return string
+     */
+    public function title()
+    {
+        return '同步商品JSON';
+    }
+
+    /**
+     * 确认提示
+     *
+     * @return string
+     */
+    public function confirm()
+    {
+        return '确定要立即同步商店商品JSON数据吗?';
+    }
+
+    /**
+     * 处理请求
+     *
+     * @param Request $request
+     * @return \Dcat\Admin\Actions\Response
+     */
+    public function handle(Request $request)
+    {
+        try {
+            // 强制刷新商店商品JSON配置
+            $result = ShopItemsJsonConfig::getData([], true);
+            
+            if ($result) {
+                Log::info('商店商品JSON配置表同步成功', [
+                    'operator' => admin_user()->name ?? 'unknown',
+                    'time' => now()->toDateTimeString()
+                ]);
+                
+                return $this->response()
+                    ->success('商店商品JSON配置表同步成功!')
+                    ->refresh();
+            } else {
+                Log::error('商店商品JSON配置表同步失败', [
+                    'operator' => admin_user()->name ?? 'unknown',
+                    'time' => now()->toDateTimeString()
+                ]);
+                
+                return $this->response()
+                    ->error('商店商品JSON配置表同步失败,请检查日志!');
+            }
+        } catch (\Exception $e) {
+            Log::error('商店商品JSON配置表同步异常', [
+                'error' => $e->getMessage(),
+                'trace' => $e->getTraceAsString(),
+                'operator' => admin_user()->name ?? 'unknown',
+                'time' => now()->toDateTimeString()
+            ]);
+            
+            return $this->response()
+                ->error('商店商品JSON配置表同步异常:' . $e->getMessage());
+        }
+    }
+}

+ 172 - 0
app/Module/Shop/Commands/GenerateShopItemsJsonCommand.php

@@ -0,0 +1,172 @@
+<?php
+
+namespace App\Module\Shop\Commands;
+
+use App\Module\Game\DCache\ShopItemsJsonConfig;
+use App\Module\Game\Services\JsonConfigService;
+use Carbon\Carbon;
+use Illuminate\Console\Command;
+use App\Module\Shop\Models\ShopItem;
+use Illuminate\Support\Facades\Log;
+
+/**
+ * 生成商店商品配置表JSON数据命令
+ *
+ * 该命令用于从数据库中的商店商品表生成商品JSON数据文件,供客户端使用。
+ * 生成的JSON文件包含商品的基本信息,如ID、名称、描述、消耗组、奖励组和展示属性等。
+ * 该命令通常在商店商品数据更新后运行,以确保客户端获取最新的商品数据。
+ */
+class GenerateShopItemsJsonCommand extends Command
+{
+
+    /**
+     * 命令名称和签名
+     *
+     * @var string
+     */
+    protected $signature = 'shop:generate-json';
+
+    /**
+     * 命令描述
+     *
+     * @var string
+     */
+    protected $description = 'Generate shop_items.json from ShopItem table';
+
+    /**
+     * 执行命令
+     */
+    /**
+     * 生成商店商品JSON数据
+     *
+     * @return array|bool 生成的数据或失败标志
+     */
+    public static function generateJson()
+    {
+        try {
+            // 查询ShopItem表中的激活商品数据,并预加载关联数据
+            $shopItems = ShopItem::query()
+                ->with([
+                    'category',
+                    'consumeGroup.consumeItems',
+                    'rewardGroup.rewardItems',
+                    'activePurchaseLimits'
+                ])
+                ->where('is_active', 1)
+                ->where(function ($query) {
+                    // 检查上架时间
+                    $query->whereNull('start_time')
+                        ->orWhere('start_time', '<=', now());
+                })
+                ->where(function ($query) {
+                    // 检查下架时间
+                    $query->whereNull('end_time')
+                        ->orWhere('end_time', '>=', now());
+                })
+                ->orderBy('sort_order', 'desc')
+                ->orderBy('id', 'asc')
+                ->get()
+                ->map(function ($item) {
+                    // 构建商品数据
+                    $itemData = [
+                        'id' => $item->id,
+                        'name' => $item->name,
+                        'description' => $item->description,
+                        'category_id' => $item->category_id,
+                        'category_name' => $item->category_name,
+                        'consume_group_id' => $item->consume_group_id,
+                        'reward_group_id' => $item->reward_group_id,
+                        'max_single_buy' => $item->max_single_buy,
+                        'sort_order' => $item->sort_order,
+                        'display_attributes' => $item->display_attributes,
+                        'start_time' => $item->start_time ? $item->start_time->toDateTimeString() : null,
+                        'end_time' => $item->end_time ? $item->end_time->toDateTimeString() : null,
+                    ];
+
+                    // 添加分类信息
+                    if ($item->category) {
+                        $itemData['category'] = [
+                            'id' => $item->category->id,
+                            'name' => $item->category->name,
+                        ];
+                    }
+
+                    // 添加消耗组信息
+                    if ($item->consumeGroup) {
+                        $itemData['consume_group'] = [
+                            'id' => $item->consumeGroup->id,
+                            'name' => $item->consumeGroup->name,
+                            'description' => $item->consumeGroup->description,
+                            'items' => $item->consumeGroup->consumeItems->map(function ($consumeItem) {
+                                return [
+                                    'type' => $consumeItem->type,
+                                    'target_id' => $consumeItem->target_id,
+                                    'quantity' => $consumeItem->quantity,
+                                    'name' => $consumeItem->name,
+                                ];
+                            })->toArray()
+                        ];
+                    }
+
+                    // 添加奖励组信息
+                    if ($item->rewardGroup) {
+                        $itemData['reward_group'] = [
+                            'id' => $item->rewardGroup->id,
+                            'name' => $item->rewardGroup->name,
+                            'description' => $item->rewardGroup->description,
+                            'items' => $item->rewardGroup->rewardItems->map(function ($rewardItem) {
+                                return [
+                                    'type' => $rewardItem->type,
+                                    'target_id' => $rewardItem->target_id,
+                                    'min_quantity' => $rewardItem->min_quantity,
+                                    'max_quantity' => $rewardItem->max_quantity,
+                                    'probability' => $rewardItem->probability,
+                                    'is_guaranteed' => $rewardItem->is_guaranteed,
+                                    'name' => $rewardItem->name,
+                                ];
+                            })->toArray()
+                        ];
+                    }
+
+                    // 添加限购信息
+                    if ($item->activePurchaseLimits->isNotEmpty()) {
+                        $itemData['purchase_limits'] = $item->activePurchaseLimits->map(function ($limit) {
+                            return [
+                                'id' => $limit->id,
+                                'type' => $limit->type,
+                                'period' => $limit->period,
+                                'max_quantity' => $limit->max_quantity,
+                                'description' => $limit->description,
+                            ];
+                        })->toArray();
+                    }
+
+                    return $itemData;
+                })
+                ->toArray();
+
+            // 准备完整数据,包含生成时间
+            $data = [
+                'generated_ts' => time(),
+                'generated_at' => now()->toDateTimeString(),
+                'shop_items' => $shopItems
+            ];
+
+            return $data;
+        } catch (\Exception $e) {
+            Log::error('Generate shop_items.json failed: ' . $e->getMessage());
+
+            return false;
+        }
+    }
+
+    public function handle()
+    {
+        if (ShopItemsJsonConfig::getData([], true)) {
+            $this->info('Successfully generated shop_items.json with timestamp');
+        } else {
+            $this->error('Failed to generate shop_items.json');
+        }
+    }
+
+}

+ 243 - 0
app/Module/Shop/Docs/商店商品配置表.md

@@ -0,0 +1,243 @@
+# 商店商品配置表
+
+## 1. 概述
+
+商店商品配置表是游戏商店系统的核心配置文件,包含了所有商店商品的基础信息、消耗组、奖励组、限购配置等数据。该配置表以JSON格式存储,供客户端和服务端使用。
+
+## 2. 配置表结构
+
+### 2.1 基本信息
+
+- **文件路径**: `public/json/shop_items.json`
+- **生成命令**: `php artisan shop:generate-json`
+- **缓存类**: `App\Module\Game\DCache\ShopItemsJsonConfig`
+- **数据来源**: `kku_shop_items` 表及其关联表
+
+### 2.2 JSON数据结构
+
+```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": [
+          {
+            "type": null,
+            "target_id": 2,
+            "quantity": 2880,
+            "name": null
+          }
+        ]
+      },
+      "reward_group": {
+        "id": 22,
+        "name": "商店-丰收之神奖励",
+        "description": "购买丰收之神获得的奖励",
+        "items": [
+          {
+            "type": null,
+            "target_id": 1,
+            "min_quantity": 1,
+            "max_quantity": 1,
+            "probability": null,
+            "is_guaranteed": true,
+            "name": null
+          }
+        ]
+      }
+    }
+  ]
+}
+```
+
+### 2.3 字段说明
+
+#### 根级字段
+- `generated_ts`: 生成时间戳(Unix时间戳)
+- `generated_at`: 生成时间(可读格式)
+- `shop_items`: 商店商品数组
+
+#### 商品基础字段
+- `id`: 商品ID(主键)
+- `name`: 商品名称
+- `description`: 商品描述
+- `category_id`: 分类ID
+- `category_name`: 分类名称(字符串格式)
+- `consume_group_id`: 消耗组ID
+- `reward_group_id`: 奖励组ID
+- `max_single_buy`: 单次最大购买数量(0表示无限制)
+- `sort_order`: 排序权重
+- `start_time`: 上架时间
+- `end_time`: 下架时间
+
+#### 展示属性字段 (display_attributes)
+- `icon`: 商品图标URL
+- `color`: 商品颜色
+- `tag`: 商品标签
+- `background`: 背景样式
+- `badge`: 徽章样式
+- `quality`: 品质等级
+- `is_hot`: 是否热门商品
+- `is_new`: 是否新品
+- `is_limited`: 是否限量商品
+
+#### 关联数据字段
+- `category`: 分类信息对象
+- `consume_group`: 消耗组详细信息
+- `reward_group`: 奖励组详细信息
+- `purchase_limits`: 限购配置数组(如果存在)
+
+## 3. 配置表生成
+
+### 3.1 生成流程
+
+商店商品配置表JSON的生成由`GenerateShopItemsJsonCommand`命令类负责,主要流程如下:
+
+1. 从数据库查询激活的商店商品信息
+2. 预加载关联的分类、消耗组、奖励组、限购配置数据
+3. 过滤上架时间和下架时间
+4. 格式化数据并生成JSON结构
+5. 通过缓存系统存储生成的数据
+6. 将JSON数据保存到`public/json/shop_items.json`文件
+
+### 3.2 生成命令
+
+可以通过以下命令手动触发商店商品配置表的生成:
+
+```bash
+php artisan shop:generate-json
+```
+
+也可以通过后台管理界面的"同步商品JSON"功能触发生成。
+
+### 3.3 筛选条件
+
+配置表生成时会应用以下筛选条件:
+
+1. **激活状态**: 只包含`is_active = 1`的商品
+2. **上架时间**: 只包含已上架的商品(`start_time <= now()` 或 `start_time` 为空)
+3. **下架时间**: 只包含未下架的商品(`end_time >= now()` 或 `end_time` 为空)
+4. **排序规则**: 按`sort_order`降序,然后按`id`升序
+
+## 4. 缓存机制
+
+商店商品配置表使用`ShopItemsJsonConfig`类进行缓存管理,主要特点:
+
+- **缓存时间**: 3600秒(1小时)
+- **防重复生成时间**: 600秒(10分钟)
+- **自动文件保存**: 生成数据时自动保存到`public/json/shop_items.json`
+- **支持强制刷新**: 通过`getData([], true)`强制刷新
+
+## 5. 配置表使用方法
+
+### 5.1 客户端获取
+
+客户端可以通过以下两种方式获取商店商品配置表数据:
+
+1. **API接口获取**: 通过`/json/shop_items.json`接口动态获取最新的商品配置数据
+2. **静态文件获取**: 直接访问`/json/shop_items.json`文件获取商品配置数据
+
+建议在游戏启动时获取并缓存商店商品配置数据。
+
+### 5.2 服务端使用
+
+服务端可以通过以下方式获取商店商品配置数据:
+
+```php
+use App\Module\Game\DCache\ShopItemsJsonConfig;
+
+// 获取商店商品配置数据
+$shopItemsConfig = ShopItemsJsonConfig::getData();
+
+// 强制刷新配置数据
+$shopItemsConfig = ShopItemsJsonConfig::getData([], true);
+```
+
+### 5.3 与其他配置表的关系
+
+商店商品配置表与其他配置表相互关联:
+
+- **消耗组配置**: 引用游戏消耗组配置表中的消耗组
+- **奖励组配置**: 引用游戏奖励组配置表中的奖励组
+- **物品配置**: 奖励组中的物品引用物品配置表中的物品
+
+## 6. 配置表维护
+
+### 6.1 更新触发
+
+以下操作会触发商店商品配置表的更新:
+
+1. 添加新商品
+2. 修改商品基础信息
+3. 删除商品
+4. 修改商品的消耗组或奖励组
+5. 修改商品的限购配置
+6. 手动触发更新
+
+### 6.2 注意事项
+
+1. **商品ID一旦分配不应更改**: 客户端依赖商品ID进行识别
+2. **消耗组和奖励组变更**: 修改后需要及时更新配置表
+3. **时间配置**: 上架时间和下架时间会影响商品在配置表中的显示
+4. **性能考虑**: 大量商品数据变更时,应考虑性能影响
+
+### 6.3 配置表监控
+
+可以通过以下方式监控配置表状态:
+
+1. 检查生成时间戳是否最新
+2. 验证商品数量是否符合预期
+3. 检查关联数据的完整性
+4. 定期检查配置表文件是否存在
+
+## 7. 故障排除
+
+### 7.1 常见问题
+
+1. **配置表为空**: 检查是否有激活的商品,检查时间筛选条件
+2. **关联数据缺失**: 检查消耗组、奖励组是否存在且有效
+3. **文件生成失败**: 检查`public/json`目录权限
+4. **缓存问题**: 尝试强制刷新缓存
+
+### 7.2 调试方法
+
+1. 查看生成命令的输出日志
+2. 检查Laravel日志文件
+3. 验证数据库中的原始数据
+4. 测试缓存类的直接调用
+
+---
+
+**最后更新时间**: 2025-06-03  
+**维护人员**: 系统开发团队

+ 7 - 0
app/Module/Shop/Providers/ShopServiceProvider.php

@@ -35,6 +35,13 @@ class ShopServiceProvider extends ServiceProvider
      */
     public function boot()
     {
+        // 注册命令
+        if ($this->app->runningInConsole()) {
+            $this->commands([
+                \App\Module\Shop\Commands\GenerateShopItemsJsonCommand::class, // 生成商店商品JSON数据命令
+            ]);
+        }
+
         // 注册后台路由
         $this->registerAdminRoutes();
 

+ 3 - 0
config/app.php

@@ -206,6 +206,9 @@ return [
         // Farm 模块
         \App\Module\Farm\Providers\FarmServiceProvider::class,
 
+        // Shop 模块
+        \App\Module\Shop\Providers\ShopServiceProvider::class,
+
         // SQL日志服务提供者
         App\Providers\SqlLogServiceProvider::class,
     ],

+ 75 - 0
public/json/README.md

@@ -0,0 +1,75 @@
+# JSON配置表目录
+
+## 重要说明
+
+**此目录下的所有JSON文件均为系统自动生成,请勿手动修改!**
+
+## 文件说明
+
+本目录包含游戏系统的各种配置表JSON文件,这些文件由后台系统自动生成并定期更新:
+
+### 物品相关配置表
+- `items.json` - 物品配置表,包含所有游戏物品的基础信息
+- `chest.json` - 宝箱配置表,包含宝箱开启规则和奖励配置
+- `dismantle.json` - 物品分解配置表,包含物品分解规则和奖励
+- `recipe.json` - 合成配方配置表,包含物品合成规则
+
+### 商店相关配置表
+- `shop_items.json` - 商店商品配置表,包含商店商品信息、消耗组、奖励组等
+
+### 农场相关配置表
+- `farm_house.json` - 农场房屋配置表
+- `farm_land.json` - 农场土地配置表
+- `farm_shrine.json` - 农场神社配置表
+- `farm_seed.json` - 农场种子配置表
+
+### 宠物相关配置表
+- `pet_config.json` - 宠物配置表
+- `pet_levels.json` - 宠物等级配置表
+- `pet_skills.json` - 宠物技能配置表
+
+### 货币相关配置表
+- `currencies.json` - 货币配置表
+
+## 更新机制
+
+这些JSON文件会在以下情况下自动更新:
+
+1. **数据变更时** - 当相关数据在后台管理系统中被修改时
+2. **手动同步时** - 通过后台管理界面的"同步JSON"功能触发
+3. **命令行更新** - 通过相应的artisan命令手动触发
+4. **缓存过期时** - 当缓存过期时系统会自动重新生成
+
+## 访问方式
+
+客户端可以通过以下URL访问这些配置文件:
+
+```
+http://[domain]/json/[filename].json
+```
+
+例如:
+- `http://[domain]/json/items.json`
+- `http://[domain]/json/shop_items.json`
+- `http://[domain]/json/chest.json`
+
+## 注意事项
+
+1. **禁止手动编辑** - 任何手动修改都会在下次自动更新时被覆盖
+2. **版本控制** - 这些文件不应该被加入版本控制系统
+3. **备份策略** - 如需备份,请备份数据库而非这些JSON文件
+4. **缓存机制** - 文件更新可能有延迟,建议配合缓存机制使用
+
+## 故障排除
+
+如果发现配置文件内容异常:
+
+1. 检查后台数据是否正确
+2. 通过后台管理界面手动触发同步
+3. 检查系统日志获取详细错误信息
+4. 联系系统管理员处理
+
+---
+
+**最后更新时间:** 2025-06-03
+**维护人员:** 系统自动生成

+ 1074 - 0
public/json/shop_items.json

@@ -0,0 +1,1074 @@
+{
+    "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": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 2880,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 22,
+                "name": "商店-丰收之神奖励",
+                "description": "购买丰收之神获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 16,
+            "name": "雨露之神x1",
+            "description": "供奉雨露之神,保护所有土地不受干旱危害,有效期24小时",
+            "category_id": 6,
+            "category_name": "神器",
+            "consume_group_id": 22,
+            "reward_group_id": 21,
+            "max_single_buy": 1,
+            "sort_order": 11,
+            "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": 22,
+                "name": "商店-神器消耗700钻",
+                "description": "购买神器类商品消耗700钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 700,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 21,
+                "name": "商店-雨露之神奖励",
+                "description": "购买雨露之神获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 15,
+            "name": "蝗虫之神x1",
+            "description": "供奉蝗虫之神,保护所有土地不受虫害危害,有效期24小时",
+            "category_id": 6,
+            "category_name": "神器",
+            "consume_group_id": 22,
+            "reward_group_id": 20,
+            "max_single_buy": 1,
+            "sort_order": 10,
+            "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": 22,
+                "name": "商店-神器消耗700钻",
+                "description": "购买神器类商品消耗700钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 700,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 20,
+                "name": "商店-除虫之神奖励",
+                "description": "购买 除虫之神获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 14,
+            "name": "蚱蜢之神x1",
+            "description": "供奉蚱蜢之神,保护所有土地不受蚱蜢危害,有效期24小时",
+            "category_id": 6,
+            "category_name": "神器",
+            "consume_group_id": 22,
+            "reward_group_id": 19,
+            "max_single_buy": 1,
+            "sort_order": 9,
+            "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": 22,
+                "name": "商店-神器消耗700钻",
+                "description": "购买神器类商品消耗700钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 700,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 19,
+                "name": "商店-除草之神奖励",
+                "description": "购买蚱蜢之神获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 3,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 13,
+            "name": "K钻宝箱",
+            "description": "用100个苹果+100个西瓜开启可随机获得10-200个钻石",
+            "category_id": 5,
+            "category_name": "宝箱",
+            "consume_group_id": 21,
+            "reward_group_id": 18,
+            "max_single_buy": 0,
+            "sort_order": 8,
+            "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": 5,
+                "name": "宝箱类"
+            },
+            "consume_group": {
+                "id": 21,
+                "name": "商店-宝箱消耗100钻",
+                "description": "购买宝箱类商品消耗100钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 100,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 18,
+                "name": "商店-K钻宝箱奖励",
+                "description": "购买K钻宝箱获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 30,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 12,
+            "name": "金宝头x1",
+            "description": "用500个草莓+500个南瓜开启可随机获得200-2000个草莓或南瓜",
+            "category_id": 5,
+            "category_name": "宝箱",
+            "consume_group_id": 20,
+            "reward_group_id": 17,
+            "max_single_buy": 0,
+            "sort_order": 7,
+            "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": 5,
+                "name": "宝箱类"
+            },
+            "consume_group": {
+                "id": 20,
+                "name": "商店-宝箱消耗30钻",
+                "description": "购买宝箱类商品消耗30钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 30,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 17,
+                "name": "商店-金宝箱奖励",
+                "description": "购买金宝箱获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 29,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 11,
+            "name": "银宝箱",
+            "description": "用500个苹果+500个西瓜开启可随机获得200-2000个苹果或西瓜",
+            "category_id": 5,
+            "category_name": "宝箱",
+            "consume_group_id": 19,
+            "reward_group_id": 16,
+            "max_single_buy": 0,
+            "sort_order": 6,
+            "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": 5,
+                "name": "宝箱类"
+            },
+            "consume_group": {
+                "id": 19,
+                "name": "商店-宝箱消耗20钻",
+                "description": "购买宝箱类商品消耗20钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 20,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 16,
+                "name": "商店-银宝箱奖励",
+                "description": "购买银宝箱获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 28,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 5,
+            "name": "每日特惠包",
+            "description": "每日限购的特惠商品包,性价比超高",
+            "category_id": 1,
+            "category_name": "礼包",
+            "consume_group_id": 13,
+            "reward_group_id": 7,
+            "max_single_buy": 0,
+            "sort_order": 5,
+            "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": 1,
+                "name": "道具类"
+            },
+            "consume_group": {
+                "id": 13,
+                "name": "商店-金币消耗",
+                "description": "商店商品购买消耗金币",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "quantity": 100,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 7,
+                "name": "商店-道具包",
+                "description": "商店购买获得道具包",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "min_quantity": 5,
+                        "max_quantity": 5,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "min_quantity": 10,
+                        "max_quantity": 10,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "min_quantity": 50,
+                        "max_quantity": 50,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 10,
+            "name": "铜宝箱",
+            "description": "用500个萝卜+500个辣椒开启可随机获得200-2000个萝卜或辣椒",
+            "category_id": 5,
+            "category_name": "宝箱",
+            "consume_group_id": 18,
+            "reward_group_id": 15,
+            "max_single_buy": 0,
+            "sort_order": 5,
+            "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": 5,
+                "name": "宝箱类"
+            },
+            "consume_group": {
+                "id": 18,
+                "name": "商店-宝箱消耗10钻",
+                "description": "购买宝箱类商品消耗10钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 10,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 15,
+                "name": "商店-铜宝箱奖励",
+                "description": "购买铜宝箱获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 27,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 4,
+            "name": "神秘宝箱",
+            "description": "打开后可获得随机奖励,运气好能开出稀有物品",
+            "category_id": 4,
+            "category_name": "礼包",
+            "consume_group_id": 14,
+            "reward_group_id": 10,
+            "max_single_buy": 0,
+            "sort_order": 4,
+            "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": 4,
+                "name": "特殊商品"
+            },
+            "consume_group": {
+                "id": 14,
+                "name": "商店-钻石消耗",
+                "description": "商店商品购买消耗钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 50,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 10,
+                "name": "商店-随机奖励",
+                "description": "商店购买获得随机奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 4,
+                        "min_quantity": 3,
+                        "max_quantity": 3,
+                        "probability": null,
+                        "is_guaranteed": false,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 5,
+                        "min_quantity": 2,
+                        "max_quantity": 2,
+                        "probability": null,
+                        "is_guaranteed": false,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 8,
+                        "min_quantity": 5,
+                        "max_quantity": 5,
+                        "probability": null,
+                        "is_guaranteed": false,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "min_quantity": 100,
+                        "max_quantity": 100,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 9,
+            "name": "化肥",
+            "description": "减少当前阶段农作物3小时成熟期",
+            "category_id": 1,
+            "category_name": "道具",
+            "consume_group_id": 17,
+            "reward_group_id": 14,
+            "max_single_buy": 0,
+            "sort_order": 4,
+            "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": 1,
+                "name": "道具类"
+            },
+            "consume_group": {
+                "id": 17,
+                "name": "商店-道具消耗10钻",
+                "description": "购买道具类商品消耗10钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 10,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 14,
+                "name": "商店-化肥奖励",
+                "description": "购买化肥获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 19,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": false,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 3,
+            "name": "资源大礼包",
+            "description": "包含大量游戏资源,快速提升实力",
+            "category_id": 3,
+            "category_name": "礼包",
+            "consume_group_id": 15,
+            "reward_group_id": 9,
+            "max_single_buy": 0,
+            "sort_order": 3,
+            "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": 3,
+                "name": "资源类"
+            },
+            "consume_group": {
+                "id": 15,
+                "name": "商店-积分消耗",
+                "description": "商店商品购买消耗积分",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 3,
+                        "quantity": 200,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 9,
+                "name": "商店-资源包",
+                "description": "商店购买获得资源包",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "min_quantity": 200,
+                        "max_quantity": 200,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "min_quantity": 20,
+                        "max_quantity": 20,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 10,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 8,
+            "name": "除虫剂",
+            "description": "清除地里害虫",
+            "category_id": 1,
+            "category_name": "道具",
+            "consume_group_id": 16,
+            "reward_group_id": 13,
+            "max_single_buy": 0,
+            "sort_order": 3,
+            "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": 1,
+                "name": "道具类"
+            },
+            "consume_group": {
+                "id": 16,
+                "name": "商店-道具消耗5钻",
+                "description": "购买道具类商品消耗5钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 5,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 13,
+                "name": "商店-除虫剂奖励",
+                "description": "购买除虫剂获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 23,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 2,
+            "name": "种子礼包",
+            "description": "包含多种高级种子,种植后可获得丰厚收益",
+            "category_id": 2,
+            "category_name": "礼包",
+            "consume_group_id": 14,
+            "reward_group_id": 8,
+            "max_single_buy": 0,
+            "sort_order": 2,
+            "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": 2,
+                "name": "种子类"
+            },
+            "consume_group": {
+                "id": 14,
+                "name": "商店-钻石消耗",
+                "description": "商店商品购买消耗钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 50,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 8,
+                "name": "商店-种子包",
+                "description": "商店购买获得种子包",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 3,
+                        "min_quantity": 5,
+                        "max_quantity": 5,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 6,
+                        "min_quantity": 3,
+                        "max_quantity": 3,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 7,
+                        "min_quantity": 2,
+                        "max_quantity": 2,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 7,
+            "name": "除草剂",
+            "description": "清除地里杂草",
+            "category_id": 1,
+            "category_name": "道具",
+            "consume_group_id": 16,
+            "reward_group_id": 12,
+            "max_single_buy": 0,
+            "sort_order": 2,
+            "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": 1,
+                "name": "道具类"
+            },
+            "consume_group": {
+                "id": 16,
+                "name": "商店-道具消耗5钻",
+                "description": "购买道具类商品消耗5钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 5,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 12,
+                "name": "商店-除草剂奖励",
+                "description": "购买除草剂获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 22,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 1,
+            "name": "新手必备道具",
+            "description": "包含各种新手必备道具,帮助快速上手游戏",
+            "category_id": 1,
+            "category_name": "礼包",
+            "consume_group_id": 13,
+            "reward_group_id": 7,
+            "max_single_buy": 0,
+            "sort_order": 1,
+            "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": 1,
+                "name": "道具类"
+            },
+            "consume_group": {
+                "id": 13,
+                "name": "商店-金币消耗",
+                "description": "商店商品购买消耗金币",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "quantity": 100,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 7,
+                "name": "商店-道具包",
+                "description": "商店购买获得道具包",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "min_quantity": 5,
+                        "max_quantity": 5,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "min_quantity": 10,
+                        "max_quantity": 10,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    },
+                    {
+                        "type": null,
+                        "target_id": 1,
+                        "min_quantity": 50,
+                        "max_quantity": 50,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        },
+        {
+            "id": 6,
+            "name": "洒水壶",
+            "description": "用来浇水",
+            "category_id": 1,
+            "category_name": "道具",
+            "consume_group_id": 16,
+            "reward_group_id": 11,
+            "max_single_buy": 0,
+            "sort_order": 1,
+            "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": 1,
+                "name": "道具类"
+            },
+            "consume_group": {
+                "id": 16,
+                "name": "商店-道具消耗5钻",
+                "description": "购买道具类商品消耗5钻石",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 2,
+                        "quantity": 5,
+                        "name": null
+                    }
+                ]
+            },
+            "reward_group": {
+                "id": 11,
+                "name": "商店-洒水壶奖励",
+                "description": "购买洒水壶获得的奖励",
+                "items": [
+                    {
+                        "type": null,
+                        "target_id": 24,
+                        "min_quantity": 1,
+                        "max_quantity": 1,
+                        "probability": null,
+                        "is_guaranteed": true,
+                        "name": null
+                    }
+                ]
+            }
+        }
+    ]
+}