Browse Source

1.处理交接群主问题

yuanliang 1 year ago
parent
commit
13f084c119

+ 18 - 11
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -1074,17 +1074,24 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
             }
 
             // 机构老师处理流程
-            List<ImGroup> imGroups = imGroupService.lambdaQuery()
-                    .eq(ImGroup::getCreateBy, teacher.getUserId())
-                    .eq(ImGroup::getType, ImGroupType.ORG)
-                    .list();
-            imGroups.forEach(next -> {
-                try {
-                    imGroupService.dismiss(next.getId());
-                } catch (Exception e) {
-                    log.error("老师修改机构,解散机构群失败:{}", e.getMessage());
-                }
-            });
+            List<String> imGroupIds = imGroupMemberService.lambdaQuery()
+                    .eq(ImGroupMember::getUserId, teacher.getUserId())
+                    .eq(ImGroupMember::getIsAdmin, true)
+                    .eq(ImGroupMember::getRoleType, ImGroupMemberRoleType.TEACHER)
+                    .list().stream().map(ImGroupMember::getGroupId).distinct().collect(Collectors.toList());
+            if (!imGroupIds.isEmpty()) {
+                List<ImGroup> imGroups = imGroupService.lambdaQuery()
+                        .in(ImGroup::getId, imGroupIds)
+                        .eq(ImGroup::getType, ImGroupType.ORG)
+                        .list();
+                imGroups.forEach(next -> {
+                    try {
+                        imGroupService.dismiss(next.getId());
+                    } catch (Exception e) {
+                        log.error("老师修改机构,解散机构群失败:{}", e.getMessage());
+                    }
+                });
+            }
             // 删除好友关系
             imUserFriendService.delStudentFriendByTenantId(teacher.getTenantId(), teacher.getUserId(),ClientEnum.TEACHER.getCode());
 

+ 13 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantGroupServiceImpl.java

@@ -465,6 +465,16 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
             return;
         }
 
+        ImGroupMember admin = imGroupMemberService.lambdaQuery()
+                .eq(ImGroupMember::getGroupId, imGroupId)
+                .eq(ImGroupMember::getIsAdmin, true)
+                .last("limit 1").one();
+
+        if (admin.getUserId().equals(newGroup.getAdminId())) {
+            // 处理交接后群主和小组的负责人一致
+            return;
+        }
+
         // 如果新负责人不在群,先加入群
         ImGroupMember groupMember = imGroupMemberService.lambdaQuery()
                 .eq(ImGroupMember::getGroupId, newGroup.getImGroupId())
@@ -493,11 +503,10 @@ public class TenantGroupServiceImpl extends ServiceImpl<TenantGroupMapper, Tenan
         }
 
         try {
-            imGroupCoreService.changeGroupOwner(oldGroup.getImGroupId(),
+            imGroupCoreService.changeGroupOwner(imGroupId,
                     String.valueOf(newGroup.getAdminId()),
-                    String.valueOf(oldGroup.getAdminId()));
-            imGroupCoreService.groupQuit(oldGroup.getAdminId(), ClientEnum.TEACHER.getCode(),
-                    oldGroup.getImGroupId(), true);
+                    String.valueOf(admin.getUserId()));
+            imGroupCoreService.groupQuit(admin.getUserId(), ClientEnum.TEACHER.getCode(), imGroupId, true);
             imGroupService.lambdaUpdate()
                     .set(ImGroup::getCreateBy, newGroup.getAdminId())
                     .eq(ImGroup::getId, imGroupId);

+ 21 - 10
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TenantUnbindRecordServiceImpl.java

@@ -13,6 +13,7 @@ import com.yonge.cooleshow.biz.dal.dao.SubjectDao;
 import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.ImGroupMemberRoleType;
 import com.yonge.cooleshow.biz.dal.enums.ImGroupType;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.mapper.SysAreaMapper;
@@ -89,6 +90,9 @@ public class TenantUnbindRecordServiceImpl extends ServiceImpl<TenantUnbindRecor
     @Autowired
     private TenantGroupMapper tenantGroupMapper;
 
+    @Autowired
+    private ImGroupMemberService imGroupMemberService;
+
     /**
      * @param id 详情ID
      * @return TenantUnbindRecord
@@ -240,16 +244,23 @@ public class TenantUnbindRecordServiceImpl extends ServiceImpl<TenantUnbindRecor
             Long tenantId = teacher.getTenantId();
             if (tenantId != -1L) {
                 // 解散机构群
-                List<ImGroup> imGroups = imGroupService.lambdaQuery()
-                        .eq(ImGroup::getCreateBy, unbindRecord.getUserId())
-                        .eq(ImGroup::getType, ImGroupType.ORG)
-                        .list();
-                for (ImGroup imGroup : imGroups) {
-                    try {
-                        imGroupService.dismiss(imGroup.getId());
-                    } catch (Exception e) {
-                        log.error("老师解绑审核成功,解散机构群失败:{}", e.getMessage());
-                    }
+                List<String> imGroupIds = imGroupMemberService.lambdaQuery()
+                        .eq(ImGroupMember::getUserId, unbindRecord.getUserId())
+                        .eq(ImGroupMember::getIsAdmin, true)
+                        .eq(ImGroupMember::getRoleType, ImGroupMemberRoleType.TEACHER)
+                        .list().stream().map(ImGroupMember::getGroupId).distinct().collect(Collectors.toList());
+                if (!imGroupIds.isEmpty()) {
+                    List<ImGroup> imGroups = imGroupService.lambdaQuery()
+                            .in(ImGroup::getId, imGroupIds)
+                            .eq(ImGroup::getType, ImGroupType.ORG)
+                            .list();
+                    imGroups.forEach(next -> {
+                        try {
+                            imGroupService.dismiss(next.getId());
+                        } catch (Exception e) {
+                            log.error("老师修改机构,解散机构群失败:{}", e.getMessage());
+                        }
+                    });
                 }
                 imUserFriendService.delStudentFriendByTenantId(tenantId, unbindRecord.getUserId(),
                         ClientEnum.TEACHER.getCode());