时间: 2025年06月09日 20:56
任务类型: 功能增强
状态: 已完成
为Game模块的ConsumeService、ConditionService和RewardService增加获取组的方法,返回DTO对象,并增加消耗组DTO转Protobuf对象Deduct、奖励组DTO转Protobuf对象Reward的转换功能。
ConsumeGroupDto (app/Module/Game/Dtos/ConsumeGroupDto.php):
class ConsumeGroupDto
{
public int $id;
public string $name;
public string $code;
public ?string $description;
public array $items = []; // ConsumeItemDto[]
public static function fromModel($model, bool $withItems = false): self
}
ConsumeItemDto (app/Module/Game/Dtos/ConsumeItemDto.php):
class ConsumeItemDto
{
public int $id;
public int $groupId;
public int $consumeType;
public int $targetId;
public int $param1;
public int $param2;
public int $quantity;
public ?array $extraData;
public static function fromModel($model): self
}
ConditionGroupDto (app/Module/Game/Dtos/ConditionGroupDto.php):
class ConditionGroupDto
{
public int $id;
public string $name;
public string $code;
public ?string $description;
public int $logicType;
public array $items = []; // ConditionItemDto[]
public static function fromModel($model, bool $withItems = false): self
}
ConditionItemDto (app/Module/Game/Dtos/ConditionItemDto.php):
class ConditionItemDto
{
public int $id;
public int $groupId;
public int $conditionType;
public int $targetId;
public int $operator;
public int $value;
public int $param1;
public int $param2;
public ?array $extraData;
public static function fromModel($model): self
}
/**
* 获取消耗组信息
*/
public static function getConsumeGroup($consumeGroupCode, bool $withItems = true): ?ConsumeGroupDto
/**
* 获取消耗组并转换为Protobuf Deduct对象
*/
public static function getConsumeGroupAsDeduct($consumeGroupCode): ?\Uraus\Kku\Common\Deduct
/**
* 获取条件组信息
*/
public static function getConditionGroup($conditionGroupCode, bool $withItems = true): ?ConditionGroupDto
/**
* 获取奖励组并转换为Protobuf Reward对象
*/
public static function getRewardGroupAsReward($groupIdOrCode): ?\Uraus\Kku\Common\Reward
文件: app/Module/Game/Services/ProtobufConverter.php
核心功能:
主要方法:
// 消耗组转换
public static function convertConsumeGroupToDeduct(ConsumeGroupDto $consumeGroupDto): Deduct
// 奖励组转换
public static function convertRewardGroupToReward(RewardGroupDto $rewardGroupDto): Reward
// 单项转换
public static function convertConsumeItemToProtobuf(ConsumeItemDto $consumeItemDto)
public static function convertRewardItemToProtobuf(RewardItemDto $rewardItemDto)
消耗类型映射:
CONSUME_TYPE::ITEM → DeductItemCONSUME_TYPE::CURRENCY → DeductCoinCONSUME_TYPE::FUND_CONFIG → DeductCoinCONSUME_TYPE::FUND_CONFIGS → DeductCoin奖励类型映射:
REWARD_TYPE::ITEM → RewardItemREWARD_TYPE::CURRENCY → RewardCoinREWARD_TYPE::FUND_CONFIG → RewardCoinREWARD_TYPE::FARM_SHRINE → RewardGodREWARD_TYPE::PET → RewardPetsREWARD_TYPE::PET_POWER → RewardPetPowersREWARD_TYPE::SKIN → RewardSkin// 获取包含消耗项的消耗组
$consumeGroup = ConsumeService::getConsumeGroup(1, true);
if ($consumeGroup) {
echo "消耗组: {$consumeGroup->name}";
echo "消耗项数量: " . count($consumeGroup->items);
}
// 获取消耗组的Protobuf Deduct对象
$deduct = ConsumeService::getConsumeGroupAsDeduct('consume_group_code');
// 获取奖励组的Protobuf Reward对象
$reward = RewardService::getRewardGroupAsReward('reward_group_code');
// 获取条件组DTO
$conditionGroup = ConditionService::getConditionGroup('condition_code', true);
if ($conditionGroup) {
echo "逻辑类型: {$conditionGroup->logicType}";
echo "条件项数量: " . count($conditionGroup->items);
}
本次功能增强成功为Game模块建立了完整的DTO和Protobuf转换体系:
这次增强为Game模块的服务层提供了更加完善和统一的接口,特别是在Handler层中可以方便地获取DTO并转换为Protobuf格式返回给前端,大大提升了开发效率和代码质量。