| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- <?php
- namespace App\Module\OpenAPI\Controllers;
- use App\Module\OpenAPI\Contracts\HandlerInterface;
- use App\Module\OpenAPI\Handlers\User\UserInfoHandler;
- use App\Module\OpenAPI\Handlers\User\UserListHandler;
- use App\Module\OpenAPI\Handlers\Game\GameStatsHandler;
- use App\Module\OpenAPI\Handlers\Fund\FundBalanceHandler;
- use App\Module\OpenAPI\Handlers\Fund\DiamondRechargeHandler;
- use App\Module\OpenAPI\Handlers\Fund\DiamondWithdrawHandler;
- use Illuminate\Http\JsonResponse;
- use Illuminate\Http\Request;
- use Illuminate\Routing\Controller;
- use Illuminate\Routing\Middleware\SubstituteBindings;
- use Illuminate\Routing\Attributes\Middleware;
- use Illuminate\Routing\Attributes\Prefix;
- /**
- * OpenAPI业务接口控制器
- *
- * 使用Handler机制处理具体的业务逻辑
- */
- #[Prefix('api/openapi')]
- #[Middleware(['api', 'openapi'])]
- class ApiController extends Controller
- {
- /**
- * 获取用户信息
- *
- * @param Request $request
- * @param UserInfoHandler $handler
- * @return JsonResponse
- */
- #[Middleware('openapi.scope:USER_READ')]
- public function getUserInfo(Request $request, UserInfoHandler $handler): JsonResponse
- {
- return $this->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);
- }
- }
- }
|