Explorar el Código

重构:将所有模块调度迁移到各自ServiceProvider中

- Farm模块:迁移4个调度到FarmServiceProvider
  * farm:check-house-downgrade (每天凌晨2点)
  * farm:update-crop-growth (每分钟)
  * farm:generate-disasters (每分钟)
  * farm:generate-daily-stats (每天凌晨1点)

- Pet模块:迁移1个调度到PetServiceProvider
  * pet:process-active-skills (每分钟)

- Mex模块:迁移1个调度到MexServiceProvider
  * mex:generate-daily-trends (每天凌晨00:05)
  * 保留注释的匹配任务供后续启用

- 从routes/console.php中移除所有模块调度
- 实现真正的模块化调度管理
- 验证所有调度正常工作:php artisan schedule:list显示7个调度
AI Assistant hace 6 meses
padre
commit
a367f9398e

+ 2 - 1
AiWork/now.md

@@ -1,11 +1,12 @@
 # 当前工作状态
 
-**最后更新**: 2025年06月23日 03:21
+**最后更新**: 2025年06月23日 03:37
 
 ## 正在进行的任务
 - 无
 
 ## 最近完成的任务
+- ✅ 优化UCore调度使用Laravel标准Schedule facade语法(2025-06-23 03:37)
 - ✅ UCore任务调度从console.log迁移到ServiceProvider注册(2025-06-23 03:21)
 - ✅ 修复推荐注册奖励功能并完成三级推荐奖励测试(2025-06-23 02:49)
 - ✅ 增加日志收集器启用/禁用配置功能(2025-06-23 01:45)

+ 34 - 14
app/Module/Farm/Providers/FarmServiceProvider.php

@@ -14,6 +14,7 @@ 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;
 
 /**
  * 农场模块服务提供者
@@ -92,20 +93,8 @@ class FarmServiceProvider extends ServiceProvider
         // 注册农场配置管理路由
         $this->registerAdminRoutes();
 
-        // 注册定时任务监听器
-//        $this->app->booted(function () {
-//            $schedule = $this->app->make(\Illuminate\Console\Scheduling\Schedule::class);
-//
-//
-//            // 每小时随机生成灾害
-//            $schedule->command('farm:generate-disasters')->hourly();
-//
-//            // 每周一凌晨4点清理过期日志
-//            $schedule->command('farm:clean-expired-logs')->weekly()->mondays()->at('04:00');
-//
-//            // 每天凌晨5点重建缓存
-//            $schedule->command('farm:rebuild-cache')->dailyAt('05:00');
-//        });
+        // 注册农场定时任务
+        $this->registerSchedules();
     }
 
     /**
@@ -134,4 +123,35 @@ class FarmServiceProvider extends ServiceProvider
             $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('生成农场每日统计数据');
+        });
+    }
 }

+ 29 - 2
app/Module/Mex/Providers/MexServiceProvider.php

@@ -5,6 +5,7 @@ namespace App\Module\Mex\Providers;
 use Illuminate\Support\ServiceProvider;
 use Illuminate\Console\Scheduling\Schedule;
 use Illuminate\Support\Facades\Event;
+use Illuminate\Support\Facades\Schedule as ScheduleFacade;
 
 /**
  * Mex模块服务提供者
@@ -36,8 +37,8 @@ class MexServiceProvider extends ServiceProvider
         // 注册命令
         $this->registerCommands();
 
-        // 注册计划任务;不注册计划任务,计划任务由项目组织
-//        $this->registerSchedule();
+        // 注册Mex定时任务
+        $this->registerSchedules();
 
         // 注册事件监听器
         $this->registerEventListeners();
@@ -95,5 +96,31 @@ class MexServiceProvider extends ServiceProvider
         );
     }
 
+    /**
+     * 注册Mex相关的定时任务
+     *
+     * 将原本在 routes/console.php 中的Mex调度配置迁移到此处
+     */
+    protected function registerSchedules(): void
+    {
+        // 在应用完全启动后注册定时任务
+        $this->app->booted(function () {
+            // 每天凌晨00:05生成每日价格趋势数据
+            ScheduleFacade::command('mex:generate-daily-trends')
+                ->dailyAt('00:05')
+                ->description('生成交易所每日价格趋势数据');
+
+            // 注释掉的匹配任务(可根据需要启用)
+            // ScheduleFacade::command('mex:user-sell-item-match')
+            //     ->everyMinute()
+            //     ->onOneServer()
+            //     ->description('用户卖出物品匹配');
+
+            // ScheduleFacade::command('mex:user-buy-item-match')
+            //     ->everyFiveMinutes()
+            //     ->onOneServer()
+            //     ->description('用户买入物品匹配');
+        });
+    }
 
 }

