blob: 958290e060b2739c8d42313c336cacfdbb81925d [file] [log] [blame]
import { request } from '@umijs/max';
import type {
SysUserMessage,
ChatContact,
ChatContactListParams,
ChatHistoryParams,
SendMessageParams,
} from './data.d';
// API 路径配置 - 可根据实际后端接口调整
const API_CONFIG = {
CHAT_CONTACTS: '/api/system/message/contacts', // 可改为: '/api/message/contacts' 或其他路径
CHAT_HISTORY: '/api/system/message/list', // 可改为: '/api/message/history' 或其他路径
SEND_MESSAGE: '/api/system/message', // 可改为: '/api/message/send' 或其他路径
USER_INFO: '/api/system/user', // 可改为: '/api/user' 或其他路径
};
/** 获取聊天对象列表 */
export async function getChatContactList(params?: ChatContactListParams) {
// 默认数据
const defaultData = [
{
userId: 2,
userName: '张三',
avatar: '',
lastMessage: '你好,请问有什么可以帮助你的吗?',
lastMessageTime: new Date(Date.now() - 1000 * 60 * 30),
unreadCount: 2
},
{
userId: 3,
userName: '李四',
avatar: '',
lastMessage: '关于最近的活动,我想了解更多细节。',
lastMessageTime: new Date(Date.now() - 1000 * 60 * 60 * 2),
unreadCount: 0
},
{
userId: 4,
userName: '王五',
avatar: '',
lastMessage: '好的,我知道了,谢谢!',
lastMessageTime: new Date(Date.now() - 1000 * 60 * 60 * 24),
unreadCount: 1
}
];
try {
const queryString = params
? `?${new URLSearchParams(params as Record<string, any>).toString()}`
: '';
const response = await request(`${API_CONFIG.CHAT_CONTACTS}${queryString}`, {
method: 'get',
});
// 如果接口返回空数据,使用默认数据
if (!response || response.length === 0) {
return defaultData;
}
return response;
} catch (error) {
// 接口报错时返回默认数据
console.warn('获取聊天对象列表接口异常,使用默认数据:', error);
return defaultData;
}
}
/** 获取与指定用户的聊天记录 */
export async function getChatHistory(params: ChatHistoryParams) {
// 默认数据
const defaultData = [
{
messageId: 1,
senderId: params.userId,
receiverId: params.currentUserId || 1,
content: `这是来自用户${params.userId}的第一条消息`,
createTime: new Date(Date.now() - 1000 * 60 * 60 * 2),
delFlag: '0'
},
{
messageId: 2,
senderId: params.currentUserId || 1,
receiverId: params.userId,
content: '收到,感谢你的消息',
createTime: new Date(Date.now() - 1000 * 60 * 60),
delFlag: '0'
},
{
messageId: 3,
senderId: params.userId,
receiverId: params.currentUserId || 1,
content: `这是来自用户${params.userId}的最新消息,包含更多详细信息`,
createTime: new Date(Date.now() - 1000 * 60 * 30),
delFlag: '0'
}
];
// try {
// const queryString = `?${new URLSearchParams(params as Record<string, any>).toString()}`;
// const response = await request(`${API_CONFIG.CHAT_HISTORY}${queryString}`, {
// method: 'get',
// });
// // 如果接口返回空数据,使用默认数据
// if (!response || response.length === 0) {
// return defaultData;
// }
// return response;
// } catch (error) {
// // 接口报错时返回默认数据
// console.warn('获取聊天记录接口异常,使用默认数据:', error);
// return defaultData;
// }
return defaultData;
}
/** 发送消息 */
export async function sendMessage(params: SendMessageParams) {
try {
return await request(API_CONFIG.SEND_MESSAGE, {
method: 'post',
data: params,
});
} catch (error) {
// 发送消息失败时记录错误但不返回默认数据,让组件处理错误
console.error('发送消息接口异常:', error);
throw error; // 重新抛出错误,让调用方处理
}
}
/** 获取用户信息(用于聊天对象显示) */
export async function getUserInfo(userId: number) {
// 默认用户信息
const defaultUserInfo = {
userId,
userName: `用户${userId}`,
avatar: ''
};
try {
const response = await request(`${API_CONFIG.USER_INFO}/${userId}`, {
method: 'get',
});
if (!response) {
return defaultUserInfo;
}
return response;
} catch (error) {
// 接口报错时返回默认用户信息
console.warn(`获取用户${userId}信息接口异常,使用默认数据:`, error);
return defaultUserInfo;
}
}