Commit 44981bbee81572ce5a13ef6c30dd595f195d0f33
1 parent
fa474c6f
♻️ refactor(im): 拆分 updateGroup 职责,仅保留群整体信息更新
- ImGroupServiceImpl#updateGroup 移除 displayUserName/displayGroupName 处理逻辑,交由 updateGroupMember 承接 - 去掉 hasGroupInfoChange 判断,群主校验前置 - ImGroupUpdateReqVO 清理 displayUserName/displayGroupName 字段
Showing
2 changed files
with
14 additions
and
35 deletions
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,12 +21,4 @@ public class ImGroupUpdateReqVO { | ||
| 21 | @Schema(description = "群公告") | 21 | @Schema(description = "群公告") |
| 22 | private String notice; | 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,7 +12,6 @@ import cn.iocoder.yudao.module.im.controller.admin.group.vo.ImGroupCreateReqVO; | ||
| 12 | import cn.iocoder.yudao.module.im.controller.admin.group.vo.ImGroupUpdateReqVO; | 12 | import cn.iocoder.yudao.module.im.controller.admin.group.vo.ImGroupUpdateReqVO; |
| 13 | import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberInviteReqVO; | 13 | import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberInviteReqVO; |
| 14 | import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberRemoveReqVO; | 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 | import cn.iocoder.yudao.module.im.dal.dataobject.friend.ImFriendDO; | 15 | import cn.iocoder.yudao.module.im.dal.dataobject.friend.ImFriendDO; |
| 17 | import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupDO; | 16 | import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupDO; |
| 18 | import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO; | 17 | import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO; |
| @@ -92,35 +91,23 @@ public class ImGroupServiceImpl implements ImGroupService { | @@ -92,35 +91,23 @@ public class ImGroupServiceImpl implements ImGroupService { | ||
| 92 | @CacheEvict(cacheNames = GROUP, key = "#updateReqVO.id") | 91 | @CacheEvict(cacheNames = GROUP, key = "#updateReqVO.id") |
| 93 | @Transactional(rollbackFor = Exception.class) | 92 | @Transactional(rollbackFor = Exception.class) |
| 94 | public ImGroupDO updateGroup(ImGroupUpdateReqVO updateReqVO, Long userId) { | 93 | public ImGroupDO updateGroup(ImGroupUpdateReqVO updateReqVO, Long userId) { |
| 95 | - // 1. 校验群存在 | 94 | + // 1.1 校验群存在 |
| 96 | ImGroupDO group = validateGroupExists(updateReqVO.getId()); | 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 | return group; | 111 | return group; |
| 125 | } | 112 | } |
| 126 | 113 |