Selaa lähdekoodia

Merge branch 'zx_saas_0614' of http://git.dayaedu.com/yonge/mec into dev

# Conflicts:
#	mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java
#	mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java
zouxuan 1 vuosi sitten
vanhempi
commit
4caa782331

+ 2 - 11
mec-biz/src/main/java/com/ym/mec/biz/service/im/impl/ImGroupCoreServiceImpl.java

@@ -7,8 +7,8 @@ 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.dao.ImGroupNoticeDao;
+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;
@@ -50,7 +50,7 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
     private ImGroupMemberPlusService imGroupMemberPlusService;
     @Resource
     private ImGroupNoticeDao imGroupNoticeDao;
-    @Autowired
+    @Resource
     private ImGroupMemberService imGroupMemberService;
 
     /**
@@ -281,14 +281,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
      */
     @Override
     public void groupDismiss(String groupId) throws Exception {
-
-        // 判定登录用户是否为群主
-        ImGroupPlus imGroup = imGroupService.lambdaQuery().eq(ImGroupPlus::getId, groupId).last("LIMIT 1").one();
-        if (Objects.isNull(imGroup)) {
-            return;
-        }
-
-
         // 获取群成员
         List<ImGroupMemberWrapper.ImGroupMember> groupMembers = imGroupMemberPlusService.lambdaQuery()
                 .select(ImGroupMemberPlus::getUserId, ImGroupMemberPlus::getImGroupId, ImGroupMemberPlus::getRoleType)
@@ -360,7 +352,6 @@ public class ImGroupCoreServiceImpl implements ImGroupCoreService {
         imPluginContext.getPluginService().groupQuit(imGroup.getId(), getImGroupMembers(groupMembers));
     }
 
-
     /**
      * 批量退群
      *

+ 93 - 83
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -50,7 +50,6 @@ import org.springframework.security.authentication.LockedException;
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
-
 import javax.annotation.Resource;
 import java.util.*;
 import java.util.concurrent.*;
@@ -482,6 +481,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                             cooperationOrganDao.batchUpdateEduId(employeeLevelDto.getTransferUserId(), levelUserId, organId);
                             //教务老师所需加入的群组
                             educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
+                            //获取当前用户所在的衔接群
+                            educationGroupModels.addAll(imGroupDao.queryUserGroupList(employeeLevelDto.getTransferUserId(), levelUserId, "乐团主管", organId));
                             break;
                         case "teamTeacher":
                             //运营主管所需加入的群组
@@ -495,70 +496,76 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                 }
             }
         }
-        Date date = new Date();
-        if (educationGroupModels.size() > 0) {
-            Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
-            //❤️用户加群
-            List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
-            List<GroupModel> groupModelList = new ArrayList<>();
-
-            List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList();
-            for (ImGroupModel imGroupModel : educationGroupModels) {
-                String userId = imGroupModel.getMemberList().get(0).getId();
-                com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
-                imGroupMember.setCreateTime(date);
-                imGroupMember.setImGroupId(imGroupModel.getId());
-                imGroupMember.setIsAdmin(false);
-                imGroupMember.setRoleType(imGroupModel.getUserRole());
-                if(StringUtils.isNotEmpty(imGroupModel.getUserRole())){
-                    imGroupMember.setType(EFriendRoleType.getByName(imGroupModel.getUserRole()).name());
+        if (CollectionUtils.isNotEmpty(educationGroupModels)) {
+            CompletableFuture.runAsync(() -> {
+                Date date = new Date();
+                Map<Integer, String> realNameMap = MapUtil.convertIntegerMap(teacherDao.queryNameByIdList(new ArrayList<>(userIds)));
+                //❤️用户加群
+                List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+                List<GroupModel> groupModelList = new ArrayList<>();
+
+                List<ImGroupMemberWrapper.ImGroupMember> groupMembers = Lists.newArrayList();
+                for (ImGroupModel imGroupModel : educationGroupModels) {
+                    String userId = imGroupModel.getMemberList().get(0).getId();
+                    com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+                    imGroupMember.setCreateTime(date);
+                    imGroupMember.setImGroupId(imGroupModel.getId());
+                    imGroupMember.setIsAdmin(false);
+                    imGroupMember.setRoleType(imGroupModel.getUserRole());
+                    if (StringUtils.isNotEmpty(imGroupModel.getUserRole())) {
+                        imGroupMember.setType(EFriendRoleType.getByName(imGroupModel.getUserRole()).name());
+                    }
+                    imGroupMember.setUpdateTime(date);
+                    imGroupMember.setUserId(Integer.parseInt(userId));
+                    imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
+                    imGroupMemberList.add(imGroupMember);
+                    GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
+                    GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
+                    groupModelList.add(groupModel);
+
+                    // 腾讯云IM用户加群
+                    groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
+                            .groupId(imGroupModel.getId())
+                            .roleType(imGroupModel.getUserRole())
+                            .isAdmin(false)
+                            .userId(Long.valueOf(userId))
+                            .imUserId(userId)
+                            .groupRoleType(imGroupMember.getGroupRoleType())
+                            .nickname(realNameMap.get(imGroupMember.getUserId()))
+                            .updateTime(DateTime.now().toDate())
+                            .createTime(DateTime.now().toDate())
+                            .build());
                 }
-                imGroupMember.setUpdateTime(date);
-                imGroupMember.setUserId(Integer.parseInt(userId));
-                imGroupMember.setNickname(realNameMap.get(imGroupMember.getUserId()));
-                imGroupMemberList.add(imGroupMember);
-                GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
-                GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
-                groupModelList.add(groupModel);
-
-                // 腾讯云IM用户加群
-                groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
-                    .groupId(imGroupModel.getId())
-                    .roleType(imGroupModel.getUserRole())
-                    .isAdmin(false)
-                    .userId(Long.valueOf(userId))
-                    .imUserId(userId)
-                    .groupRoleType(imGroupMember.getGroupRoleType())
-                    .nickname(realNameMap.get(imGroupMember.getUserId()))
-                    .updateTime(DateTime.now().toDate())
-                    .createTime(DateTime.now().toDate())
-                    .build());
-            }
-            imGroupMemberService.batchInsert(imGroupMemberList);
-
-            if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
-                // 融云IM用户加群
-                imFeignService.groupBatchJoin(groupModelList);
-            } else {
-                // 腾讯云IM用户加群
-                if (org.apache.commons.collections.CollectionUtils.isNotEmpty(groupMembers)) {
-                    Map<String, List<ImGroupMemberWrapper.ImGroupMember>> imGroupMembers = groupMembers.stream()
-                        .collect(Collectors.groupingBy(ImGroupMemberWrapper.ImGroupMember::getGroupId));
-
-                    for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
-
-                        try {
-                            // 设置用户默认头象
-                            for (ImGroupMemberWrapper.ImGroupMember member : entry.getValue()) {
+                imGroupMemberService.batchInsert(imGroupMemberList);
+
+                if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
+                    // 融云IM用户加群
+                    imFeignService.groupBatchJoin(groupModelList);
+                } else {
+                    // 腾讯云IM用户加群
+                    if (org.apache.commons.collections.CollectionUtils.isNotEmpty(groupMembers)) {
+                        Map<String, List<ImGroupMemberWrapper.ImGroupMember>> imGroupMembers = groupMembers.stream()
+                                .collect(Collectors.groupingBy(ImGroupMemberWrapper.ImGroupMember::getGroupId));
+
+                        for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
+
+                            try {
+                                // 设置用户默认头象
+                                for (ImGroupMemberWrapper.ImGroupMember member : entry.getValue()) {
 //                                member.setAvatar(avatarMap.getOrDefault(member.getUserId().intValue(), ""));
-                                SysUser user = teacherDao.getUser(member.getUserId().intValue());
-                                // 用户头像
-                                member.setAvatar(sysUserService.getImAvatar(user));
-                                if(StringUtils.isNotEmpty(member.getRoleType())){
-                                    member.setNickname(StringUtils.isEmpty(user.getRealName())?user.getUsername():user.getRealName());
-                                }else {
-                                    member.setNickname(StringUtils.isEmpty(user.getUsername())?user.getRealName():user.getUsername());
+                                    SysUser user = teacherDao.getUser(member.getUserId().intValue());
+                                    // 用户头像
+                                    member.setAvatar(sysUserService.getImAvatar(user));
+                                    if (StringUtils.isNotEmpty(member.getRoleType())) {
+                                        member.setNickname(StringUtils.isEmpty(user.getRealName()) ? user.getUsername() : user.getRealName());
+                                    } else {
+                                        member.setNickname(StringUtils.isEmpty(user.getUsername()) ? user.getRealName() : user.getUsername());
+                                    }
                                 }
+                                // 腾讯云用户加群
+                                imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
+                            } catch (Exception e) {
+                                log.error("腾讯云IM用户加群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
                             }
                             // 腾讯云用户加群
                             imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
@@ -570,20 +577,23 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
             }
         }
         //原有员工退群
-        List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
-        //原有员工退预报名群
-        groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
-        if (groupModels.size() > 0) {
-            List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
-            // 融支IM用户退群
-            List<GroupModel> groupModelList = new ArrayList<>();
-            // 腾讯云IM用户退群
-            List<GroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
-            for (ImGroupModel imGroupModel : groupModels) {
-                com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
-                imGroupMember.setImGroupId(imGroupModel.getId());
-                imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
-                imGroupMemberList.add(imGroupMember);
+        CompletableFuture.runAsync(() -> {
+            List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
+            //原有员工退预报名群
+            groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
+            //获取当前用户所在的衔接群
+            groupModels.addAll(imGroupDao.queryUserGroupList(levelUserId, levelUserId, "乐团主管", null));
+            if (CollectionUtils.isNotEmpty(groupModels)) {
+                List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
+                // 融支IM用户退群
+                List<GroupModel> groupModelList = new ArrayList<>();
+                // 腾讯云IM用户退群
+                List<GroupMemberWrapper.ImGroupMember> imGroupMembers = Lists.newArrayList();
+                for (ImGroupModel imGroupModel : groupModels) {
+                    com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
+                    imGroupMember.setImGroupId(imGroupModel.getId());
+                    imGroupMember.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).getId()));
+                    imGroupMemberList.add(imGroupMember);
 
                 GroupMember groupMember = new GroupMember(imGroupMember.getUserId().toString(), imGroupModel.getId());
                 GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
@@ -610,17 +620,17 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
 
                     for (Map.Entry<String, List<GroupMemberWrapper.ImGroupMember>> entry : groupMembers.entrySet()) {
 
-                        try {
-                            // 用户退群
-                            imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
-                        } catch (Exception e) {
-                            log.error("腾讯云IM用户退群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
+                            try {
+                                // 用户退群
+                                imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
+                            } catch (Exception e) {
+                                log.error("腾讯云IM用户退群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
+                            }
                         }
                     }
                 }
             }
-
-        }
+        });
         //更换教务老师等数据
         employeeDao.employeeLevel(employeeLevelDtos);
         //新增离职时间