| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- <?php
- namespace App\Module\Pet\Console;
- use App\Module\Fund\Logic\Log as LogicLog;
- use App\Module\Pet\Jobs\ProcessActiveSkillsJob;
- use Illuminate\Console\Command;
- use Illuminate\Support\Env;
- use Illuminate\Support\Facades\Log;
- /**
- * 处理宠物激活技能的定时命令
- *
- * 每分钟执行一次,处理所有激活中的宠物技能
- */
- class ProcessActiveSkillsCommand extends Command
- {
- /**
- * 命令签名
- *
- * @var string
- */
- protected $signature = 'pet:process-active-skills {--sync : 同步处理,不使用队列}';
- /**
- * 命令描述
- *
- * @var string
- */
- protected $description = '处理宠物激活技能的定时任务';
- /**
- * 执行命令
- *
- * @return int
- */
- public function handle()
- {
- $this->info('开始处理宠物激活技能...');
- $check = Env::get('PET_AUTO_SKILL_CHECK',1);
- if(!$check){
- Log::info('PET_AUTO_SKILL_CHECK关闭,不处理宠物激活技能');
- return Command::SUCCESS;
- }
- try {
- $sync = $this->option('sync');
- $sync =true; // 异步处理屏蔽,全部使用同步处理
- if ($sync) {
- // 同步处理,直接执行任务逻辑
- $this->info('使用同步模式处理...');
- $job = new ProcessActiveSkillsJob();
- $job->run();
- $this->info('宠物激活技能处理完成(同步模式)');
- Log::info('宠物激活技能定时命令执行成功(同步模式)');
- } else {
- // 分发任务到队列
- ProcessActiveSkillsJob::dispatch();
- $this->info('宠物激活技能处理任务已分发到队列');
- Log::info('宠物激活技能定时命令执行成功(队列模式)');
- }
- return Command::SUCCESS;
- } catch (\Exception $e) {
- $this->error('处理宠物激活技能失败: ' . $e->getMessage());
- Log::error('宠物激活技能定时命令执行失败', [
- 'error' => $e->getMessage(),
- 'trace' => $e->getTraceAsString(),
- 'sync_mode' => $this->option('sync')
- ]);
- return Command::FAILURE;
- }
- }
- }
|