Files
yudao-ui-admin-vben/apps/web-antd/src/api/im/group/index.ts
YunaiV 5a4f8b4e2a fix(im): 对齐群备注展示并修复 IM 消息管理字典
聊天端:
- 群 API 类型补充 groupRemark 和 silent
- 群列表同步时以接口返回的个人群设置为准,只保留成员缓存
- 会话名写入入口统一使用 getGroupDisplayName,避免群备注被原群名覆盖
- 聊天标题、转发、推荐名片、新建群入口同步群展示名逻辑
- 空群头像且成员未加载时异步预拉群成员,用于合成群头像
- 通讯录和合并消息详情补充滚动容器
- 消息历史日期选择改用 antd Calendar 卡片模式并修正样式

管理端:
- IM 字典常量统一为 im_content_type、im_message_status、im_message_receipt_status
- 私聊 / 群聊消息列表和详情页切换到统一内容类型、消息状态、回执状态字典
- 私聊消息 API 和详情页补充 receiptStatus
- 统计消息类型分布改用内容类型字典
2026-06-18 08:59:19 -07:00

147 lines
5.1 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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; // 当前登录用户在该群的成员状态(参见 CommonStatusEnum0 在群 / 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);
}