Files
yudao-ui-admin-vben/apps/web-ele/src/api/im/manager/group/index.ts
2026-06-18 16:09:40 -07:00

88 lines
2.1 KiB
TypeScript

import type { PageParam, PageResult } from '@vben/request';
import { requestClient } from '#/api/request';
export namespace ImManagerGroupApi {
/** 群 */
export interface Group {
id: number;
name: string;
avatar?: string;
notice?: string;
ownerUserId: number;
ownerNickname?: string;
memberCount?: number;
status: number;
banned: boolean;
mutedAll?: boolean; // 是否全群禁言
bannedReason?: string;
bannedTime?: Date;
dissolvedTime?: Date;
createTime: Date;
}
/** 群成员 */
export interface GroupMember {
userId: number;
nickname?: string;
avatar?: string;
displayUserName?: string;
groupRemark?: string;
silent?: boolean;
status: number;
role?: number; // 成员角色,参见 ImGroupMemberRole 枚举
joinTime?: Date;
quitTime?: Date;
muteEndTime?: Date; // 禁言到期时间
}
/** 群封禁请求 */
export interface GroupBanReqVO {
id: number;
reason: string;
}
}
/** 获得群分页 */
export function getManagerGroupPage(params: PageParam) {
return requestClient.get<PageResult<ImManagerGroupApi.Group>>(
'/im/manager/group/page',
{ params },
);
}
/** 获得群详情 */
export function getManagerGroup(id: number) {
return requestClient.get<ImManagerGroupApi.Group>('/im/manager/group/get', {
params: { id },
});
}
/** 封禁群 */
export function banManagerGroup(data: ImManagerGroupApi.GroupBanReqVO) {
return requestClient.put<boolean>('/im/manager/group/ban', data);
}
/** 解封群 */
export function unbanManagerGroup(id: number) {
return requestClient.put<boolean>('/im/manager/group/unban', undefined, {
params: { id },
});
}
/** 解散群 */
export function dissolveManagerGroup(id: number) {
return requestClient.delete<boolean>('/im/manager/group/dissolve', {
params: { id },
});
}
/** 获得群成员列表(含已退群成员,由前端按需过滤) */
export function getManagerGroupMemberList(groupId: number) {
return requestClient.get<ImManagerGroupApi.GroupMember[]>(
'/im/manager/group/member/list',
{ params: { groupId } },
);
}