mi-assessment/uniapp/api/chat.js
2026-02-09 14:45:06 +08:00

108 lines
2.5 KiB
JavaScript

/**
* 聊天接口模块
*/
import { get, post } from './request'
import config from '../config/index'
import { getToken } from '../utils/storage'
/**
* 获取会话列表
*/
export async function getSessions() {
const response = await get('/chat/sessions')
if (response && response.code === 0) {
const list = Array.isArray(response.data) ? response.data : (response.data?.list || [])
const mappedList = list.map(item => ({
sessionId: item.sessionId,
targetUserId: item.otherUserId,
targetNickname: item.otherNickname,
targetAvatar: item.otherAvatar,
lastMessage: item.lastMessageContent,
lastMessageType: item.lastMessageType,
lastMessageTime: item.lastMessageTime,
unreadCount: item.unreadCount
}))
return { success: true, data: mappedList }
}
return { success: false, data: [] }
}
/**
* 获取消息列表
*/
export async function getMessages(sessionId, pageIndex = 1, pageSize = 20) {
const response = await get('/chat/messages', { sessionId, pageIndex, pageSize })
return response
}
/**
* 发送消息
*/
export async function sendMessage(data) {
const response = await post('/chat/send', data)
return response
}
/**
* 获取未读消息数
*/
export async function getUnreadCount() {
const response = await get('/chat/unreadCount')
return response
}
/**
* 获取或创建会话
*/
export async function getOrCreateSession(targetUserId) {
const response = await get('/chat/session', { targetUserId })
return response
}
/**
* 上传语音文件
*/
export async function uploadVoice(filePath) {
return new Promise((resolve, reject) => {
const uploadUrl = `${config.API_BASE_URL}/upload/voice`
uni.uploadFile({
url: uploadUrl,
filePath: filePath,
name: 'file',
header: {
'Authorization': `Bearer ${getToken()}`
},
success: (res) => {
if (res.statusCode === 200) {
try {
const data = JSON.parse(res.data)
if (data.code === 0) {
resolve(data)
} else {
reject(new Error(data.message || '上传失败'))
}
} catch (e) {
reject(new Error('解析响应失败'))
}
} else {
reject(new Error(`上传失败: ${res.statusCode}`))
}
},
fail: (err) => {
reject(new Error(err.errMsg || '网络错误'))
}
})
})
}
export default {
getSessions,
getMessages,
sendMessage,
getUnreadCount,
getOrCreateSession,
uploadVoice
}