feat(im):群禁言功能(阶段三管理后台 UI)
1. group API 新增 mutedAll 字段 + 3 个禁言接口(muteAll、muteMember、cancelMuteMember) 2. group member API 新增 muteEndTime 字段 3. 管理后台群列表新增「全群禁言」列(已禁言/未禁言标签) 4. 群详情抽屉新增「全群禁言」状态行 + 成员表新增「禁言状态」列(禁言中 + 到期时间)im
parent
4d006f8e73
commit
7b4c7028a0
|
|
@ -9,6 +9,7 @@ export interface ImGroupRespVO {
|
|||
avatar?: string // 群头像
|
||||
notice?: string // 群公告
|
||||
banned?: boolean // 是否封禁
|
||||
mutedAll?: boolean // 是否全群禁言
|
||||
bannedTime?: string // 封禁时间
|
||||
status: number // 群状态(0=正常,1=已解散)
|
||||
dissolvedTime?: string // 解散时间
|
||||
|
|
@ -97,3 +98,18 @@ export const pinGroupMessage = (data: ImGroupMessagePinReqVO) => {
|
|||
export const unpinGroupMessage = (data: ImGroupMessagePinReqVO) => {
|
||||
return request.put<boolean>({ url: '/im/group/unpin-message', data })
|
||||
}
|
||||
|
||||
// 全群禁言 / 取消(仅群主 / 管理员可调)
|
||||
export const muteAll = (data: { groupId: number; mutedAll: boolean }) => {
|
||||
return request.put<boolean>({ url: '/im/group/mute-all', data })
|
||||
}
|
||||
|
||||
// 禁言成员
|
||||
export const muteMember = (data: { groupId: number; userId: number; mutedSeconds: number }) => {
|
||||
return request.put<boolean>({ url: '/im/group/mute-member', data })
|
||||
}
|
||||
|
||||
// 取消成员禁言
|
||||
export const cancelMuteMember = (data: { groupId: number; userId: number }) => {
|
||||
return request.put<boolean>({ url: '/im/group/cancel-mute-member', data })
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ export interface ImGroupMemberRespVO {
|
|||
role?: number // 成员角色,参见 ImGroupMemberRole 枚举
|
||||
joinTime?: string // 入群时间
|
||||
quitTime?: string // 退群时间
|
||||
muteEndTime?: string // 禁言到期时间
|
||||
createTime?: string // 创建时间
|
||||
// 聚合字段(自 AdminUser)
|
||||
nickname?: string // 用户昵称
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ export interface ImManagerGroupVO {
|
|||
memberCount?: number
|
||||
status: number
|
||||
banned: boolean
|
||||
mutedAll?: boolean // 是否全群禁言
|
||||
bannedReason?: string
|
||||
bannedTime?: Date
|
||||
dissolvedTime?: Date
|
||||
|
|
@ -27,6 +28,7 @@ export interface ImManagerGroupMemberVO {
|
|||
role?: number // 成员角色,参见 ImGroupMemberRole 枚举
|
||||
joinTime?: Date
|
||||
quitTime?: Date
|
||||
muteEndTime?: Date // 禁言到期时间
|
||||
}
|
||||
|
||||
// 获得群分页
|
||||
|
|
|
|||
|
|
@ -16,10 +16,14 @@
|
|||
<el-descriptions-item label="群状态">
|
||||
<dict-tag :type="DICT_TYPE.IM_GROUP_STATUS" :value="detail.status" />
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="封禁状态" :span="2">
|
||||
<el-descriptions-item label="封禁状态">
|
||||
<dict-tag :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="detail.banned" />
|
||||
<span v-if="detail.banned" class="ml-5px text-gray-400">{{ detail.bannedReason }}</span>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="全群禁言">
|
||||
<el-tag v-if="detail.mutedAll" type="danger">已禁言</el-tag>
|
||||
<el-tag v-else type="info">未禁言</el-tag>
|
||||
</el-descriptions-item>
|
||||
<el-descriptions-item label="群公告" :span="2">{{ detail.notice || '-' }}</el-descriptions-item>
|
||||
<el-descriptions-item label="创建时间" :span="2">
|
||||
{{ formatDate(detail.createTime) }}
|
||||
|
|
@ -86,6 +90,15 @@
|
|||
align="center"
|
||||
:formatter="dateFormatter"
|
||||
/>
|
||||
<el-table-column label="禁言状态" width="170" align="center">
|
||||
<template #default="{ row }">
|
||||
<template v-if="row.muteEndTime && new Date(row.muteEndTime) > new Date()">
|
||||
<el-tag type="danger">禁言中</el-tag>
|
||||
<div class="text-xs text-gray-400 mt-2px">{{ formatDate(row.muteEndTime) }}</div>
|
||||
</template>
|
||||
<span v-else class="text-gray-400">-</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -111,6 +111,12 @@
|
|||
<dict-tag v-else :type="DICT_TYPE.INFRA_BOOLEAN_STRING" :value="row.banned" />
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="全群禁言" align="center" prop="mutedAll" width="100">
|
||||
<template #default="{ row }">
|
||||
<el-tag v-if="row.mutedAll" type="danger">已禁言</el-tag>
|
||||
<el-tag v-else type="info">未禁言</el-tag>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
|
|
|
|||
Loading…
Reference in New Issue