解决了 app/Module/Shop/Commands/GenerateShopItemsJsonCommand.php 文件中的两个todo,实现了将 GameConsumeItem 和 GameRewardItem 模型转换为真实的protobuf对象。
新增功能:
getNameAttribute() 访问器,用于获取消耗项的名称getTargetName() 方法,根据消耗类型获取对应的目标名称toDeductObject() 方法,将模型转换为 \Uraus\Kku\Common\Deduct protobuf对象支持的消耗类型:
ITEM: 物品消耗,转换为 DeductItem 对象CURRENCY: 币种消耗,转换为 DeductCoin 对象FUND_CONFIG: 账户种类消耗,转换为 DeductCoin 对象新增功能:
getTypeAttribute() 访问器,用于获取奖励类型名称getNameAttribute() 访问器,用于获取奖励项的名称getTargetName() 方法,根据奖励类型获取对应的目标名称toRewardObject() 方法,将模型转换为 \Uraus\Kku\Common\Reward protobuf对象支持的奖励类型:
ITEM: 物品奖励,转换为 RewardItem 对象CURRENCY/FUND_CONFIG: 代币奖励,转换为 RewardCoin 对象PET: 宠物奖励,转换为 RewardPets 对象PET_POWER/PET_ENERGY: 宠物体力奖励,转换为 RewardPetPowers 对象FARM_SHRINE: 神像奖励,转换为 RewardGod 对象修改内容:
$consumeItem->toDeductObject()$rewardItem->toRewardObject()消耗组转换示例:
// 物品消耗
$deductItem = new \Uraus\Kku\Common\DeductItem([
'item_id' => $this->target_id,
'instance_id' => 0,
'quantity' => $this->quantity,
]);
// 代币消耗
$deductCoin = new \Uraus\Kku\Common\DeductCoin([
'type' => $this->target_id,
'quantity' => $this->quantity,
]);
奖励组转换示例:
// 物品奖励
$rewardItem = new \Uraus\Kku\Common\RewardItem([
'item_id' => $this->target_id,
'instance_id' => 0,
'quantity' => $this->max_quantity ?: $this->quantity,
]);
// 宠物奖励
$rewardPet = new \Uraus\Kku\Common\RewardPets([
'pet_type' => $this->target_id,
'quantity' => $this->quantity,
]);
实现了智能的名称获取机制,根据不同类型从对应的数据表中获取名称:
item_items 表获取fund_currency 表获取fund_config 表获取pet_configs 表获取php artisan shop:generate-json --verboseSuccessfully generated shop_items.json with timestamp解决商店商品JSON生成命令中的两个todo
- 为GameConsumeItem模型添加name访问器和toDeductObject方法
- 为GameRewardItem模型添加type和name访问器以及toRewardObject方法
- 修复GenerateShopItemsJsonCommand中的数据转换逻辑
- 现在返回真实的protobuf对象而不是数组格式
- 支持物品、代币、宠物、宠物体力、神像等多种奖励类型的转换