HandlerRegistrationService.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. <?php
  2. namespace App\Module\OpenAPI\Services;
  3. /**
  4. * Handler注册服务
  5. *
  6. * 管理和注册所有OpenAPI Handler
  7. */
  8. class HandlerRegistrationService
  9. {
  10. /**
  11. * 注册所有Handler到服务容器
  12. *
  13. * @return void
  14. */
  15. public function registerHandlers(): void
  16. {
  17. // 注册用户相关Handler
  18. $this->registerUserHandlers();
  19. // 注册游戏相关Handler
  20. $this->registerGameHandlers();
  21. // 注册资金相关Handler
  22. $this->registerFundHandlers();
  23. // 注册物品相关Handler(待实现)
  24. $this->registerItemHandlers();
  25. // 注册交易相关Handler(待实现)
  26. $this->registerTradeHandlers();
  27. }
  28. /**
  29. * 注册用户相关Handler
  30. *
  31. * @return void
  32. */
  33. protected function registerUserHandlers(): void
  34. {
  35. $app = app();
  36. $app->singleton(\App\Module\OpenAPI\Handlers\User\UserInfoHandler::class, function ($app) {
  37. return new \App\Module\OpenAPI\Handlers\User\UserInfoHandler(
  38. $app->make(\App\Module\OpenAPI\Services\ScopeService::class)
  39. );
  40. });
  41. $app->singleton(\App\Module\OpenAPI\Handlers\User\UserListHandler::class, function ($app) {
  42. return new \App\Module\OpenAPI\Handlers\User\UserListHandler(
  43. $app->make(\App\Module\OpenAPI\Services\ScopeService::class)
  44. );
  45. });
  46. }
  47. /**
  48. * 注册游戏相关Handler
  49. *
  50. * @return void
  51. */
  52. protected function registerGameHandlers(): void
  53. {
  54. $app = app();
  55. $app->singleton(\App\Module\OpenAPI\Handlers\Game\GameStatsHandler::class, function ($app) {
  56. return new \App\Module\OpenAPI\Handlers\Game\GameStatsHandler(
  57. $app->make(\App\Module\OpenAPI\Services\ScopeService::class)
  58. );
  59. });
  60. }
  61. /**
  62. * 注册资金相关Handler
  63. *
  64. * @return void
  65. */
  66. protected function registerFundHandlers(): void
  67. {
  68. $app = app();
  69. $app->singleton(\App\Module\OpenAPI\Handlers\Fund\FundBalanceHandler::class, function ($app) {
  70. return new \App\Module\OpenAPI\Handlers\Fund\FundBalanceHandler(
  71. $app->make(\App\Module\OpenAPI\Services\ScopeService::class)
  72. );
  73. });
  74. }
  75. /**
  76. * 注册物品相关Handler(待实现)
  77. *
  78. * @return void
  79. */
  80. protected function registerItemHandlers(): void
  81. {
  82. // TODO: 实现物品相关Handler
  83. // app()->singleton(\App\Module\OpenAPI\Handlers\Item\ItemListHandler::class, ...);
  84. }
  85. /**
  86. * 注册交易相关Handler(待实现)
  87. *
  88. * @return void
  89. */
  90. protected function registerTradeHandlers(): void
  91. {
  92. // TODO: 实现交易相关Handler
  93. // app()->singleton(\App\Module\OpenAPI\Handlers\Trade\TradeHistoryHandler::class, ...);
  94. }
  95. /**
  96. * 获取所有已注册的Handler列表
  97. *
  98. * @return array
  99. */
  100. public function getRegisteredHandlers(): array
  101. {
  102. return [
  103. // 用户相关Handler
  104. 'user' => [
  105. 'info' => \App\Module\OpenAPI\Handlers\User\UserInfoHandler::class,
  106. 'list' => \App\Module\OpenAPI\Handlers\User\UserListHandler::class,
  107. ],
  108. // 游戏相关Handler
  109. 'game' => [
  110. 'stats' => \App\Module\OpenAPI\Handlers\Game\GameStatsHandler::class,
  111. ],
  112. // 资金相关Handler
  113. 'fund' => [
  114. 'balance' => \App\Module\OpenAPI\Handlers\Fund\FundBalanceHandler::class,
  115. ],
  116. // 物品相关Handler(待实现)
  117. 'item' => [
  118. // 'list' => \App\Module\OpenAPI\Handlers\Item\ItemListHandler::class,
  119. ],
  120. // 交易相关Handler(待实现)
  121. 'trade' => [
  122. // 'history' => \App\Module\OpenAPI\Handlers\Trade\TradeHistoryHandler::class,
  123. ],
  124. ];
  125. }
  126. /**
  127. * 检查Handler是否已注册
  128. *
  129. * @param string $handlerClass
  130. * @return bool
  131. */
  132. public function isHandlerRegistered(string $handlerClass): bool
  133. {
  134. $handlers = $this->getRegisteredHandlers();
  135. foreach ($handlers as $categoryHandlers) {
  136. if (in_array($handlerClass, $categoryHandlers)) {
  137. return true;
  138. }
  139. }
  140. return false;
  141. }
  142. }