UrsPromotionServiceProvider.php 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. namespace App\Module\UrsPromotion\Providers;
  3. use Illuminate\Support\ServiceProvider;
  4. use Illuminate\Console\Scheduling\Schedule;
  5. use App\Module\Farm\Events\CropHarvestedEvent;
  6. use App\Module\Transfer\Events\FeeCalculatingEvent;
  7. use App\Module\UrsPromotion\Events\UrsUserEnteredFarmEvent;
  8. use App\Module\UrsPromotion\Events\UrsReferralCreatedEvent;
  9. use App\Module\UrsPromotion\Listeners\CropHarvestedListener;
  10. use App\Module\UrsPromotion\Listeners\UrsTransferFeeListener;
  11. use App\Module\UrsPromotion\Listeners\UrsUserEnteredFarmListener;
  12. use App\Module\UrsPromotion\Listeners\UrsReferralCreatedListener;
  13. /**
  14. * URS推广模块服务提供者
  15. */
  16. class UrsPromotionServiceProvider extends ServiceProvider
  17. {
  18. /**
  19. * 事件与监听器映射
  20. *
  21. * @var array
  22. */
  23. protected $listen = [
  24. CropHarvestedEvent::class => [
  25. CropHarvestedListener::class,
  26. ],
  27. FeeCalculatingEvent::class => [
  28. UrsTransferFeeListener::class,
  29. ],
  30. UrsUserEnteredFarmEvent::class => [
  31. UrsUserEnteredFarmListener::class,
  32. ],
  33. UrsReferralCreatedEvent::class => [
  34. UrsReferralCreatedListener::class,
  35. ],
  36. ];
  37. /**
  38. * 注册服务
  39. */
  40. public function register(): void
  41. {
  42. // 注册命令
  43. if ($this->app->runningInConsole()) {
  44. $this->commands([
  45. \App\Module\UrsPromotion\Commands\UrsPartnerDividendCommand::class,
  46. \App\Module\UrsPromotion\Commands\UrsRebuildRelationCacheCommand::class,
  47. \App\Module\UrsPromotion\Commands\UrsTestRelationCacheCommand::class,
  48. \App\Module\UrsPromotion\Commands\UrsReferralSyncCommand::class,
  49. \App\Module\UrsPromotion\Commands\UrsUpdateTalentLevelCommand::class,
  50. \App\Module\UrsPromotion\Commands\TestRelationCacheFixCommand::class,
  51. \App\Module\UrsPromotion\Commands\UrsUpdateActiveStatusCommand::class,
  52. ]);
  53. }
  54. }
  55. /**
  56. * 启动服务
  57. */
  58. public function boot(): void
  59. {
  60. // 注册事件监听器
  61. $events = $this->app['events'];
  62. foreach ($this->listen as $event => $listeners) {
  63. foreach ($listeners as $listener) {
  64. $events->listen($event, $listener);
  65. }
  66. }
  67. // 后台路由通过注解自动注册
  68. // 注册定时任务
  69. $this->app->booted(function () {
  70. $schedule = $this->app->make(Schedule::class);
  71. // 每天00:30执行合伙人分红(处理昨天的数据)
  72. $schedule->command('urs-promotion:partner-dividend')
  73. ->dailyAt('00:30')
  74. ->description('URS合伙人分红 - 顶级达人享受手续费分红')
  75. ->withoutOverlapping() // 防止重复执行
  76. ->runInBackground(); // 后台运行
  77. // 每天01:05执行用户活跃状态更新
  78. $schedule->command('urs:update-active-status')
  79. ->dailyAt('01:05')
  80. ->description('URS用户活跃状态更新 - 基于最近15天活动时间更新用户活跃状态')
  81. ->withoutOverlapping() // 防止重复执行
  82. ->runInBackground(); // 后台运行
  83. });
  84. }
  85. }