skill_name) { case \App\Module\Pet\Enums\PET_SKILL_NAME::AUTO_HARVESTING->value: $autoSkillLogic->processAutoHarvest($activeSkill); break; case \App\Module\Pet\Enums\PET_SKILL_NAME::AUTO_PLANTING->value: $autoSkillLogic->processAutoPlant($activeSkill); break; case \App\Module\Pet\Enums\PET_SKILL_NAME::AUTO_WEEDING->value: $autoSkillLogic->processAutoWeeding($activeSkill); break; case \App\Module\Pet\Enums\PET_SKILL_NAME::AUTO_WATERING->value: $autoSkillLogic->processAutoWatering($activeSkill); break; case \App\Module\Pet\Enums\PET_SKILL_NAME::AUTO_PEST_CONTROL->value: $autoSkillLogic->processAutoPestControl($activeSkill); break; case \App\Module\Pet\Enums\PET_SKILL_NAME::AUTO_FERTILIZING->value: $autoSkillLogic->processAutoFertilizing($activeSkill); break; default: Log::warning('未知的技能类型', [ 'active_skill_id' => $activeSkill->id, 'skill_name' => $activeSkill->skill_name ]); break; } // 更新最后检查时间 $activeSkill->updateLastCheckTime(); } public function run(): bool { Log::info('开始处理宠物激活技能定时任务'); try { // 获取所有生效中的技能 $activeSkills = PetActiveSkill::active()->get(); Log::info('找到激活技能数量', [ 'count' => $activeSkills->count() ]); $processedCount = 0; $expiredCount = 0; /** * @var PetActiveSkill $activeSkill */ foreach ($activeSkills as $activeSkill) { try { // 检查技能是否已过期 if ($activeSkill->isExpired()) { $activeSkill->markAsExpired(); $expiredCount++; Log::info('技能已过期', [ 'active_skill_id' => $activeSkill->id, 'pet_id' => $activeSkill->pet_id, 'skill_name' => $activeSkill->skill_name ]); continue; } // 检查是否需要执行检查 if (!$activeSkill->shouldCheck()) { Log::debug('shouldCheck false', [ 'active_skill_id' => $activeSkill->id, 'pet_id' => $activeSkill->pet_id, 'skill_name' => $activeSkill->skill_name ]); continue; } Log::debug('shouldCheck false', [ 'active_skill_id' => $activeSkill->id, 'pet_id' => $activeSkill->pet_id, 'skill_name' => $activeSkill->skill_name ]); // 处理技能效果 $this->processSkillEffect($activeSkill); $processedCount++; } catch (\Exception $e) { Log::error('处理单个激活技能失败', [ 'active_skill_id' => $activeSkill->id, 'pet_id' => $activeSkill->pet_id, 'skill_name' => $activeSkill->skill_name, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); } } Log::info('宠物激活技能定时任务完成', [ 'total_skills' => $activeSkills->count(), 'processed_count' => $processedCount, 'expired_count' => $expiredCount ]); } catch (\Exception $e) { Log::error('处理宠物激活技能定时任务失败', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); throw $e; } return true; } public function payload() { return []; } }