单次随机奖励'; /** * 处理请求 * * @param Request $request * @return mixed */ public function handle(Request $request) { try { $id = $this->getKey(); // 获取奖励组信息 $group = GameRewardGroup::find($id); if (!$group) { return $this->response() ->error('奖励组不存在'); } // 模拟单次随机奖励 $result = RewardService::simulateReward($id); if (!$result->success) { return $this->response() ->error('模拟奖励失败: ' . $result->errorMessage); } // 格式化奖励结果 $rewardText = $this->formatRewardItems($result->items); return $this->response() ->success("单次随机奖励结果:\n{$rewardText}") ->detail('奖励组', $group->name) ->detail('编码', $group->code); } catch (\Exception $e) { return $this->response() ->error('操作失败: ' . $e->getMessage()); } } /** * 格式化奖励项显示 * * @param array $items * @return string */ private function formatRewardItems(array $items): string { if (empty($items)) { return '无奖励'; } $formatted = []; foreach ($items as $item) { $formatted[] = \App\Module\Game\Services\RewardTypeDescriptor::formatRewardDisplayFromDto($item, false); } return implode("\n", $formatted); } /** * 确认信息 * * @return array|string|void */ public function confirm() { return ['确定要进行单次随机奖励模拟吗?', '此操作仅模拟奖励结果,不会实际发放奖励']; } }