ProcessActiveSkillsCommand.php 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. namespace App\Module\Pet\Console;
  3. use App\Module\Fund\Logic\Log as LogicLog;
  4. use App\Module\Pet\Jobs\ProcessActiveSkillsJob;
  5. use Illuminate\Console\Command;
  6. use Illuminate\Support\Env;
  7. use Illuminate\Support\Facades\Log;
  8. /**
  9. * 处理宠物激活技能的定时命令
  10. *
  11. * 每分钟执行一次,处理所有激活中的宠物技能
  12. */
  13. class ProcessActiveSkillsCommand extends Command
  14. {
  15. /**
  16. * 命令签名
  17. *
  18. * @var string
  19. */
  20. protected $signature = 'pet:process-active-skills {--sync : 同步处理,不使用队列}';
  21. /**
  22. * 命令描述
  23. *
  24. * @var string
  25. */
  26. protected $description = '处理宠物激活技能的定时任务';
  27. /**
  28. * 执行命令
  29. *
  30. * @return int
  31. */
  32. public function handle()
  33. {
  34. $this->info('开始处理宠物激活技能...');
  35. $check = Env::get('PET_AUTO_SKILL_CHECK',1);
  36. if(!$check){
  37. Log::info('PET_AUTO_SKILL_CHECK关闭,不处理宠物激活技能');
  38. return Command::SUCCESS;
  39. }
  40. try {
  41. $sync = $this->option('sync');
  42. $sync =true; // 异步处理屏蔽,全部使用同步处理
  43. if ($sync) {
  44. // 同步处理,直接执行任务逻辑
  45. $this->info('使用同步模式处理...');
  46. $job = new ProcessActiveSkillsJob();
  47. $job->run();
  48. $this->info('宠物激活技能处理完成(同步模式)');
  49. Log::info('宠物激活技能定时命令执行成功(同步模式)');
  50. } else {
  51. // 分发任务到队列
  52. ProcessActiveSkillsJob::dispatch();
  53. $this->info('宠物激活技能处理任务已分发到队列');
  54. Log::info('宠物激活技能定时命令执行成功(队列模式)');
  55. }
  56. return Command::SUCCESS;
  57. } catch (\Exception $e) {
  58. $this->error('处理宠物激活技能失败: ' . $e->getMessage());
  59. Log::error('宠物激活技能定时命令执行失败', [
  60. 'error' => $e->getMessage(),
  61. 'trace' => $e->getTraceAsString(),
  62. 'sync_mode' => $this->option('sync')
  63. ]);
  64. return Command::FAILURE;
  65. }
  66. }
  67. }