GameItemsServiceProvider.php 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. <?php
  2. namespace App\Module\GameItems\Providers;
  3. use App\Module\GameItems\Events\ItemQuantityChanged;
  4. use Illuminate\Support\Facades\Event;
  5. use Illuminate\Support\ServiceProvider;
  6. /**
  7. * 物品模块服务提供者
  8. *
  9. * 负责注册物品模块的服务、命令、事件监听器等
  10. * 此类是物品模块与Laravel框架集成的核心
  11. */
  12. class GameItemsServiceProvider extends ServiceProvider
  13. {
  14. /**
  15. * 注册服务
  16. *
  17. * 在此方法中注册物品模块的服务容器绑定
  18. * 此方法在应用启动早期被调用,适合注册服务但不适合使用任何服务
  19. *
  20. * @return void
  21. */
  22. public function register()
  23. {
  24. }
  25. /**
  26. * 引导服务
  27. *
  28. * 在所有服务提供者被注册后调用,可以使用已注册的服务
  29. * 负责注册命令、事件监听器等
  30. *
  31. * @return void
  32. */
  33. public function boot()
  34. {
  35. if ($this->app->runningInConsole()) {
  36. $this->commands([
  37. \App\Module\GameItems\Commands\GenerateItemsJsonCommand::class, // 生成物品JSON数据命令
  38. \App\Module\GameItems\Commands\GenerateChestJsonCommand::class, // 生成宝箱JSON数据命令
  39. ]);
  40. }
  41. // 注册后台路由
  42. $this->registerAdminRoutes();
  43. // 注册事件监听器
  44. $this->registerEventListeners();
  45. }
  46. /**
  47. * 注册事件监听器
  48. *
  49. * 注册物品模块的所有事件监听器
  50. * 包括物品获取、消耗、数量变更等事件的监听器
  51. *
  52. * @return void
  53. */
  54. protected function registerEventListeners()
  55. {
  56. // 物品数量变更事件监听器示例
  57. // 取消注释以启用此监听器
  58. // Event::listen(ItemQuantityChanged::class, function (ItemQuantityChanged $event) {
  59. // // 在这里处理物品数量变更事件
  60. // // 可以用于更新任务进度、触发成就、记录日志等
  61. // \Log::info('物品数量变更', [
  62. // 'user_id' => $event->userId,
  63. // 'item_id' => $event->itemId,
  64. // 'old_quantity' => $event->oldQuantity,
  65. // 'new_quantity' => $event->newQuantity,
  66. // 'change_amount' => $event->changeAmount,
  67. // ]);
  68. // });
  69. }
  70. /**
  71. * 注册后台路由
  72. *
  73. * @return void
  74. */
  75. protected function registerAdminRoutes()
  76. {
  77. // 注册宝箱开启消耗配置控制器路由
  78. \Dcat\Admin\Admin::routes();
  79. $attributes = [
  80. 'prefix' => config('admin.route.prefix'),
  81. 'middleware' => config('admin.route.middleware'),
  82. ];
  83. app('router')->group($attributes, function ($router) {
  84. // 宝箱开启消耗配置路由
  85. $router->resource('game-items/chest-open-costs', \App\Module\GameItems\AdminControllers\ItemChestOpenCostAdminController::class);
  86. // 复制消耗配置到其他宝箱的路由
  87. $router->post('game-items/chest-open-costs/copy', [\App\Module\GameItems\AdminControllers\ItemChestOpenCostAdminController::class, 'copy']);
  88. });
  89. }
  90. }