| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- <?php
- namespace App\Module\Farm\Providers;
- use App\Module\Farm\Commands;
- use App\Module\AppGame\Events\LoginSuccessEvent;
- use App\Module\Farm\Events\CropGrowthStageChangedEvent;
- use App\Module\Farm\Events\FarmCreatedEvent;
- use App\Module\Farm\Events\HouseUpgradedEvent;
- use App\Module\Farm\Listeners\AddLandAfterHouseUpgradeListener;
- use App\Module\Farm\Listeners\FarmInitRewardListener;
- use App\Module\Farm\Listeners\GenerateDisasterListener;
- use App\Module\Farm\Listeners\LoginSuccessListener;
- use App\Module\Farm\Listeners\UpdateCropStatusListener;
- use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
- use Illuminate\Support\Facades\Schedule;
- /**
- * 农场模块服务提供者
- */
- class FarmServiceProvider extends ServiceProvider
- {
- /**
- * 事件与监听器映射
- *
- * @var array
- */
- protected $listen = [
- CropGrowthStageChangedEvent::class => [
- UpdateCropStatusListener::class,
- GenerateDisasterListener::class,
- ],
- HouseUpgradedEvent::class => [
- AddLandAfterHouseUpgradeListener::class,
- ],
- LoginSuccessEvent::class => [
- LoginSuccessListener::class,
- ],
- FarmCreatedEvent::class => [
- FarmInitRewardListener::class,
- ],
- ];
- /**
- * 注册服务
- *
- * @return void
- */
- public function register()
- {
- // 注册命令
- $this->commands([
- Commands\UpdateCropGrowthCommand::class,
- Commands\FixCropFinalOutputCommand::class,
- Commands\FixCropMatureOutputCommand::class,
- Commands\GenerateDisastersCommand::class,
- Commands\CheckHouseDowngradeCommand::class,
- Commands\CleanExpiredLogsCommand::class,
- Commands\GenerateFarmHouseConfigJson::class,
- Commands\GenerateFarmShrineConfigJson::class,
- Commands\GenerateFarmLandConfigJson::class,
- Commands\GenerateFarmSeedConfigJson::class,
- Commands\MigrateLandUpgradeMaterialsToConsumeGroupsCommand::class,
- Commands\MigrateLandUpgradeConditionsToConditionGroupsCommand::class,
- Commands\InitializeUserLandsCommand::class,
- Commands\InsertFarmConfigAdminMenu::class,
- Commands\GenerateFarmDailyStatsCommand::class,
- Commands\FixLandStatusCommand::class,
- Commands\FixRemovedCropLandStatusCommand::class,
- ]);
- }
- /**
- * 引导服务
- *
- * @return void
- */
- public function boot()
- {
- $events = $this->app['events'];
- foreach ($this->listen as $event => $listeners) {
- foreach ($listeners as $listener) {
- $events->listen($event, $listener);
- }
- }
- // 注册农场配置管理路由
- $this->registerAdminRoutes();
- // 注册农场定时任务
- $this->registerSchedules();
- }
- /**
- * 注册后台管理路由
- *
- * @return void
- */
- protected function registerAdminRoutes()
- {
- $attributes = [
- 'prefix' => config('admin.route.prefix'),
- 'middleware' => config('admin.route.middleware'),
- ];
- app('router')->group($attributes, function ($router) {
- // 农场配置管理路由
- $router->resource('farm-configs', \App\Module\Farm\AdminControllers\FarmConfigController::class);
- // 清除缓存路由
- $router->post('farm-configs/clear-cache', [\App\Module\Farm\AdminControllers\FarmConfigController::class, 'clearCache']);
- // 农场每日统计路由
- $router->resource('farm-daily-stats', \App\Module\Farm\AdminControllers\FarmDailyStatsController::class);
- // 农场统计图表路由
- $router->get('farm-metrics', [\App\Module\Farm\AdminControllers\FarmMetricsController::class, 'index']);
- });
- }
- /**
- * 注册农场相关的定时任务
- *
- * 将原本在 routes/console.php 中的农场调度配置迁移到此处
- */
- protected function registerSchedules(): void
- {
- // 在应用完全启动后注册定时任务
- $this->app->booted(function () {
- // 每天凌晨2点检查房屋降级
- Schedule::command('farm:check-house-downgrade')
- ->dailyAt('02:00')
- ->description('检查农场房屋降级');
- // 每分钟更新作物生长状态
- Schedule::command('farm:update-crop-growth')
- ->everyMinute()
- ->description('更新作物生长状态');
- // 每分钟随机生成灾害
- Schedule::command(\App\Module\Farm\Commands\GenerateDisastersCommand::class)
- ->everyMinute()
- ->description('随机生成农场灾害');
- // 每天凌晨01:00生成农场每日统计数据
- Schedule::command('farm:generate-daily-stats')
- ->dailyAt('01:00')
- ->description('生成农场每日统计数据');
- });
- }
- }
|