gaoluyang
2026-06-29 27cd042df9aca0383a49f3514bc21958dd890912
src/api/im/friend/request/index.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,84 @@
import { requestClient } from '#/api/request';
export namespace ImFriendRequestApi {
  /** IM å¥½å‹ç”³è¯· Response VO */
  export interface FriendRequestRespVO {
    id: number; // ç”³è¯·ç¼–号
    fromUserId: number; // å‘起方用户编号
    toUserId: number; // æŽ¥æ”¶æ–¹ç”¨æˆ·ç¼–号
    handleResult: number; // å¤„理结果;0=未处理;1=同意;2=拒绝
    applyContent?: string; // ç”³è¯·ç†ç”±
    handleContent?: string; // å¤„理理由(接收方拒绝时可选填)
    addSource?: number; // æ·»åŠ æ¥æºï¼›å‚è§ ImFriendAddSourceEnum
    handleTime?: string; // å¤„理时间
    createTime: string; // ç”³è¯·åˆ›å»ºæ—¶é—´
    updateTime?: number; // æœ€è¿‘更新时间(毫秒时间戳,增量拉取游标用)
    fromNickname?: string; // å‘起方昵称
    fromAvatar?: string; // å‘起方头像
    toNickname?: string; // æŽ¥æ”¶æ–¹æ˜µç§°
    toAvatar?: string; // æŽ¥æ”¶æ–¹å¤´åƒ
  }
  /** IM å¥½å‹ç”³è¯·å‘èµ· Request VO */
  export interface FriendRequestApplyReqVO {
    toUserId: number; // æŽ¥æ”¶æ–¹ç”¨æˆ·ç¼–号
    applyContent?: string; // ç”³è¯·ç†ç”±
    displayName?: string; // å¯¹æŽ¥æ”¶æ–¹çš„备注(仅自己可见)
    addSource?: number; // æ·»åŠ æ¥æº
  }
}
/** å‘起好友申请 */
export function applyFriendRequest(data: ImFriendRequestApi.FriendRequestApplyReqVO) {
  return requestClient.post<null | number>('/im/friend-request/apply', data);
}
/** åŒæ„å¥½å‹ç”³è¯· */
export function agreeFriendRequest(id: number | string) {
  return requestClient.put<boolean>('/im/friend-request/agree', undefined, {
    params: { id },
  });
}
/** æ‹’绝好友申请 */
export function refuseFriendRequest(
  id: number | string,
  handleContent?: string,
) {
  return requestClient.put<boolean>('/im/friend-request/refuse', undefined, {
    params: { id, handleContent },
  });
}
/** æŸ¥è¯¢ã€Œæˆ‘相关」的好友申请列表(游标分页:传 maxId åŠ è½½æ›´å¤šï¼‰ */
export function getMyFriendRequestList(limit: number, maxId?: number) {
  const params: Record<string, number> = { limit };
  if (maxId != null) {
    params.maxId = maxId;
  }
  return requestClient.get<ImFriendRequestApi.FriendRequestRespVO[]>(
    '/im/friend-request/list',
    { params },
  );
}
/** å¢žé‡æ‹‰å–「我相关」的好友申请变更(重连 / ç¦»çº¿è¡¥å¿ï¼‰ */
export function pullMyFriendRequestList(params: {
  lastId?: number;
  lastUpdateTime?: number;
  limit: number;
}) {
  return requestClient.get<ImFriendRequestApi.FriendRequestRespVO[]>(
    '/im/friend-request/pull',
    { params },
  );
}
/** æŒ‰ id å•查「我相关」的申请记录(带越权过滤;WebSocket é€šçŸ¥åˆ°è¾¾åŽç”¨ï¼‰ */
export function getMyFriendRequest(id: number) {
  return requestClient.get<ImFriendRequestApi.FriendRequestRespVO | null>(
    '/im/friend-request/get',
    { params: { id } },
  );
}