$runParam ]); return false; } Log::info('DelayQueue开始更新上级达人等级', [ 'referrer_id' => $referrerId, 'original_user_id' => $originalUserId, 'level' => $level ]); // 执行达人等级更新(无需防重复检查,因为操作是幂等的) $startTime = microtime(true); $result = UrsTalentService::updateTalentLevel($referrerId); $endTime = microtime(true); Log::info('DelayQueue更新上级达人等级成功', [ 'referrer_id' => $referrerId, 'original_user_id' => $originalUserId, 'level' => $level, 'talent_level' => $result->talentLevel, 'direct_count' => $result->directCount, 'promotion_count' => $result->promotionCount, 'execution_time_ms' => round(($endTime - $startTime) * 1000, 2) ]); return true; } catch (\Exception $e) { Log::error('DelayQueue更新上级达人等级失败', [ 'referrer_id' => $referrerId ?? null, 'original_user_id' => $originalUserId ?? null, 'level' => $level ?? null, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); // 返回false,让DelayQueue知道任务失败 return false; } } /** * 批量更新多个用户的达人等级 * * @param array $userIds 用户ID数组 * @return array 更新结果 */ public static function batchUpdateTalentLevels(array $userIds): array { $results = []; foreach ($userIds as $userId) { try { $result = UrsTalentService::updateTalentLevel($userId); $results[$userId] = [ 'success' => true, 'talent_level' => $result->talentLevel, 'direct_count' => $result->directCount, 'promotion_count' => $result->promotionCount ]; } catch (\Exception $e) { $results[$userId] = [ 'success' => false, 'error' => $e->getMessage() ]; } } Log::info('批量更新达人等级完成', [ 'total_users' => count($userIds), 'success_count' => count(array_filter($results, fn($r) => $r['success'])), 'failed_count' => count(array_filter($results, fn($r) => !$r['success'])) ]); return $results; } }