UrsPromotionServiceProvider.php 2.6 KB

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