Commit 886f4fe1f24c67a222d85e5291951f873a5db09b

Authored by YunaiV
1 parent cce3dd61

♻️ refactor(group): 移除冗余方法并添加群成员移除功能

重构 ImGroupMemberMapper 和 ImGroupMemberService,移除不再使用的方法,简化代码结构。同时新增群成员移除功能,以支持群解散场景。
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/dal/mysql/group/ImGroupMemberMapper.java
@@ -27,10 +27,6 @@ public interface ImGroupMemberMapper extends BaseMapperX<ImGroupMemberDO> { @@ -27,10 +27,6 @@ public interface ImGroupMemberMapper extends BaseMapperX<ImGroupMemberDO> {
27 .eq(ImGroupMemberDO::getUserId, userId)); 27 .eq(ImGroupMemberDO::getUserId, userId));
28 } 28 }
29 29
30 - default List<ImGroupMemberDO> selectListByUserId(Long userId) {  
31 - return selectList(new LambdaQueryWrapperX<ImGroupMemberDO>().eq(ImGroupMemberDO::getUserId, userId));  
32 - }  
33 -  
34 default List<ImGroupMemberDO> selectListByGroupIdAndStatus(Long groupId, Integer status) { 30 default List<ImGroupMemberDO> selectListByGroupIdAndStatus(Long groupId, Integer status) {
35 return selectList(new LambdaQueryWrapperX<ImGroupMemberDO>() 31 return selectList(new LambdaQueryWrapperX<ImGroupMemberDO>()
36 .eq(ImGroupMemberDO::getGroupId, groupId) 32 .eq(ImGroupMemberDO::getGroupId, groupId)
@@ -59,4 +55,11 @@ public interface ImGroupMemberMapper extends BaseMapperX&lt;ImGroupMemberDO&gt; { @@ -59,4 +55,11 @@ public interface ImGroupMemberMapper extends BaseMapperX&lt;ImGroupMemberDO&gt; {
59 .geIfPresent(ImGroupMemberDO::getQuitTime, minQuitTime)); 55 .geIfPresent(ImGroupMemberDO::getQuitTime, minQuitTime));
60 } 56 }
61 57
  58 + @SuppressWarnings("UnusedReturnValue")
  59 + default int updateByGroupIdAndStatus(Long groupId, Integer oldStatus, ImGroupMemberDO updateObj) {
  60 + return update(updateObj, new LambdaQueryWrapperX<ImGroupMemberDO>()
  61 + .eq(ImGroupMemberDO::getGroupId, groupId)
  62 + .eq(ImGroupMemberDO::getStatus, oldStatus));
  63 + }
  64 +
62 } 65 }
63 \ No newline at end of file 66 \ No newline at end of file
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/group/ImGroupMemberService.java
@@ -45,7 +45,6 @@ public interface ImGroupMemberService { @@ -45,7 +45,6 @@ public interface ImGroupMemberService {
45 */ 45 */
46 ImGroupMemberDO getGroupMember(Long id); 46 ImGroupMemberDO getGroupMember(Long id);
47 47
48 -  
49 /** 48 /**
50 * 根据群组 id 查询群成员(包含所有状态) 49 * 根据群组 id 查询群成员(包含所有状态)
51 * 50 *
@@ -55,23 +54,6 @@ public interface ImGroupMemberService { @@ -55,23 +54,6 @@ public interface ImGroupMemberService {
55 List<ImGroupMemberDO> getGroupMemberListByGroupId(Long groupId); 54 List<ImGroupMemberDO> getGroupMemberListByGroupId(Long groupId);
56 55
57 /** 56 /**
58 - * 根据群编号和用户编号查询群成员  
59 - *  
60 - * @param groupId 群编号  
61 - * @param userId 用户编号  
62 - * @return 群成员  
63 - */  
64 - ImGroupMemberDO getGroupMember(Long groupId, Long userId);  
65 -  
66 - /**  
67 - * 查询用户所在的所有群的成员记录  
68 - *  
69 - * @param userId 用户编号  
70 - * @return 群成员记录列表  
71 - */  
72 - List<ImGroupMemberDO> getGroupMemberListByUserId(Long userId);  
73 -  
74 - /**  
75 * 根据群编号查询有效成员列表(仅 ENABLE 状态) 57 * 根据群编号查询有效成员列表(仅 ENABLE 状态)
76 * 58 *
77 * @param groupId 群编号 59 * @param groupId 群编号
@@ -106,6 +88,7 @@ public interface ImGroupMemberService { @@ -106,6 +88,7 @@ public interface ImGroupMemberService {
106 * @param userId 用户编号 88 * @param userId 用户编号
107 * @return 群成员记录 89 * @return 群成员记录
108 */ 90 */
  91 + @SuppressWarnings("UnusedReturnValue")
109 ImGroupMemberDO addGroupMember(Long groupId, Long userId); 92 ImGroupMemberDO addGroupMember(Long groupId, Long userId);
110 93
111 /** 94 /**
@@ -130,4 +113,13 @@ public interface ImGroupMemberService { @@ -130,4 +113,13 @@ public interface ImGroupMemberService {
130 void updateGroupMember(Long groupId, Long userId, 113 void updateGroupMember(Long groupId, Long userId,
131 String displayUserName, String displayGroupName); 114 String displayUserName, String displayGroupName);
132 115
  116 + /**
  117 + * 移除群的全部成员(设置为 DISABLE 状态)
  118 + * <p>
  119 + * 用于群解散场景
  120 + *
  121 + * @param groupId 群编号
  122 + */
  123 + void removeGroupMembersByGroupId(Long groupId);
  124 +
133 } 125 }
yudao-module-im/yudao-module-im-biz/src/main/java/cn/iocoder/yudao/module/im/service/group/ImGroupMemberServiceImpl.java
1 package cn.iocoder.yudao.module.im.service.group; 1 package cn.iocoder.yudao.module.im.service.group;
2 2
3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 3 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
  4 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
