gaoluyang
2026-06-24 712aa51536236d43e87273e4ce45ac5691dffad8
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
import { requestClient } from '#/api/request';
 
export namespace ImFriendApi {
  /** IM 好友 Response VO */
  export interface FriendRespVO {
    id: number; // 关系记录编号
    friendUserId: number; // 好友的用户编号
    silent?: boolean; // 是否免打扰
    displayName?: string; // 好友展示备注(仅自己可见)
    displayNamePinyin?: string; // 备注的拼音(小写无空格,前端按首字母分桶 / 拼音搜索)
    addSource?: number; // 添加来源;参见 ImFriendAddSourceEnum
    pinned?: boolean; // 是否置顶联系人
    blocked?: boolean; // 是否拉黑
    status?: number; // 好友状态(0=正常,1=已删除)
    addTime?: string; // 添加好友时间
    deleteTime?: string; // 删除好友时间
    updateTime?: number; // 最近更新时间(毫秒时间戳,增量拉取游标用)
    nickname?: string; // 好友昵称
    nicknamePinyin?: string; // 昵称的拼音(小写无空格,前端按首字母分桶 / 拼音搜索)
    avatar?: string; // 好友头像
  }
 
  /** IM 好友更新 Request VO */
  export interface FriendUpdateReqVO {
    friendUserId: number; // 好友的用户编号
    silent?: boolean; // 是否免打扰
    displayName?: string; // 好友展示备注
    pinned?: boolean; // 是否置顶联系人
  }
}
 
 
/** 获得当前登录用户的好友列表 */
export function getMyFriendList() {
  return requestClient.get<ImFriendApi.FriendRespVO[]>('/im/friend/list');
}
 
/** 增量拉取当前用户的好友关系(重连 / 离线补偿) */
export function pullMyFriendList(params: {
  lastId?: number;
  lastUpdateTime?: number;
  limit: number;
}) {
  return requestClient.get<ImFriendApi.FriendRespVO[]>('/im/friend/pull', { params });
}
 
/** 获得好友详情 */
export function getFriend(friendUserId: number | string) {
  return requestClient.get<ImFriendApi.FriendRespVO>('/im/friend/get', {
    params: { friendUserId },
  });
}
 
/** 删除好友(单向软删除) */
export function deleteFriend(friendUserId: number | string, clear: boolean) {
  return requestClient.delete<boolean>('/im/friend/delete', {
    params: { friendUserId, clear },
  });
}
 
/** 更新好友信息(备注 / 免打扰 / 联系人置顶) */
export function updateFriend(data: ImFriendApi.FriendUpdateReqVO) {
  return requestClient.put<boolean>('/im/friend/update', data);
}
 
/** 拉黑好友(必须先是好友;单边屏蔽对方私聊消息) */
export function blockFriend(friendUserId: number | string) {
  return requestClient.put<boolean>('/im/friend/block', undefined, {
    params: { friendUserId },
  });
}
 
/** 移出黑名单 */
export function unblockFriend(friendUserId: number | string) {
  return requestClient.put<boolean>('/im/friend/unblock', undefined, {
    params: { friendUserId },
  });
}