49 lines
1.8 KiB
TypeScript
49 lines
1.8 KiB
TypeScript
import type { AxiosRequestConfig } from 'axios';
|
|
import type { ApiClient } from '../types';
|
|
import type {
|
|
CreateChatSessionRequest,
|
|
UpdateChatSessionRequest,
|
|
SendMessageRequest,
|
|
GetChatSessionsRequest,
|
|
GetChatSessionsResponse,
|
|
GetChatMessagesRequest,
|
|
GetChatMessagesResponse,
|
|
MarkMessagesAsReadRequest,
|
|
MarkMessagesAsReadResponse
|
|
} from '@/types/chat/api';
|
|
import type { ChatSession, ChatMessage } from '@/types/chat/base';
|
|
|
|
// 聊天API服务工厂函数
|
|
export const chatApi = (client: ApiClient) => ({
|
|
// 创建聊天会话
|
|
createSession: (data: CreateChatSessionRequest): Promise<{ session: ChatSession }> => {
|
|
return client.post('/chat/sessions', data);
|
|
},
|
|
|
|
// 更新聊天会话(纯充数那个)
|
|
updateSession: ({ sessionId, ...data }: UpdateChatSessionRequest): Promise<{ session: ChatSession }> => {
|
|
return client.put(`/chat/sessions/${sessionId}`, data);
|
|
},
|
|
|
|
// 发送消息
|
|
sendMessage: (data: SendMessageRequest): Promise<{ message: ChatMessage }> => {
|
|
return client.post(`/chat/sessions/${data.sessionId}/messages`, data);
|
|
},
|
|
|
|
// 获取聊天会话列表(不知道写了个什么玩意儿,转什么,应该不用参数的)
|
|
getSessions: (params?: GetChatSessionsRequest): Promise<GetChatSessionsResponse> => {
|
|
const config: AxiosRequestConfig = params ? { params } : {};
|
|
return client.get('/chat/sessions', config);
|
|
},
|
|
|
|
// 获取聊天消息
|
|
getMessages: ({ sessionId, ...params }: GetChatMessagesRequest): Promise<GetChatMessagesResponse> => {
|
|
return client.get(`/chat/sessions/${sessionId}/messages`, { params });
|
|
},
|
|
|
|
// 标记消息已读
|
|
markMessagesAsRead: ({ sessionId, messageIds }: MarkMessagesAsReadRequest): Promise<MarkMessagesAsReadResponse> => {
|
|
return client.post(`/chat/sessions/${sessionId}/read`, { messageIds });
|
|
}
|
|
});
|