4 import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberInviteReqVO; 5 import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberInviteReqVO;
5 import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberUpdateReqVO; 6 import cn.iocoder.yudao.module.im.controller.admin.group.vo.member.ImGroupMemberUpdateReqVO;
6 -import org.springframework.stereotype.Service;  
7 -import jakarta.annotation.Resource;  
8 -import org.springframework.validation.annotation.Validated;  
9 -  
10 import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO; 7 import cn.iocoder.yudao.module.im.dal.dataobject.group.ImGroupMemberDO;
11 -import cn.iocoder.yudao.framework.common.util.object.BeanUtils;  
12 -  
13 import cn.iocoder.yudao.module.im.dal.mysql.group.ImGroupMemberMapper; 8 import cn.iocoder.yudao.module.im.dal.mysql.group.ImGroupMemberMapper;
  9 +import jakarta.annotation.Resource;
  10 +import org.springframework.stereotype.Service;
  11 +import org.springframework.validation.annotation.Validated;
14 12
15 import java.time.LocalDateTime; 13 import java.time.LocalDateTime;
16 import java.util.List; 14 import java.util.List;
17 15
18 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 16 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
19 -import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.*; 17 +import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.GROUP_MEMBER_NOT_EXISTS;
  18 +import static cn.iocoder.yudao.module.im.enums.ErrorCodeConstants.GROUP_MEMBER_NOT_IN_GROUP;
20 19
21 /** 20 /**
22 * 群成员 Service 实现类 21 * 群成员 Service 实现类
@@ -51,7 +50,6 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService { @@ -51,7 +50,6 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService {
51 imGroupMemberMapper.updateById(updateObj); 50 imGroupMemberMapper.updateById(updateObj);
52 } 51 }
53 52
54 - // TODO @AI:是不是不存在删除一说?  
55 @Override 53 @Override
56 public void removeGroupMember(Long id) { 54 public void removeGroupMember(Long id) {
57 // TODO @AI:需要群主校验下; 55 // TODO @AI:需要群主校验下;
@@ -79,16 +77,6 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService { @@ -79,16 +77,6 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService {
79 } 77 }
80 78
81 @Override 79 @Override
82 - public ImGroupMemberDO getGroupMember(Long groupId, Long userId) {  
83 - return imGroupMemberMapper.selectByGroupIdAndUserId(groupId, userId);  
84 - }  
85 -  
86 - @Override  
87 - public List<ImGroupMemberDO> getGroupMemberListByUserId(Long userId) {  
88 - return imGroupMemberMapper.selectListByUserId(userId);  
89 - }  
90 -  
91 - @Override  
92 public List<ImGroupMemberDO> getActiveGroupMemberListByGroupId(Long groupId) { 80 public List<ImGroupMemberDO> getActiveGroupMemberListByGroupId(Long groupId) {
93 return imGroupMemberMapper.selectListByGroupIdAndStatus(groupId, CommonStatusEnum.ENABLE.getStatus()); 81 return imGroupMemberMapper.selectListByGroupIdAndStatus(groupId, CommonStatusEnum.ENABLE.getStatus());
94 } 82 }
@@ -134,4 +122,11 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService { @@ -134,4 +122,11 @@ public class ImGroupMemberServiceImpl implements ImGroupMemberService {
134 // TODO @AI:需要分析下,是否需要 122 // TODO @AI:需要分析下,是否需要
135 } 123 }
136 124
  125 + @Override
  126 + public void removeGroupMembersByGroupId(Long groupId) {
  127 + imGroupMemberMapper.updateByGroupIdAndStatus(groupId, CommonStatusEnum.ENABLE.getStatus(),
  128 + new ImGroupMemberDO().setStatus(CommonStatusEnum.DISABLE.getStatus())
  129 + .setQuitTime(LocalDateTime.now()));
  130 + }
  131 +
137 } 132 }