| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace App\Module\Game\Logics\RewardProcessors;
- use App\Module\Game\Dtos\RewardItemDto;
- use App\Module\Game\Enums\REWARD_TYPE;
- use Exception;
- use Illuminate\Support\Facades\Log;
- /**
- * 奖励处理器分发器
- *
- * 根据奖励类型分发到对应的处理器进行处理
- */
- class RewardProcessorDispatcher
- {
- /**
- * 处理单个奖励项
- *
- * @param int $userId 用户ID
- * @param RewardItemDto $item 奖励项
- * @param string $sourceType 来源类型
- * @param int $sourceId 来源ID
- * @return void
- * @throws Exception
- */
- public static function process(int $userId, RewardItemDto $item, string $sourceType, int $sourceId): void
- {
- switch ($item->rewardType) {
- case REWARD_TYPE::ITEM->valueInt():
- ItemRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::FUND_CONFIG->valueInt():
- FundConfigRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::CURRENCY->valueInt():
- CurrencyRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::PET_EXP->valueInt():
- PetExpRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::PET_ENERGY->valueInt():
- PetEnergyRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::FARM_SHRINE->valueInt():
- FarmShrineRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::PET->valueInt():
- PetRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::PET_POWER->valueInt():
- PetPowerRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::SKIN->valueInt():
- SkinRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- case REWARD_TYPE::OTHER->valueInt():
- OtherRewardProcessor::process($userId, $item, $sourceType, $sourceId);
- break;
- default:
- // 未知奖励类型,记录日志
- Log::warning("未知的奖励类型", [
- 'userId' => $userId,
- 'rewardType' => $item->rewardType,
- 'targetId' => $item->targetId,
- 'quantity' => $item->quantity,
- 'sourceType' => $sourceType,
- 'sourceId' => $sourceId
- ]);
- break;
- }
- }
- }
|