群组、群成员
这篇解决什么
群主管理员怎么存、进群要不要审批。读完能对上 im_group / im_group_member / im_group_request,以及人数和管理员上限。
默认端口 48080。先开模块见 IM 功能设计。
示意图:joinApproval=false 可自由进。打开后申请和邀请都要群主 / 管理员同意。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| C 端群 | @RequestMapping("/im/group") | ruoyi-office/yudao-module-im/.../group/ImGroupController.java |
| C 端成员 | /im/group-member | ImGroupMemberController |
| C 端加群申请 | /im/group-request | ImGroupRequestController |
| 运营群 | /im/manager/group | ImGroupManagerController |
| 运营成员 | /im/manager/group/member | ImGroupMemberManagerController |
| 运营申请 | /im/manager/group-request | ImGroupRequestManagerController |
用户页:views/im/home/components/group/。运营页:views/im/manager/group/。
ImGroupMemberRoleEnum:1 群主,2 管理员,3 普通成员。yudao.im.group 默认:max-member=500,admin-max-count=3,pin-max-count=5。
群 status:0 正常,1 已解散(写 dissolvedTime)。运营可 banned + bannedReason。mutedAll 是全群禁言。pinnedMessageIds 只存消息 id。
成员 muteEndTime:null 未禁言;未来时间表示禁言中;常量 9999-12-31 23:59:59 表示永久。silent 是个人免打扰。
ImGroupRequestHandleResultEnum:0 未处理,1 同意,2 拒绝。inviterUserId 空=自己申请,有值=成员邀请待审。同意后 addSource / 邀请人写入成员行。
ImGroupAddSourceEnum:1 搜索,2 邀请,3 扫码,4 分享链接。当前真正走通的是邀请;搜索 / 扫码 / 分享枚举已占位。
字段
| 名称 | 说明 | 仓库路径 |
|---|---|---|
ownerUserId / notice | 群主、公告 | ImGroupDO |
joinApproval / mutedAll | 进群审批、全员禁言 | 同上 |
banned / status | 封禁、解散 | 同上 |
role / displayUserName | 角色、群内昵称 | ImGroupMemberDO |
muteEndTime / quitTime | 禁言、退群 | 同上 |
handleResult / inviterUserId | 申请结果、邀请人 | ImGroupRequestDO |
解散不是物理删群
status=1。成员行也会留下退群时间,不要按「群 id 不存在」判断历史消息。
频道不是群
运营单向号见 频道、频道素材。群成员能互相发,受敏感词和禁言约束。
按本仓库 DO 生成的 ER。
配置与操作
用户页在 views/im/home/components/group/。建群后改 joinApproval、mutedAll、notice。打开进群审批后,申请和邀请都要群主 / 管理员同意(处理 im_group_request)。YAML yudao.im.group 默认 max-member=500、admin-max-count=3、pin-max-count=5。运营可 banned。
保存后成员角色是 1 群主 / 2 管理员 / 3 普通。解散是 status=1 并写 dissolvedTime,不是物理删群。频道不是群,单向号另见频道篇。
