import { requestClient } from '#/api/request'; export namespace ImPrivateMessageApi { /** 私聊消息 Response VO */ export interface PrivateMessageRespVO { id: number; // 消息编号 clientMessageId: string; // 客户端消息编号 senderId: number; // 发送人编号 receiverId: number; // 接收人编号 type: number; // 内容类型 content: string; // 消息内容(JSON 格式) status: number; // 消息状态(正常 / 已撤回) receiptStatus?: number; // 回执状态(不需要 / 待完成 / 已完成),对齐 ImMessageReceiptStatus sendTime: string; // 发送时间 } /** 私聊消息发送 Request VO */ export interface PrivateMessageSendReqVO { clientMessageId: string; // 客户端消息编号 receiverId: number; // 接收人编号 type: number; // 内容类型 content: string; // 消息内容(JSON 格式) receipt?: boolean; // 是否需要回执;不传后端默认 true(普通私聊用户消息) } /** 私聊历史消息列表 Request VO */ export interface PrivateMessageListReqVO { receiverId: number | string; // 接收人编号(对方) maxId?: number | string; // 起始消息编号(不含),为空则从最新消息开始 limit: number; // 拉取数量(1 ~ 200) } } /** 发送私聊消息 */ export function sendPrivateMessage(data: ImPrivateMessageApi.PrivateMessageSendReqVO) { return requestClient.post( '/im/message/private/send', data, ); } /** 拉取私聊消息(增量) */ export function pullPrivateMessages( params: { minId: number | string; size: number }, signal?: AbortSignal, ) { return requestClient.get( '/im/message/private/pull', { params, signal }, ); } /** 查询私聊历史消息 */ export function getPrivateMessageList(params: ImPrivateMessageApi.PrivateMessageListReqVO) { return requestClient.get( '/im/message/private/list', { params }, ); } /** 标记私聊消息已读 */ export function readPrivateMessages( receiverId: number | string, messageId: number | string, ) { return requestClient.put('/im/message/private/read', undefined, { params: { receiverId, messageId }, }); } /** 查询对方已读到我发的最大消息 id(多端 / 离线后用于补齐已读状态) */ export function getPrivateMaxReadMessageId( peerId: number | string, signal?: AbortSignal, ) { return requestClient.get( '/im/message/private/max-read-message-id', { params: { peerId }, signal }, ); } /** 撤回私聊消息 */ export function recallPrivateMessage(id: number | string) { return requestClient.delete( '/im/message/private/recall', { params: { id } }, ); }