zhangwencui
6 天以前 7619c19a67c2ac824f803090bab753fc5ea14408
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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 pullPrivateMessageList(
  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 } },
  );
}