Browse Source

群主转让、群注销

zouxuan 1 year ago
parent
commit
669a00676f

+ 42 - 25
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -7,6 +7,7 @@ import com.google.common.collect.Lists;
 import com.microsvc.toolkit.common.tools.ThreadPool;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
+import com.microsvc.toolkit.middleware.im.message.TencentWrapper;
 import com.ym.mec.biz.dal.entity.ImGroupMemberPlus;
 import com.ym.mec.biz.dal.entity.ImGroupPlus;
 import com.ym.mec.biz.dal.enums.EFriendRoleType;
@@ -179,8 +180,16 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
 
         if (userInfo != null) {
             // 添加群成员到当前群组
-            imPluginContext.getPluginService().groupJoin(imGroup.getGroupId(), imGroup.getName(),
-                    getImGroupMembers(groupMembers));
+            List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
+            imPluginContext.getPluginService().groupJoin(imGroup.getGroupId(), imGroup.getName(),imGroupMembers);
+            //转让群主
+            imGroupMembers.stream().filter(GroupMemberWrapper.ImGroupMember::getIsAdmin).forEach(o -> {
+                try {
+                    changeGroupOwner(imGroup.getGroupId(), o.getImUserId(), null);
+                } catch (Exception e) {
+                    log.error("changeGroupOwner error", e);
+                }
+            });
         }
         return group.getId();
     }
@@ -431,18 +440,17 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             // 过滤出需要添加到群组的成员
             groupMembers = groupMembers.stream().filter(ImGroupMemberWrapper.ImGroupMember::getGroupJoin).collect(Collectors.toList());
             // 添加群成员到当前群组
-            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);
-                    }
+            List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
+            imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(), imGroupMembers);
+            //转让群主
+            imGroupMembers.stream().filter(GroupMemberWrapper.ImGroupMember::getIsAdmin).forEach(o -> {
+                try {
+                    changeGroupOwner(imGroup.getId(), o.getImUserId(), null);
+                } catch (Exception e) {
+                    log.error("changeGroupOwner error", e);
                 }
-            }
+            });
+
             // 自动激活用户
             asyncRegisterUser(groupMembers);
         }
@@ -470,18 +478,16 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
             return;
         }
         // 添加群成员到当前群组
-        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);
-                }
+        List<GroupMemberWrapper.ImGroupMember> imGroupMembers = getImGroupMembers(groupMembers);
+        imPluginContext.getPluginService().groupJoin(imGroup.getId(), imGroup.getName(),imGroupMembers);
+        //转让群主
+        imGroupMembers.stream().filter(GroupMemberWrapper.ImGroupMember::getIsAdmin).forEach(o -> {
+            try {
+                changeGroupOwner(imGroup.getId(), o.getImUserId(), null);
+            } catch (Exception e) {
+                log.error("changeGroupOwner error", e);
             }
-        }
+        });
         // 自动激活用户
         asyncRegisterUser(groupMembers);
 
@@ -513,9 +519,20 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      */
     @Override
     public void changeGroupOwner(String groupId, String newOwner, String oldOwner) throws Exception {
-
+        if(StringUtils.isEmpty(oldOwner)){
+            //获取群主信息
+            TencentWrapper.GroupInfoResult groupInfo = imPluginContext.getPluginService().getGroupInfo(groupId);
+            List<TencentWrapper.GroupInfo> groupInfoList = groupInfo.getGroupInfo();
+            if(CollectionUtils.isNotEmpty(groupInfoList)){
+                oldOwner = groupInfoList.get(0).getOwnerAccount();
+            }
+        }
         // 转主群主
         imPluginContext.getPluginService().changeGroupOwner(groupId, newOwner, oldOwner);
+        //设置管理员
+        if(StringUtils.isNotEmpty(oldOwner)){
+            imPluginContext.getPluginService().groupAdminCreate(groupId, oldOwner);
+        }
     }
 
     /**