Browse Source

管乐迷优化需求

zouxuan 1 year ago
parent
commit
1735c3dd77
1 changed files with 141 additions and 163 deletions
  1. 141 163
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

+ 141 - 163
mec-biz/src/main/java/com/ym/mec/biz/service/impl/EmployeeServiceImpl.java

@@ -6,29 +6,6 @@ import com.google.common.collect.Lists;
 import com.microsvc.toolkit.middleware.im.ImPluginContext;
 import com.microsvc.toolkit.middleware.im.impl.RongCloudImPlugin;
 import com.microsvc.toolkit.middleware.im.message.GroupMemberWrapper;
-import com.ym.mec.biz.dal.dto.SimpleUserDto;
-import com.ym.mec.biz.dal.enums.EFriendRoleType;
-import com.ym.mec.biz.dal.enums.im.ClientEnum;
-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.*;
-import com.ym.mec.biz.service.im.ImGroupCoreService;
-import com.ym.mec.common.page.QueryInfo;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTime;
-import org.redisson.api.RBucket;
-import org.redisson.api.RedissonClient;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DuplicateKeyException;
-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 org.springframework.util.CollectionUtils;
-
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysRole;
 import com.ym.mec.auth.api.entity.SysUser;
@@ -37,6 +14,7 @@ import com.ym.mec.biz.dal.dto.EmployeeDto;
 import com.ym.mec.biz.dal.dto.EmployeeLevelDto;
 import com.ym.mec.biz.dal.dto.SysUserDto;
 import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.enums.EFriendRoleType;
 import com.ym.mec.biz.dal.enums.EmployeeOperateEnum;
 import com.ym.mec.biz.dal.enums.GroupType;
 import com.ym.mec.biz.dal.enums.ParamEnum;
@@ -72,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.*;
@@ -505,7 +482,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
                             //教务老师所需加入的群组
                             educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(), levelUserId, organId));
                             //获取当前用户所在的衔接群
-                            educationGroupModels.addAll(imGroupDao.queryUserGroupList(employeeLevelDto.getTransferUserId(),levelUserId,"乐团主管",organId));
+                            educationGroupModels.addAll(imGroupDao.queryUserGroupList(employeeLevelDto.getTransferUserId(), levelUserId, "乐团主管", organId));
                             break;
                         case "teamTeacher":
                             //运营主管所需加入的群组
@@ -520,172 +497,173 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee> impl
             }
         }
         if (CollectionUtils.isNotEmpty(educationGroupModels)) {
-            CompletableFuture.runAsync(()->{
+            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());
-                        }
-            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());
-                                }
-                            }
-                            // 腾讯云用户加群
-                            imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
-                        } catch (Exception e) {
-                            log.error("腾讯云IM用户加群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
-                        }
-                    }
-                }
-            }
-        });
-        //原有员工退群
-        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) {
+                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.setUserId(Integer.parseInt(imGroupModel.getMemberList().get(0).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(imGroupMember.getUserId().toString(), imGroupModel.getId());
+                    GroupMember groupMember = new GroupMember(userId, imGroupModel.getId());
                     GroupModel groupModel = new GroupModel(imGroupModel.getId(), new GroupMember[]{groupMember}, imGroupModel.getName());
                     groupModelList.add(groupModel);
 
-                    // 腾讯云
-                    imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder()
+                    // 腾讯云IM用户加群
+                    groupMembers.add(ImGroupMemberWrapper.ImGroupMember.builder()
                             .groupId(imGroupModel.getId())
-                            .userId(imGroupMember.getUserId().longValue())
-                            .imUserId(imGroupMember.getUserId().toString())
+                            .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.batchDeleteByGroupIdAndUserId(imGroupMemberList);
-                // 用户批量退出群组
+                imGroupMemberService.batchInsert(imGroupMemberList);
+
                 if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
-                    // 融云退群
-                    imFeignService.groupBatchQuit(groupModelList);
+                    // 融云IM用户加群
+                    imFeignService.groupBatchJoin(groupModelList);
                 } else {
-                    // 腾讯云退群
-                    if (org.apache.commons.collections.CollectionUtils.isNotEmpty(imGroupMembers)) {
-
-                        Map<String, List<GroupMemberWrapper.ImGroupMember>> groupMembers = imGroupMembers.stream()
-                                .collect(Collectors.groupingBy(GroupMemberWrapper.ImGroupMember::getGroupId));
+                    // 腾讯云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<GroupMemberWrapper.ImGroupMember>> entry : groupMembers.entrySet()) {
+                        for (Map.Entry<String, List<ImGroupMemberWrapper.ImGroupMember>> entry : imGroupMembers.entrySet()) {
 
                             try {
-                                // 用户退群
-                                imGroupCoreService.groupQuit(entry.getValue(), entry.getKey());
+                                // 设置用户默认头象
+                                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());
+                                    }
+                                }
+                                // 腾讯云用户加群
+                                imGroupCoreService.groupMemberJoin(entry.getKey(), entry.getValue());
                             } catch (Exception e) {
-                                log.error("腾讯云IM用户退群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
+                                log.error("腾讯云IM用户加群失败,groupId:{}, members={}", entry.getKey(), JSON.toJSONString(entry.getValue()), e);
                             }
                         }
                     }
                 }
-            }
-        });
-        //更换教务老师等数据
-        employeeDao.employeeLevel(employeeLevelDtos);
-        //新增离职时间
-        employeeDao.updateUserDemissionDate(levelUserId);
-        //冻结用户
-        employeeDao.updateUserLock(levelUserId, 1);
-        //用户退出登陆
-        sysUserFeignService.exitByPhone("SYSTEM", teacherDao.getUser(levelUserId).getPhone());
-        CompletableFuture.runAsync(() -> {
-            //获取用户担任教务老师、维修技师的所有乐团列表
-            List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
-            //获取用户担任教务老师的所有网管课列表
-            List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
-            //获取用户担任教务老师的所有VIP课列表
-            List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
-            if (CollectionUtils.isNotEmpty(musicGroupIds)) {
-                for (String musicGroupId : musicGroupIds) {
-                    imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
+            });
+            //原有员工退群
+            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());
+                        groupModelList.add(groupModel);
+
+                        // 腾讯云
+                        imGroupMembers.add(GroupMemberWrapper.ImGroupMember.builder()
+                                .groupId(imGroupModel.getId())
+                                .userId(imGroupMember.getUserId().longValue())
+                                .imUserId(imGroupMember.getUserId().toString())
+                                .build());
+                    }
+                    imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
+                    // 用户批量退出群组
+                    if (RongCloudImPlugin.PLUGIN_NAME.equals(imPluginContext.defaultService())) {
+                        // 融云退群
+                        imFeignService.groupBatchQuit(groupModelList);
+                    } else {
+                        // 腾讯云退群
+                        if (org.apache.commons.collections.CollectionUtils.isNotEmpty(imGroupMembers)) {
+
+                            Map<String, List<GroupMemberWrapper.ImGroupMember>> groupMembers = imGroupMembers.stream()
+                                    .collect(Collectors.groupingBy(GroupMemberWrapper.ImGroupMember::getGroupId));
+
+                            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);
+                                }
+                            }
+                        }
+                    }
                 }
