getKey(); if (empty($keys)) { return $this->response()->error('请选择要更新的用户'); } try { // 获取选中的达人记录 $talents = UrsUserTalent::whereIn('id', $keys)->get(); if ($talents->isEmpty()) { return $this->response()->error('未找到要更新的用户达人记录'); } // 提取用户ID数组 $ursUserIds = $talents->pluck('user_id')->toArray(); // 批量更新达人等级 $results = UrsTalentService::batchUpdateTalentLevels($ursUserIds); // 统计更新结果 $successCount = 0; $failureCount = 0; $upgradedUsers = []; $errorMessages = []; foreach ($results as $ursUserId => $result) { if ($result['success']) { $successCount++; // 检查是否有等级变化 $originalTalent = $talents->where('user_id', $ursUserId)->first(); if ($originalTalent && $originalTalent->talent_level !== $result['talent_level']) { $oldLevelName = UrsTalentLevel::getLevelName($originalTalent->talent_level); $newLevelName = UrsTalentLevel::getLevelName($result['talent_level']); $upgradedUsers[] = "URS用户{$ursUserId}: {$oldLevelName} → {$newLevelName}"; } } else { $failureCount++; $errorMessages[] = "URS用户{$ursUserId}: {$result['error']}"; } } // 构建响应消息 $message = "批量更新完成!成功更新 {$successCount} 个用户"; if ($failureCount > 0) { $message .= ",失败 {$failureCount} 个用户"; } if (!empty($upgradedUsers)) { $message .= "\n\n等级变化:\n" . implode("\n", $upgradedUsers); } if (!empty($errorMessages)) { $message .= "\n\n失败详情:\n" . implode("\n", array_slice($errorMessages, 0, 5)); if (count($errorMessages) > 5) { $message .= "\n...还有 " . (count($errorMessages) - 5) . " 个错误"; } } // 记录操作日志 Log::info('批量更新URS达人等级', [ 'operator' => Admin::user()->username ?? 'system', 'selected_count' => count($keys), 'success_count' => $successCount, 'failure_count' => $failureCount, 'urs_user_ids' => $ursUserIds, 'upgraded_users' => $upgradedUsers, ]); if ($failureCount === 0) { return $this->response() ->success($message) ->refresh(); } else { return $this->response() ->warning($message) ->refresh(); } } catch (\Exception $e) { Log::error('批量更新URS达人等级失败', [ 'operator' => Admin::user()->username ?? 'system', 'selected_keys' => $keys, 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString() ]); return $this->response()->error('批量更新失败:' . $e->getMessage()); } } }