UrsPromotionServiceProvider.php 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  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. ]);
  52. }
  53. }
  54. /**
  55. * 启动服务
  56. */
  57. public function boot(): void
  58. {
  59. // 注册事件监听器
  60. $events = $this->app['events'];
  61. foreach ($this->listen as $event => $listeners) {
  62. foreach ($listeners as $listener) {
  63. $events->listen($event, $listener);
  64. }
  65. }
  66. // 后台路由通过注解自动注册
  67. // 注册定时任务
  68. $this->app->booted(function () {
  69. $schedule = $this->app->make(Schedule::class);
  70. // 每天00:30执行合伙人分红(处理昨天的数据)
  71. $schedule->command('urs-promotion:partner-dividend')
  72. ->dailyAt('00:30')
  73. ->description('URS合伙人分红 - 顶级达人享受手续费分红')
  74. ->withoutOverlapping() // 防止重复执行
  75. ->runInBackground(); // 后台运行
  76. });
  77. }
  78. }