| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- <?php
- namespace App\Module\GameItems\Providers;
- use App\Module\GameItems\Events\ItemQuantityChanged;
- use Illuminate\Support\Facades\Event;
- use Illuminate\Support\ServiceProvider;
- /**
- * 物品模块服务提供者
- *
- * 负责注册物品模块的服务、命令、事件监听器等
- * 此类是物品模块与Laravel框架集成的核心
- */
- class GameItemsServiceProvider extends ServiceProvider
- {
- /**
- * 注册服务
- *
- * 在此方法中注册物品模块的服务容器绑定
- * 此方法在应用启动早期被调用,适合注册服务但不适合使用任何服务
- *
- * @return void
- */
- public function register()
- {
- }
- /**
- * 引导服务
- *
- * 在所有服务提供者被注册后调用,可以使用已注册的服务
- * 负责注册命令、事件监听器等
- *
- * @return void
- */
- public function boot()
- {
- if ($this->app->runningInConsole()) {
- $this->commands([
- \App\Module\GameItems\Commands\GenerateItemsJsonCommand::class, // 生成物品JSON数据命令
- \App\Module\GameItems\Commands\GenerateChestJsonCommand::class, // 生成宝箱JSON数据命令
- ]);
- }
- // 注册后台路由
- $this->registerAdminRoutes();
- // 注册事件监听器
- $this->registerEventListeners();
- }
- /**
- * 注册事件监听器
- *
- * 注册物品模块的所有事件监听器
- * 包括物品获取、消耗、数量变更等事件的监听器
- *
- * @return void
- */
- protected function registerEventListeners()
- {
- // 物品数量变更事件监听器示例
- // 取消注释以启用此监听器
- // Event::listen(ItemQuantityChanged::class, function (ItemQuantityChanged $event) {
- // // 在这里处理物品数量变更事件
- // // 可以用于更新任务进度、触发成就、记录日志等
- // \Log::info('物品数量变更', [
- // 'user_id' => $event->userId,
- // 'item_id' => $event->itemId,
- // 'old_quantity' => $event->oldQuantity,
- // 'new_quantity' => $event->newQuantity,
- // 'change_amount' => $event->changeAmount,
- // ]);
- // });
- }
- /**
- * 注册后台路由
- *
- * @return void
- */
- protected function registerAdminRoutes()
- {
- // 注册宝箱开启消耗配置控制器路由
- \Dcat\Admin\Admin::routes();
- $attributes = [
- 'prefix' => config('admin.route.prefix'),
- 'middleware' => config('admin.route.middleware'),
- ];
- app('router')->group($attributes, function ($router) {
- // 宝箱开启消耗配置路由
- $router->resource('game-items/chest-open-costs', \App\Module\GameItems\AdminControllers\ItemChestOpenCostAdminController::class);
- // 复制消耗配置到其他宝箱的路由
- $router->post('game-items/chest-open-costs/copy', [\App\Module\GameItems\AdminControllers\ItemChestOpenCostAdminController::class, 'copy']);
- });
- }
- }
|