Commit 44981bbee81572ce5a13ef6c30dd595f195d0f33

Authored by YunaiV
1 parent fa474c6f

♻️ refactor(im): 拆分 updateGroup 职责,仅保留群整体信息更新

- ImGroupServiceImpl#updateGroup 移除 displayUserName/displayGroupName 处理逻辑,交由 updateGroupMember 承接
- 去掉 hasGroupInfoChange 判断,群主校验前置
- ImGroupUpdateReqVO 清理 displayUserName/displayGroupName 字段
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/controller/admin/group/vo/ImGroupUpdateReqVO.java
... ... @@ -21,12 +21,4 @@ public class ImGroupUpdateReqVO {
21 21 @Schema(description = "群公告")
22 22 private String notice;
23 23  
24   - // ========== 以下字段来自 im_group_member 表(当前用户在该群的个人设置) ==========
25   -
26   - @Schema(description = "我在本群的昵称")
27   - private String displayUserName;
28   -
29   - @Schema(description = "群名备注")
30   - private String displayGroupName;
31   -
32 24 }
... ...
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/group/ImGroupServiceImpl.java
... ... @@ -12,7 +12,6 @@ import cn.iocoder.yudao.module.im.controller.admin.group.vo.ImGroupCreateReqVO;
12 12 import cn.iocoder.yudao.module.im.controller.admin.group.vo.ImGroupUpdateReqVO;
13 13 import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberInviteReqVO;
14 14 import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberRemoveReqVO;
15   -import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberUpdateReqVO;
16 15 import cn.iocoder.yudao.module.im.dal.dataobject.friend.ImFriendDO;
17 16 import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupDO;
18 17 import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO;
... ... @@ -92,35 +91,23 @@ public class ImGroupServiceImpl implements ImGroupService {
92 91 @CacheEvict(cacheNames = GROUP, key = "#updateReqVO.id")
93 92 @Transactional(rollbackFor = Exception.class)
94 93 public ImGroupDO updateGroup(ImGroupUpdateReqVO updateReqVO, Long userId) {
95   - // 1. 校验群存在
  94 + // 1.1 校验群存在
96 95 ImGroupDO group = validateGroupExists(updateReqVO.getId());
97   -
98   - // 2. 更新群信息(name、avatar、notice → im_group 表)
99   - boolean hasGroupInfoChange = !ObjUtil.isAllEmpty(
100   - updateReqVO.getName(), updateReqVO.getAvatar(), updateReqVO.getNotice());
101   - if (hasGroupInfoChange) {
102   - if (ObjUtil.notEqual(group.getOwnerUserId(), userId)) {
103   - throw exception(GROUP_NOT_OWNER);
104   - }
105   - // 2.1 更新数据库
106   - ImGroupDO updateObj = BeanUtils.toBean(updateReqVO, ImGroupDO.class);
107   - groupMapper.updateById(updateObj);
108   - // 同步到内存中的 group 对象,避免再次查询
109   - BeanUtil.copyProperties(updateReqVO, group, CopyOptions.create().ignoreNullValue());
110   -
111   - // 2.2 群信息的变更,推送给所有群成员
112   - List<ImGroupMemberDO> members = groupMemberService.getActiveGroupMemberListByGroupId(group.getId());
113   - Set<Long> memberUserIds = convertSet(members, ImGroupMemberDO::getUserId);
114   - webSocketService.sendGroupMessageAsync(memberUserIds,
115   - ImGroupMessageDTO.ofGroupUpdate(userId, group.getId()));
  96 + // 1.2 校验操作人是群主
  97 + if (ObjUtil.notEqual(group.getOwnerUserId(), userId)) {
  98 + throw exception(GROUP_NOT_OWNER);
116 99 }
117 100  
118   - // 3. 更新当前用户的群成员信息(displayUserName、displayGroupName → im_group_member 表)
119   - if (!ObjUtil.isAllEmpty(updateReqVO.getDisplayUserName(), updateReqVO.getDisplayGroupName())) {
120   - groupMemberService.updateGroupMember(userId, new ImGroupMemberUpdateReqVO()
121   - .setGroupId(updateReqVO.getId()).setDisplayUserName(updateReqVO.getDisplayUserName())
122   - .setDisplayGroupName(updateReqVO.getDisplayGroupName()));
123   - }
  101 + // 2. 更新数据库
  102 + ImGroupDO updateObj = BeanUtils.toBean(updateReqVO, ImGroupDO.class);
  103 + groupMapper.updateById(updateObj);
  104 + BeanUtil.copyProperties(updateReqVO, group, CopyOptions.create().ignoreNullValue());
  105 +
  106 + // 3. 群信息的变更,推送给所有群成员
  107 + List<ImGroupMemberDO> members = groupMemberService.getActiveGroupMemberListByGroupId(group.getId());
  108 + Set<Long> memberUserIds = convertSet(members, ImGroupMemberDO::getUserId);
  109 + webSocketService.sendGroupMessageAsync(memberUserIds,
  110 + ImGroupMessageDTO.ofGroupUpdate(userId, group.getId()));
124 111 return group;
125 112 }
126 113  
... ...