service->createSession($request->input('session_name')); return (new ChatSessionResource($session))->response()->setStatusCode(201); } /** * 追加一条消息。 * * @param string $sessionId 会话 ID。 * @param AppendMessageRequest $request 追加消息的请求实例。 * @return JsonResponse 添加消息的响应,包含添加的消息信息。 */ public function append(string $sessionId, AppendMessageRequest $request): JsonResponse { try { $message = $this->service->appendMessage([ 'session_id' => $sessionId, ...$request->validated(), ]); } catch (ChatSessionStatusException $e) { return response()->json(['message' => $e->getMessage()], 403); } return (new MessageResource($message))->response()->setStatusCode(201); } /** * 获取指定会话的消息列表。 * * @param Request $request 包含查询参数的请求实例,其中包括 after_seq 和 limit。 * @param string $sessionId 会话的唯一标识符。 * @return JsonResponse 返回包含消息列表的 JSON 响应。 */ public function listMessages(Request $request, string $sessionId): JsonResponse { $afterSeq = (int) $request->query('after_seq', 0); $limit = (int) $request->query('limit', 50); $limit = $limit > 0 && $limit <= 200 ? $limit : 50; $messages = $this->service->listMessagesBySeq($sessionId, $afterSeq, $limit); return MessageResource::collection($messages)->response(); } /** * 获取会话列表。 * * @param Request $request 获取会话列表的请求实例。 * @return JsonResponse 获取的会话列表的 JSON 响应。 */ public function index(Request $request): JsonResponse { $page = (int) $request->query('page', 1); $perPage = (int) $request->query('per_page', 15); $perPage = $perPage > 0 && $perPage <= 100 ? $perPage : 15; $filter = [ 'status' => $request->query('status'), 'q' => $request->query('q'), ]; $paginator = $this->service->listSessions($filter, $page, $perPage); return ChatSessionResource::collection($paginator)->response(); } /** * 更新会话。 * * @param string $sessionId 会话的唯一标识符。 * @param UpdateSessionRequest $request 更新会话的请求实例。 * @return JsonResponse 更新后的会话的 JSON 响应。 */ public function update(string $sessionId, UpdateSessionRequest $request): JsonResponse { try { $session = $this->service->updateSession($sessionId, $request->validated()); } catch (ChatSessionStatusException $e) { return response()->json(['message' => $e->getMessage()], 403); } return (new ChatSessionResource($session))->response(); } }