admin; $query = $admin->isSuperAdmin() ? Client::query() : $admin->clients(); $clients = $query->with('llmProvider')->get(); return response()->json($clients); } public function store(Request $request): JsonResponse { try { $validated = $request->validate([ 'name' => 'required|string|max:100', 'llm_provider_id' => 'required|exists:llm_providers,id', ]); DB::beginTransaction(); $client = Client::create($validated); // Associate client with admin $request->admin->clients()->attach($client->id); $this->logService->logOperation( 'admin', $request->admin->id, "Created client: {$client->name}" ); DB::commit(); return response()->json($client, 201); } catch (ValidationException $e) { DB::rollBack(); return response()->json([ 'error' => 'validation_error', 'message' => '请求参数验证失败。', 'errors' => $e->errors(), ], 422); } catch (\Exception $e) { DB::rollBack(); Log::error('Error creating client', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return response()->json([ 'error' => 'server_error', 'message' => '服务器内部错误。', ], 500); } } public function update(Request $request, int $id): JsonResponse { try { $client = $this->getAuthorizedClient($request->admin, $id); $validated = $request->validate([ 'name' => 'required|string|max:100', 'llm_provider_id' => 'required|exists:llm_providers,id', ]); $client->update($validated); $this->logService->logOperation( 'admin', $request->admin->id, "Updated client: {$client->name}" ); return response()->json($client); } catch (ValidationException $e) { return response()->json([ 'error' => 'validation_error', 'message' => '请求参数验证失败。', 'errors' => $e->errors(), ], 422); } catch (\Exception $e) { Log::error('Error updating client', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return response()->json([ 'error' => 'server_error', 'message' => '服务器内部错误。', ], 500); } } public function destroy(Request $request, int $id): JsonResponse { try { $client = $this->getAuthorizedClient($request->admin, $id); $clientName = $client->name; $client->delete(); $this->logService->logOperation( 'admin', $request->admin->id, "Deleted client: {$clientName}" ); return response()->json([ 'message' => '客户用户已删除。', ]); } catch (\Exception $e) { Log::error('Error deleting client', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return response()->json([ 'error' => 'server_error', 'message' => '服务器内部错误。', ], 500); } } public function generateAuthToken(Request $request, int $id): JsonResponse { try { $client = $this->getAuthorizedClient($request->admin, $id); $validated = $request->validate([ 'expires_in_days' => 'nullable|integer|min:1', ]); $token = $this->tokenService->generateAuthToken( $client, $validated['expires_in_days'] ?? null ); $this->logService->logOperation( 'admin', $request->admin->id, "Generated auth token for client: {$client->name}" ); return response()->json([ 'client_id' => $client->id, 'auth_token' => $token->token, 'created_at' => $token->created_at, 'expires_at' => $token->expires_at, ]); } catch (ValidationException $e) { return response()->json([ 'error' => 'validation_error', 'message' => '请求参数验证失败。', 'errors' => $e->errors(), ], 422); } catch (\Exception $e) { Log::error('Error generating auth token', [ 'error' => $e->getMessage(), 'trace' => $e->getTraceAsString(), ]); return response()->json([ 'error' => 'server_error', 'message' => '服务器内部错误。', ], 500); } } private function getAuthorizedClient($admin, int $id): Client { $query = $admin->isSuperAdmin() ? Client::query() : $admin->clients(); $client = $query->findOrFail($id); return $client; } }