| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- <?php
- namespace App\Module\Farm\Providers;
- use App\Module\Farm\Commands;
- use App\Module\Farm\Events\CropGrowthStageChangedEvent;
- use App\Module\Farm\Events\CropHarvestedEvent;
- use App\Module\Farm\Listeners\CalculateHarvestOutputListener;
- use App\Module\Farm\Listeners\CheckHouseDowngradeListener;
- use App\Module\Farm\Listeners\DistributeTeamProfitListener;
- use App\Module\Farm\Listeners\GenerateDisasterListener;
- use App\Module\Farm\Listeners\UpdateCropStatusListener;
- use App\Module\Farm\Listeners\UpdateTalentLevelListener;
- use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
- use Illuminate\Support\Facades\Event;
- /**
- * 农场模块服务提供者
- */
- class FarmServiceProvider extends ServiceProvider
- {
- /**
- * 事件与监听器映射
- *
- * @var array
- */
- protected $listen = [
- CropGrowthStageChangedEvent::class => [
- UpdateCropStatusListener::class,
- GenerateDisasterListener::class,
- ],
- CropHarvestedEvent::class => [
- CalculateHarvestOutputListener::class,
- DistributeTeamProfitListener::class,
- ],
- ];
- /**
- * 注册服务
- *
- * @return void
- */
- public function register()
- {
- // 注册命令
- $this->commands([
- Commands\UpdateCropGrowthCommand::class,
- Commands\GenerateDisastersCommand::class,
- Commands\CheckHouseDowngradeCommand::class,
- Commands\CleanExpiredLogsCommand::class,
- Commands\RebuildFarmCacheCommand::class,
- Commands\GenerateFarmHouseConfigJson::class,
- Commands\GenerateFarmHouseJson::class,
- ]);
- // 注册服务
- $this->app->singleton(Logics\FarmLogic::class, function ($app) {
- return new Logics\FarmLogic();
- });
- $this->app->singleton(Logics\LandLogic::class, function ($app) {
- return new Logics\LandLogic();
- });
- $this->app->singleton(Logics\CropLogic::class, function ($app) {
- return new Logics\CropLogic();
- });
- $this->app->singleton(Logics\SeedLogic::class, function ($app) {
- return new Logics\SeedLogic();
- });
- $this->app->singleton(Logics\DisasterLogic::class, function ($app) {
- return new Logics\DisasterLogic();
- });
- $this->app->singleton(Logics\HouseLogic::class, function ($app) {
- return new Logics\HouseLogic();
- });
- $this->app->singleton(Logics\BuffLogic::class, function ($app) {
- return new Logics\BuffLogic();
- });
- $this->app->singleton(Logics\TeamLogic::class, function ($app) {
- return new Logics\TeamLogic();
- });
- }
- /**
- * 引导服务
- *
- * @return void
- */
- public function boot()
- {
- parent::boot();
- // 注册路由
- if (file_exists(__DIR__ . '/../routes.php')) {
- $this->loadRoutesFrom(__DIR__ . '/../routes.php');
- }
- // 注册定时任务监听器
- $this->app->booted(function () {
- $schedule = $this->app->make(\Illuminate\Console\Scheduling\Schedule::class);
- // 每5分钟更新作物生长状态
- $schedule->command('farm:update-crop-growth')->everyFiveMinutes();
- // 每小时随机生成灾害
- $schedule->command('farm:generate-disasters')->hourly();
- // 每天凌晨2点检查房屋降级
- $schedule->command('farm:check-house-downgrade')->dailyAt('02:00');
- // 每天凌晨3点更新达人等级
- $schedule->call(function () {
- app()->make(UpdateTalentLevelListener::class)->handle();
- })->dailyAt('03:00');
- // 每周一凌晨4点清理过期日志
- $schedule->command('farm:clean-expired-logs')->weekly()->mondays()->at('04:00');
- // 每天凌晨5点重建缓存
- $schedule->command('farm:rebuild-cache')->dailyAt('05:00');
- });
- }
- }
|