blob: 958290e060b2739c8d42313c336cacfdbb81925d [file] [log] [blame]
BirdNETM632c0612025-05-27 17:41:40 +08001import { request } from '@umijs/max';
2import type {
3 SysUserMessage,
4 ChatContact,
5 ChatContactListParams,
6 ChatHistoryParams,
7 SendMessageParams,
8} from './data.d';
9
10// API 路径配置 - 可根据实际后端接口调整
11const API_CONFIG = {
12 CHAT_CONTACTS: '/api/system/message/contacts', // 可改为: '/api/message/contacts' 或其他路径
13 CHAT_HISTORY: '/api/system/message/list', // 可改为: '/api/message/history' 或其他路径
14 SEND_MESSAGE: '/api/system/message', // 可改为: '/api/message/send' 或其他路径
15 USER_INFO: '/api/system/user', // 可改为: '/api/user' 或其他路径
16};
17
18/** 获取聊天对象列表 */
19export async function getChatContactList(params?: ChatContactListParams) {
20 // 默认数据
21 const defaultData = [
22 {
23 userId: 2,
24 userName: '张三',
25 avatar: '',
26 lastMessage: '你好,请问有什么可以帮助你的吗?',
27 lastMessageTime: new Date(Date.now() - 1000 * 60 * 30),
28 unreadCount: 2
29 },
30 {
31 userId: 3,
32 userName: '李四',
33 avatar: '',
34 lastMessage: '关于最近的活动,我想了解更多细节。',
35 lastMessageTime: new Date(Date.now() - 1000 * 60 * 60 * 2),
36 unreadCount: 0
37 },
38 {
39 userId: 4,
40 userName: '王五',
41 avatar: '',
42 lastMessage: '好的,我知道了,谢谢!',
43 lastMessageTime: new Date(Date.now() - 1000 * 60 * 60 * 24),
44 unreadCount: 1
45 }
46 ];
47
48 try {
49 const queryString = params
50 ? `?${new URLSearchParams(params as Record<string, any>).toString()}`
51 : '';
52 const response = await request(`${API_CONFIG.CHAT_CONTACTS}${queryString}`, {
53 method: 'get',
54 });
55
56 // 如果接口返回空数据,使用默认数据
57 if (!response || response.length === 0) {
58 return defaultData;
59 }
60 return response;
61 } catch (error) {
62 // 接口报错时返回默认数据
63 console.warn('获取聊天对象列表接口异常,使用默认数据:', error);
64 return defaultData;
65 }
66
67}
68
69/** 获取与指定用户的聊天记录 */
70export async function getChatHistory(params: ChatHistoryParams) {
71 // 默认数据
72 const defaultData = [
73 {
74 messageId: 1,
75 senderId: params.userId,
76 receiverId: params.currentUserId || 1,
77 content: `这是来自用户${params.userId}的第一条消息`,
78 createTime: new Date(Date.now() - 1000 * 60 * 60 * 2),
79 delFlag: '0'
80 },
81 {
82 messageId: 2,
83 senderId: params.currentUserId || 1,
84 receiverId: params.userId,
85 content: '收到,感谢你的消息',
86 createTime: new Date(Date.now() - 1000 * 60 * 60),
87 delFlag: '0'
88 },
89 {
90 messageId: 3,
91 senderId: params.userId,
92 receiverId: params.currentUserId || 1,
93 content: `这是来自用户${params.userId}的最新消息,包含更多详细信息`,
94 createTime: new Date(Date.now() - 1000 * 60 * 30),
95 delFlag: '0'
96 }
97 ];
98
99 // try {
100 // const queryString = `?${new URLSearchParams(params as Record<string, any>).toString()}`;
101 // const response = await request(`${API_CONFIG.CHAT_HISTORY}${queryString}`, {
102 // method: 'get',
103 // });
104
105 // // 如果接口返回空数据,使用默认数据
106 // if (!response || response.length === 0) {
107 // return defaultData;
108 // }
109 // return response;
110 // } catch (error) {
111 // // 接口报错时返回默认数据
112 // console.warn('获取聊天记录接口异常,使用默认数据:', error);
113 // return defaultData;
114 // }
115 return defaultData;
116}
117
118/** 发送消息 */
119export async function sendMessage(params: SendMessageParams) {
120 try {
121 return await request(API_CONFIG.SEND_MESSAGE, {
122 method: 'post',
123 data: params,
124 });
125 } catch (error) {
126 // 发送消息失败时记录错误但不返回默认数据,让组件处理错误
127 console.error('发送消息接口异常:', error);
128 throw error; // 重新抛出错误,让调用方处理
129 }
130}
131
132/** 获取用户信息(用于聊天对象显示) */
133export async function getUserInfo(userId: number) {
134 // 默认用户信息
135 const defaultUserInfo = {
136 userId,
137 userName: `用户${userId}`,
138 avatar: ''
139 };
140
141 try {
142 const response = await request(`${API_CONFIG.USER_INFO}/${userId}`, {
143 method: 'get',
144 });
145
146 if (!response) {
147 return defaultUserInfo;
148 }
149 return response;
150 } catch (error) {
151 // 接口报错时返回默认用户信息
152 console.warn(`获取用户${userId}信息接口异常,使用默认数据:`, error);
153 return defaultUserInfo;
154 }
155}