import { http } from '@/utils/request' import type { ChatMessage } from '@/types' // 消息相关类型定义 export interface MessageResponse { id: string conversationId: string content: string type: string sender: string isRead: number aiReply?: string emotionAnalysis?: string createTime: string updateTime: string } export interface PageResult { records: T[] total: number size: number current: number pages: number } export interface MessagePageRequest { current: number size: number conversationId?: string type?: string sender?: string startTime?: string endTime?: string } export interface MessageSearchRequest { keyword: string limit: number conversationId?: string type?: string sender?: string startTime?: string endTime?: string } export interface MessageRecentRequest { limit: number conversationId?: string type?: string sender?: string } /** * 消息API服务 - 与web项目保持一致的接口 */ export const messageApi = { // 获取用户消息分页 getUserMessages: async (current: number = 1, size: number = 20) => { console.log('📨 调用getUserMessages API:', { current, size }) const response = await http.get(`/message/user/page`, { params: { current, size } }) console.log('📨 getUserMessages API响应:', response) return response }, // 搜索用户消息 searchUserMessages: async (keyword: string, limit: number = 50) => { console.log('🔍 调用searchUserMessages API:', { keyword, limit }) const response = await http.post(`/message/user/search`, { keyword, limit }) console.log('🔍 searchUserMessages API响应:', response) return response }, // 获取用户最近的聊天记录 - 修复:使用POST请求匹配后端接口 getRecentMessages: async (limit: number = 10) => { console.log('📝 调用getRecentMessages API:', { limit }) const response = await http.post(`/message/user/recent`, { limit }) console.log('📝 getRecentMessages API响应:', response) return response }, // 获取消息详情 getMessageById: async (id: string) => { console.log('📄 调用getMessageById API:', { id }) const response = await http.get(`/message/${id}`) console.log('📄 getMessageById API响应:', response) return response } } /** * 消息服务类 - 提供高级封装 */ class MessageService { /** * 获取用户消息分页 */ static async getUserMessages(current: number = 1, size: number = 20): Promise> { const response = await messageApi.getUserMessages(current, size) return response.data || response } /** * 搜索用户消息 */ static async searchUserMessages(request: MessageSearchRequest): Promise { const response = await messageApi.searchUserMessages(request.keyword, request.limit) return response.data || response } /** * 获取用户最近的聊天记录 */ static async getRecentMessages(request: MessageRecentRequest): Promise { console.log('📝 MessageService.getRecentMessages 调用:', request) const response = await messageApi.getRecentMessages(request.limit) console.log('📝 MessageService.getRecentMessages 响应:', response) // 处理响应数据结构 const messageList = response.data || response || [] return Array.isArray(messageList) ? messageList : [] } /** * 根据ID获取消息详情 */ static async getMessageById(id: string): Promise { const response = await messageApi.getMessageById(id) return response.data || response } /** * 转换消息格式为聊天消息格式 - 完整匹配后端字段 */ static convertToChatMessage(msg: MessageResponse): ChatMessage { console.log('🔄 转换消息格式:', msg) // 处理时间格式 - 后端返回 "2025-07-26 22:09:10" 格式 // 直接保持原始字符串格式,让前端UI层处理 let timestamp = msg.createTime console.log('🕐 保持原始时间格式:', msg.createTime) const chatMessage: ChatMessage = { id: msg.id, content: msg.content, type: msg.sender === 'user' ? 'user' : (msg.sender === 'ai' ? 'ai' : 'system'), timestamp: timestamp, conversationId: msg.conversationId, sessionId: msg.conversationId, // 别名,保持兼容性 status: 'sent', sender: msg.sender as 'user' | 'ai' | 'system', isRead: msg.isRead, role: msg.sender === 'user' ? 'user' : 'assistant' // 用于UI显示 } console.log('✅ 转换后的消息详情:', { 原始sender: msg.sender, 转换后role: chatMessage.role, 转换后type: chatMessage.type, 时间: msg.createTime + ' -> ' + timestamp }) console.log('✅ 转换后的消息:', chatMessage) return chatMessage } /** * 批量转换消息格式 */ static convertToChatMessages(messages: MessageResponse[]): ChatMessage[] { console.log('🔄 批量转换消息格式,数量:', messages.length) const chatMessages = messages.map(msg => this.convertToChatMessage(msg)) console.log('✅ 批量转换完成,结果:', chatMessages) return chatMessages } } export default MessageService