-            }
-            if (CollectionUtils.isNotEmpty(practiceGroupIds)) {
-                for (String musicGroupId : practiceGroupIds) {
-                    imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
+            });
+            //更换教务老师等数据
+            employeeDao.employeeLevel(employeeLevelDtos);
+            //新增离职时间
+            employeeDao.updateUserDemissionDate(levelUserId);
+            //冻结用户
+            employeeDao.updateUserLock(levelUserId, 1);
+            //用户退出登陆
+            sysUserFeignService.exitByPhone("SYSTEM", teacherDao.getUser(levelUserId).getPhone());
+            CompletableFuture.runAsync(() -> {
+                //获取用户担任教务老师、维修技师的所有乐团列表
+                List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
+                //获取用户担任教务老师的所有网管课列表
+                List<String> practiceGroupIds = employeeDao.queryPracticeGroupIdByUserId(levelUserId);
+                //获取用户担任教务老师的所有VIP课列表
+                List<String> vipGroupIds = employeeDao.queryVipGroupIdByUserId(levelUserId);
+                if (CollectionUtils.isNotEmpty(musicGroupIds)) {
+                    for (String musicGroupId : musicGroupIds) {
+                        imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.MUSIC);
+                    }
                 }
-            }
-            if (CollectionUtils.isNotEmpty(vipGroupIds)) {
-                for (String musicGroupId : vipGroupIds) {
-                    imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
+                if (CollectionUtils.isNotEmpty(practiceGroupIds)) {
+                    for (String musicGroupId : practiceGroupIds) {
+                        imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.PRACTICE);
+                    }
                 }
-            }
-            if (CollectionUtils.isNotEmpty(musicGroupIds) || CollectionUtils.isNotEmpty(practiceGroupIds) || CollectionUtils.isNotEmpty(vipGroupIds)) {
-                //更新群成员数量
-                imGroupDao.updateMemberNum();
-                //删除重复的群成员
-                imGroupMemberService.delRepeat();
-            }
-        }, exportExecutorService);
+                if (CollectionUtils.isNotEmpty(vipGroupIds)) {
+                    for (String musicGroupId : vipGroupIds) {
+                        imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
+                    }
+                }
+                if (CollectionUtils.isNotEmpty(musicGroupIds) || CollectionUtils.isNotEmpty(practiceGroupIds) || CollectionUtils.isNotEmpty(vipGroupIds)) {
+                    //更新群成员数量
+                    imGroupDao.updateMemberNum();
+                    //删除重复的群成员
+                    imGroupMemberService.delRepeat();
+                }
+            }, exportExecutorService);
+        }
     }
 
     @Override