浏览代码

群主转让、群注销

zouxuan 1 年之前
父节点
当前提交
e4b4f62cf0

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/ImGroupMemberWrapper.java

@@ -112,6 +112,8 @@ public class ImGroupMemberWrapper {
         @ApiModelProperty("机构ID")
         private Integer tenantId = TenantContextHolder.getTenantId();
 
+        private String groupRoleType;
+
         public static ImGroupMember from(String json) {
             return JSON.parseObject(json, ImGroupMember.class);
         }

+ 0 - 17
mec-biz/src/main/java/com/ym/mec/biz/service/im/ImGroupCoreService.java

@@ -93,14 +93,6 @@ public interface ImGroupCoreService {
     void saveImGroupMemberList(String groupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
 
     /**
-     * 添加群组成员
-     * @param imGroupId 群组主键ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
-
-    /**
      * 群成员加入
      * @param imGroupId 群主ID
      * @param groupMembers 群成员
@@ -109,15 +101,6 @@ public interface ImGroupCoreService {
     void groupMemberJoin(String imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception;
 
     /**
-     * 添加进入群组
-     *
-     * @param userId 用户ID
-     * @param clientType 客户端类型
-     * @param imGroupId 群组ID
-     */
-    void groupJoin(Long userId, String clientType, String imGroupId) throws Exception;
-
-    /**
      * 转让群主
      *
      * @param groupId 群组ID

+ 23 - 54
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -10,6 +10,7 @@ import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
+import com.ym.mec.biz.dal.enums.im.EImGroupRoleType;
 import com.ym.mec.biz.dal.wrapper.ImGroupMemberWrapper;
 import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 import com.ym.mec.biz.service.ImGroupMemberPlusService;
@@ -429,31 +430,22 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
             // 添加群成员到当前群组
             imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), getImGroupMembers(groupMembers));
-
+            // 设置管理员
+            for (ImGroupMemberWrapper.ImGroupMember groupMember : groupMembers) {
+                if (groupMember.getGroupRoleType() != null) {
+                    if(groupMember.getGroupRoleType().equals(EImGroupRoleType.Admin.getCode())){
+                        imPluginContext.getPluginService().groupAdminCreate(imGroup.getId(),groupMember.getImUserId());
+                    }
+                    if(groupMember.getGroupRoleType().equals(EImGroupRoleType.Owner.getCode())){
+                        imPluginContext.getPluginService().changeGroupOwner(imGroup.getId(),groupMember.getImUserId(),null);
+                    }
+                }
+            }
             // 自动激活用户
             asyncRegisterUser(groupMembers);
         }
     }
 
-    /**
-     * 添加群组成员
-     *
-     * @param imGroupId    群组主键ID
-     * @param groupMembers List<ImGroupMemberWrapper.ImGroupMember>
-     * @throws Exception Exception
-     */
-    @Override
-    public void saveImGroupMemberList(Long imGroupId, List<ImGroupMemberWrapper.ImGroupMember> groupMembers) throws Exception {
-
-        // 群组信息
-        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        // 添加群组成员信息
-        saveImGroupMemberList(imGroup.getId(), groupMembers);
-    }
 
     /**
      * 群成员加入
@@ -479,7 +471,17 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
         // 添加群成员到当前群组
         imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), getImGroupMembers(groupMembers));
-
+        // 设置管理员
+        for (ImGroupMemberWrapper.ImGroupMember groupMember : groupMembers) {
+            if (groupMember.getGroupRoleType() != null) {
+                if(groupMember.getGroupRoleType().equals(EImGroupRoleType.Admin.getCode())){
+                    imPluginContext.getPluginService().groupAdminCreate(imGroup.getId(),groupMember.getImUserId());
+                }
+                if(groupMember.getGroupRoleType().equals(EImGroupRoleType.Owner.getCode())){
+                    imPluginContext.getPluginService().changeGroupOwner(imGroup.getId(),groupMember.getImUserId(),null);
+                }
+            }
+        }
         // 自动激活用户
         asyncRegisterUser(groupMembers);
 
@@ -502,39 +504,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             .update();
     }
 
-
-    /**
-     * 添加进入群组
-     *
-     * @param userId     用户ID
-     * @param clientType 客户端类型
-     * @param imGroupId  群组ID
-     */
-    @Override
-    public void groupJoin(Long userId, String clientType, String imGroupId) throws Exception {
-
-        // 群组信息
-        ImGroupPlus imGroup = imGroupService.getById(imGroupId);
-        if (Objects.isNull(imGroup)) {
-            throw new BizException("群组不存在");
-        }
-
-        List<ImGroupMemberWrapper.ImGroupMember> imGroupMembers = new ArrayList<>();
-        ImGroupMemberWrapper.ImGroupMember groupMember = ImGroupMemberWrapper.ImGroupMember
-                .builder()
-                .groupId(imGroup.getId())
-                .userId(userId)
-                .clientType(clientType)
-                .imUserId(getImUserId(userId.toString(),clientType))
-                .isAdmin(false)
-                .roleType(clientType)
-                .tenantId(imGroup.getTenantId())
-                .build();
-        imGroupMembers.add(groupMember);
-
-        saveImGroupMemberList(imGroupId, imGroupMembers);
-    }
-
     /**
      * 转让群主
      *

+ 1 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -544,6 +544,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                     .isAdmin(false)
                     .userId(Long.valueOf(userId))
                     .imUserId(userId)
+                    .groupRoleType(imGroupMember.getGroupRoleType())
                     .nickname(realNameMap.get(imGroupMember.getUserId()))
                     .updateTime(DateTime.now().toDate())
                     .createTime(DateTime.now().toDate())
@@ -623,17 +624,6 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                     for (Map.Entry<String, List<GroupMemberWrapper.ImGroupMember>> entry : groupMembers.entrySet()) {
 
                         try {
-                            // 获取用户头象
-//                            List<Integer> collect1 = entry.getValue().stream()
-//                                .map(x -> x.getUserId().intValue()).distinct().collect(Collectors.toList());
-//
-//                            Map<Integer, String> avatarMap = teacherDao.getUsersSimpleInfo(collect1).stream()
-//                                .collect(Collectors.toMap(SimpleUserDto::getUserId, SimpleUserDto::getAvatar, (o, n) -> n));
-//
-//                            // 设置用户默认头象
-//                            for (GroupMemberWrapper.ImGroupMember member : entry.getValue()) {
-//                                member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));
-//                            }
                             // 用户退群
                             imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
                         } catch (Exception e) {

+ 14 - 15
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupMemberServiceImpl.java

@@ -178,11 +178,12 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 
 				groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
 						.groupId(groupId)
-						.isAdmin(isAdmin)
+						.isAdmin(StringUtils.isNotEmpty(roleType))
 						.roleType(roleType)
 						.nickname(imGroupMember.getNickname())
 						.userId(userId.longValue())
 						.imUserId(userId.toString())
+						.groupRoleType(imGroupMember.getGroupRoleType())
 						.avatar(sysUserService.getImAvatar(user))
 						.updateTime(DateTime.now().toDate())
 						.createTime(DateTime.now().toDate())
@@ -341,7 +342,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 						.userId(imGroupMember.getUserId().longValue())
 						.imUserId(imGroupMember.getUserId().toString())
 						.nickname(imGroupMember.getNickname())
-						.isAdmin(imGroupMember.getIsAdmin())
+						.isAdmin(StringUtils.isNotEmpty(imGroupMember.getGroupRoleType()))
+						.groupRoleType(imGroupMember.getGroupRoleType())
 						.roleType(imGroupMember.getRoleType())
 						.avatar(sysUserService.getImAvatar(user))
 					.build());
@@ -403,7 +405,8 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 					.groupId(groupId)
 					.userId(imGroupMember.getUserId().longValue())
 					.imUserId(imGroupMember.getUserId().toString())
-					.isAdmin(imGroupMember.getIsAdmin())
+					.isAdmin(StringUtils.isNotEmpty(imGroupMember.getRoleType()))
+					.groupRoleType(imGroupMember.getGroupRoleType())
 					.roleType(imGroupMember.getRoleType())
 					.updateTime(imGroupMember.getUpdateTime())
 					.createTime(imGroupMember.getCreateTime())
@@ -438,19 +441,15 @@ public class ImGroupMemberServiceImpl extends BaseServiceImpl<Long, ImGroupMembe
 				imFeignService.groupJoin(new GroupModel(groupId, groupMemberList.stream().toArray(GroupMember[]::new), imGroup.getName()));
 			} else {
 				try {
+					List<SysUser> userList = teacherDao.getUserList(groupMembers.stream().map(e -> e.getUserId()).collect(Collectors.toList()));
+					Map<Integer,SysUser> userMap = userList.stream().collect(Collectors.toMap(SysUser::getId, e -> e));
 					for (ImGroupMemberWrapper.ImGroupMember item : groupMembers) {
-						// 用户昵称
-//						if (StringUtils.isBlank(item.getRoleType())) {
-//							item.setNickname(usernameMap.get(item.getUserId().intValue()));
-//						} else {
-//							item.setNickname(realNameMap.get(item.getUserId().intValue()));
-//						}
-//						item.setImUserId(item.getUserId().toString());
-                        SysUser user = teacherDao.getUser(item.getUserId().intValue());
-
-                        // 用户头像
-						item.setAvatar(sysUserService.getImAvatar(user));
-						item.setNickname(sysUserService.getImName(user));
+                        SysUser user = userMap.get(item.getUserId().intValue());
+						if (user != null) {
+							// 用户头像
+							item.setAvatar(sysUserService.getImAvatar(user));
+							item.setNickname(sysUserService.getImName(user));
+						}
 					}
 					// 腾讯云IM用户加群
 					imGroupCoreService.groupMemberJoin(groupId, groupMembers);

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImGroupServiceImpl.java

@@ -261,7 +261,8 @@ public class ImGroupServiceImpl extends BaseServiceImpl<String, ImGroup> impleme
                     .userId(groupMember.getUserId().longValue())
                     .avatar(sysUserService.getImAvatar(user))
                     .nickname(sysUserService.getImName(user))
-                    .isAdmin(groupMember.getIsAdmin())
+                    .isAdmin(StringUtils.isNotEmpty(groupMember.getRoleType()))
+                    .groupRoleType(groupMember.getGroupRoleType())
                     .tenantId(Optional.ofNullable(imGroup.getTenantId()).orElse(TenantContextHolder.getTenantId()))
                     .imUserId(getImUserId(groupMember.getUserId().toString(), ""))
                     .roleType(groupMember.getRoleType())