90 lines
2.8 KiB
TypeScript
90 lines
2.8 KiB
TypeScript
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<ImPrivateMessageApi.PrivateMessageRespVO>(
|
||
'/im/message/private/send',
|
||
data,
|
||
);
|
||
}
|
||
|
||
/** 拉取私聊消息(增量) */
|
||
export function pullPrivateMessages(
|
||
params: { minId: number | string; size: number },
|
||
signal?: AbortSignal,
|
||
) {
|
||
return requestClient.get<ImPrivateMessageApi.PrivateMessageRespVO[]>(
|
||
'/im/message/private/pull',
|
||
{ params, signal },
|
||
);
|
||
}
|
||
|
||
/** 查询私聊历史消息 */
|
||
export function getPrivateMessageList(params: ImPrivateMessageApi.PrivateMessageListReqVO) {
|
||
return requestClient.get<ImPrivateMessageApi.PrivateMessageRespVO[]>(
|
||
'/im/message/private/list',
|
||
{ params },
|
||
);
|
||
}
|
||
|
||
/** 标记私聊消息已读 */
|
||
export function readPrivateMessages(
|
||
receiverId: number | string,
|
||
messageId: number | string,
|
||
) {
|
||
return requestClient.put<boolean>('/im/message/private/read', undefined, {
|
||
params: { receiverId, messageId },
|
||
});
|
||
}
|
||
|
||
/** 查询对方已读到我发的最大消息 id(多端 / 离线后用于补齐已读状态) */
|
||
export function getPrivateMaxReadMessageId(
|
||
peerId: number | string,
|
||
signal?: AbortSignal,
|
||
) {
|
||
return requestClient.get<null | number>(
|
||
'/im/message/private/max-read-message-id',
|
||
{ params: { peerId }, signal },
|
||
);
|
||
}
|
||
|
||
/** 撤回私聊消息 */
|
||
export function recallPrivateMessage(id: number | string) {
|
||
return requestClient.delete<ImPrivateMessageApi.PrivateMessageRespVO>(
|
||
'/im/message/private/recall',
|
||
{ params: { id } },
|
||
);
|
||
}
|