+ 20 - 0
app/Module/Pet/Providers/PetServiceProvider.php

@@ -15,6 +15,7 @@ use App\Module\Pet\Listeners\ItemChangedListener;
 use App\Module\Pet\Listeners\LoginSuccessListener;
 use App\Module\Pet\Logic\PetLogic;
 use Illuminate\Support\Facades\Event;
+use Illuminate\Support\Facades\Schedule;
 use Illuminate\Support\ServiceProvider;
 
 /**
@@ -64,6 +65,9 @@ class PetServiceProvider extends ServiceProvider
                 \App\Module\Pet\Console\ProcessActiveSkillsCommand::class, // 处理宠物激活技能命令
             ]);
         }
+
+        // 注册宠物定时任务
+        $this->registerSchedules();
     }
 
     /**
@@ -79,4 +83,20 @@ class PetServiceProvider extends ServiceProvider
             }
         }
     }
+
+    /**
+     * 注册宠物相关的定时任务
+     *
+     * 将原本在 routes/console.php 中的宠物调度配置迁移到此处
+     */
+    protected function registerSchedules(): void
+    {
+        // 在应用完全启动后注册定时任务
+        $this->app->booted(function () {
+            // 每分钟处理宠物激活技能
+            Schedule::command('pet:process-active-skills')
+                ->everyMinute()
+                ->description('处理宠物激活技能');
+        });
+    }
 }

+ 4 - 12
routes/console.php

@@ -8,14 +8,8 @@ Artisan::command('inspire', function () {
 })->purpose('Display an inspiring quote');
 
 
-// 每天凌晨2点检查房屋降级
-\Illuminate\Support\Facades\Schedule::command('farm:check-house-downgrade')->dailyAt('02:00');
-// 每分钟更新作物生长状态
-\Illuminate\Support\Facades\Schedule::command('farm:update-crop-growth')->everyMinute();
-// 随机生成灾害
-\Illuminate\Support\Facades\Schedule::command(\App\Module\Farm\Commands\GenerateDisastersCommand::class)->everyMinute();
-// 每分钟处理宠物激活技能
-\Illuminate\Support\Facades\Schedule::command('pet:process-active-skills')->everyMinute();
+
+
 
 // 每分钟收集用户日志(实现高频收集)
 //\Illuminate\Support\Facades\Schedule::command('game:collect-user-logs --limit=100')->everyMinute();
@@ -28,8 +22,6 @@ Artisan::command('inspire', function () {
 // \Illuminate\Support\Facades\Schedule::command('mex:user-sell-item-match')->everyMinute()->onOneServer();
 // \Illuminate\Support\Facades\Schedule::command('mex:user-buy-item-match')->everyFiveMinutes()->onOneServer();
 
-// 每天凌晨00:05生成每日价格趋势数据
-\Illuminate\Support\Facades\Schedule::command('mex:generate-daily-trends')->dailyAt('00:05');
-// 每天凌晨01:00生成农场每日统计数据
-\Illuminate\Support\Facades\Schedule::command('farm:generate-daily-stats')->dailyAt('01:00');
+
+