gaoluyang
2026-06-29 27cd042df9aca0383a49f3514bc21958dd890912
src/api/im/group/index.ts
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,146 @@
import type { ImGroupMessageApi } from '#/api/im/message/group';
import { requestClient } from '#/api/request';
export namespace ImGroupApi {
  /** ç¾¤ Response VO */
  export interface GroupRespVO {
    id: number; // ç¼–号
    name: string; // ç¾¤åç§°
    ownerUserId: number; // ç¾¤ä¸»ç”¨æˆ·ç¼–号
    avatar?: string; // ç¾¤å¤´åƒ
    notice?: string; // ç¾¤å…¬å‘Š
    banned?: boolean; // æ˜¯å¦å°ç¦
    mutedAll?: boolean; // æ˜¯å¦å…¨ç¾¤ç¦è¨€
    joinApproval?: boolean; // è¿›ç¾¤æ˜¯å¦éœ€ç¾¤ä¸» / ç®¡ç†å‘˜å®¡æ‰¹
    bannedTime?: string; // å°ç¦æ—¶é—´
    status: number; // ç¾¤çŠ¶æ€ï¼ˆ0=正常,1=已解散)
    dissolvedTime?: string; // è§£æ•£æ—¶é—´
    createTime?: string; // åˆ›å»ºæ—¶é—´
    pinnedMessages?: ImGroupMessageApi.GroupMessageRespVO[]; // ç¾¤ç½®é¡¶æ¶ˆæ¯åˆ—表(后端关联回填,仅当登录用户是群成员时非空)
    joinStatus?: number; // å½“前登录用户在该群的成员状态(参见 CommonStatusEnum:0 åœ¨ç¾¤ / 1 å·²é€€ç¾¤ï¼‰ï¼›åŽ†å²é€€ç¾¤ç¾¤ä»è¿”å›žï¼Œä¾›å±•ç¤ºç¦»çº¿æ¶ˆæ¯çš„ç¾¤å / å¤´åƒ
    groupRemark?: string; // å½“前登录用户对该群的备注
    silent?: boolean; // å½“前登录用户是否免打扰
  }
  /** ç¾¤æ¶ˆæ¯ç½®é¡¶ / å–消置顶 Request VO */
  export interface GroupMessagePinReqVO {
    id: number; // ç¾¤ç¼–号
    messageId: number; // æ¶ˆæ¯ç¼–号
  }
  /** ç¾¤åˆ›å»º Request VO */
  export interface GroupCreateReqVO {
    name: string; // ç¾¤åç§°
    memberUserIds?: number[]; // åˆå§‹æˆå‘˜ç”¨æˆ·ç¼–号列表(建群同时邀请的好友,不含创建者自己)
    joinApproval?: boolean; // è¿›ç¾¤æ˜¯å¦éœ€å®¡æ‰¹ï¼›ä¸ä¼ é»˜è®¤ false è‡ªç”±è¿›ç¾¤
  }
  /** ç¾¤æ›´æ–° Request VO */
  export interface GroupUpdateReqVO {
    id: number; // ç¾¤ç¼–号
    name?: string; // ç¾¤åç§°
    avatar?: string; // ç¾¤å¤´åƒ
    notice?: string; // ç¾¤å…¬å‘Š
    joinApproval?: boolean; // è¿›ç¾¤æ˜¯å¦éœ€å®¡æ‰¹
  }
  /** æ·»åŠ  / æ’¤é”€ç¾¤ç®¡ç†å‘˜ Request VO */
  export interface GroupAdminReqVO {
    id: number; // ç¾¤ç¼–号
    userIds: number[]; // ç›®æ ‡ç”¨æˆ·ç¼–号列表
  }
  /** ç¾¤ä¸»è½¬è®© Request VO */
  export interface GroupTransferOwnerReqVO {
    id: number; // ç¾¤ç¼–号
    newOwnerUserId: number; // æ–°ç¾¤ä¸»ç”¨æˆ·ç¼–号
  }
  /** å…¨ç¾¤ç¦è¨€ / å–消 Request VO */
  export interface GroupMuteAllReqVO {
    id: number; // ç¾¤ç¼–号
    mutedAll: boolean; // æ˜¯å¦å…¨ç¾¤ç¦è¨€
  }
  /** æˆå‘˜ç¦è¨€ Request VO */
  export interface GroupMuteMemberReqVO {
    id: number; // ç¾¤ç¼–号
    userId: number; // è¢«ç¦è¨€çš„用户编号
    mutedSeconds: number; // ç¦è¨€æ—¶é•¿ï¼ˆç§’),0 è¡¨ç¤ºæ°¸ä¹…禁言
  }
  /** å–消成员禁言 Request VO */
  export interface GroupCancelMuteMemberReqVO {
    id: number; // ç¾¤ç¼–号
    userId: number; // è¢«å–消禁言的用户编号
  }
}
/** èŽ·å¾—å½“å‰ç™»å½•ç”¨æˆ·çš„ç¾¤åˆ—è¡¨ */
export function getMyGroupList() {
  return requestClient.get<ImGroupApi.GroupRespVO[]>('/im/group/list');
}
/** èŽ·å¾—ç¾¤è¯¦æƒ… */
export function getGroup(id: number | string) {
  return requestClient.get<ImGroupApi.GroupRespVO>('/im/group/get', { params: { id } });
}
/** åˆ›å»ºç¾¤ */
export function createGroup(data: ImGroupApi.GroupCreateReqVO) {
  return requestClient.post<ImGroupApi.GroupRespVO>('/im/group/create', data);
}
/** æ›´æ–°ç¾¤ */
export function updateGroup(data: ImGroupApi.GroupUpdateReqVO) {
  return requestClient.put<ImGroupApi.GroupRespVO>('/im/group/update', data);
}
/** è§£æ•£ç¾¤ */
export function dissolveGroup(id: number | string) {
  return requestClient.delete<boolean>('/im/group/dissolve', {
    params: { id },
  });
}
/** æ·»åŠ ç¾¤ç®¡ç†å‘˜ï¼ˆä»…ç¾¤ä¸»å¯è°ƒï¼‰ */
export function addGroupAdmin(data: ImGroupApi.GroupAdminReqVO) {
  return requestClient.put<boolean>('/im/group/add-admin', data);
}
/** æ’¤é”€ç¾¤ç®¡ç†å‘˜ï¼ˆä»…群主可调) */
export function removeGroupAdmin(data: ImGroupApi.GroupAdminReqVO) {
  return requestClient.put<boolean>('/im/group/remove-admin', data);
}
/** è½¬è®©ç¾¤ä¸»ï¼ˆä»…老群主可调;旧群主转让后降为普通成员) */
export function transferGroupOwner(data: ImGroupApi.GroupTransferOwnerReqVO) {
  return requestClient.put<boolean>('/im/group/transfer-owner', data);
}
/** ç½®é¡¶ç¾¤æ¶ˆæ¯ï¼ˆä»…群主 / ç®¡ç†å‘˜å¯è°ƒï¼‰ */
export function pinGroupMessage(data: ImGroupApi.GroupMessagePinReqVO) {
  return requestClient.put<boolean>('/im/group/pin-message', data);
}
/** å–消置顶群消息(仅群主 / ç®¡ç†å‘˜å¯è°ƒï¼‰ */
export function unpinGroupMessage(data: ImGroupApi.GroupMessagePinReqVO) {
  return requestClient.put<boolean>('/im/group/unpin-message', data);
}
/** å…¨ç¾¤ç¦è¨€ / å–消(仅群主 / ç®¡ç†å‘˜å¯è°ƒï¼‰ */
export function muteAll(data: ImGroupApi.GroupMuteAllReqVO) {
  return requestClient.put<boolean>('/im/group/mute-all', data);
}
/** ç¦è¨€æˆå‘˜ */
export function muteMember(data: ImGroupApi.GroupMuteMemberReqVO) {
  return requestClient.put<boolean>('/im/group/mute-member', data);
}
/** å–消成员禁言 */
export function cancelMuteMember(data: ImGroupApi.GroupCancelMuteMemberReqVO) {
  return requestClient.put<boolean>('/im/group/cancel-mute-member', data);
}