handleRequest($request, $handler); } /** * 获取用户列表 * * @param Request $request * @param UserListHandler $handler * @return JsonResponse */ #[Middleware('openapi.scope:USER_READ')] public function getUserList(Request $request, UserListHandler $handler): JsonResponse { return $this->handleRequest($request, $handler); } /** * 获取游戏统计 * * @param Request $request * @param GameStatsHandler $handler * @return JsonResponse */ #[Middleware('openapi.scope:GAME_READ')] public function getGameStats(Request $request, GameStatsHandler $handler): JsonResponse { return $this->handleRequest($request, $handler); } /** * 获取资金余额 * * @param Request $request * @param FundBalanceHandler $handler * @return JsonResponse */ #[Middleware('openapi.scope:FUND_READ')] public function getFundBalance(Request $request, FundBalanceHandler $handler): JsonResponse { return $this->handleRequest($request, $handler); } /** * 钻石充值 * * @param Request $request * @param DiamondRechargeHandler $handler * @return JsonResponse */ #[Middleware('openapi.scope:FUND_RECHARGE')] public function diamondRecharge(Request $request, DiamondRechargeHandler $handler): JsonResponse { return $this->handleRequest($request, $handler); } /** * 钻石提取 * * @param Request $request * @param DiamondWithdrawHandler $handler * @return JsonResponse */ #[Middleware('openapi.scope:FUND_WITHDRAW')] public function diamondWithdraw(Request $request, DiamondWithdrawHandler $handler): JsonResponse { return $this->handleRequest($request, $handler); } /** * 获取开发者充值账户余额 * * @param Request $request * @param DiamondRechargeHandler $handler * @return JsonResponse */ #[Middleware('openapi.scope:FUND_READ')] public function getRechargeAccountBalance(Request $request, DiamondRechargeHandler $handler): JsonResponse { return $handler->getRechargeAccountBalance($request->all(), [ 'app' => $request->attributes->get('openapi_app'), 'user_id' => $request->attributes->get('user_id', 0), 'ip' => $request->ip(), 'user_agent' => $request->userAgent(), 'request_id' => $request->header('X-Request-ID', uniqid()), ]); } /** * 获取开发者提取账户余额 * * @param Request $request * @param DiamondWithdrawHandler $handler * @return JsonResponse */ #[Middleware('openapi.scope:FUND_READ')] public function getWithdrawAccountBalance(Request $request, DiamondWithdrawHandler $handler): JsonResponse { return $handler->getWithdrawAccountBalance($request->all(), [ 'app' => $request->attributes->get('openapi_app'), 'user_id' => $request->attributes->get('user_id', 0), 'ip' => $request->ip(), 'user_agent' => $request->userAgent(), 'request_id' => $request->header('X-Request-ID', uniqid()), ]); } /** * 通用请求处理方法 * * @param Request $request * @param HandlerInterface $handler * @return JsonResponse */ protected function handleRequest(Request $request, HandlerInterface $handler): JsonResponse { $startTime = microtime(true); // 初始化请求日志记录器 $requestLogger = new \App\Module\System\Services\RequestLogger($request); $requestLogger->setRouter("openapi/" . $request->route()->getName()); try { // 准备请求数据 $data = array_merge( $request->all(), $request->route()->parameters() ); // 准备上下文信息 $context = [ 'app' => $request->attributes->get('openapi_app'), 'user_id' => $request->attributes->get('user_id', 0), 'ip' => $request->ip(), 'user_agent' => $request->userAgent(), 'request_id' => $request->header('X-Request-ID', uniqid()), ]; // 调用Handler处理请求 $response = $handler->handle($data, $context); // 记录运行时间 $requestLogger->setRunTime($startTime); return $response; } catch (\Exception $e) { // 记录错误信息和运行时间 $requestLogger->setError($e->getMessage()); $requestLogger->setRunTime($startTime); return response()->json([ 'success' => false, 'message' => '请求处理失败', 'error' => $e->getMessage(), ], 500); } } }