|  | @@ -3,11 +3,14 @@ package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONArray;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.Organization;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.GroupType;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.service.ImGroupService;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.ImUserFriendService;
 | 
	
		
			
				|  |  | +import com.ym.mec.im.entity.GroupMember;
 | 
	
		
			
				|  |  | +import com.ym.mec.im.entity.GroupModel;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
	
	
		
			
				|  | @@ -41,7 +44,7 @@ import org.springframework.util.CollectionUtils;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  implements EmployeeService {
 | 
	
		
			
				|  |  | -	
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
		
			
				|  |  |  	private EmployeeDao employeeDao;
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
	
		
			
				|  | @@ -62,6 +65,8 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 | 
	
		
			
				|  |  |  	private OrganizationDao organizationDao;
 | 
	
		
			
				|  |  |  	@Autowired
 | 
	
		
			
				|  |  |  	private ImGroupDao imGroupDao;
 | 
	
		
			
				|  |  | +	@Autowired
 | 
	
		
			
				|  |  | +	private CooperationOrganDao cooperationOrganDao;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 | 
	
		
			
				|  |  |  	public BaseDAO<Integer, Employee> getDAO() {
 | 
	
	
		
			
				|  | @@ -256,8 +261,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 | 
	
		
			
				|  |  |  	public void level(List<EmployeeLevelDto> employeeLevelDtos) {
 | 
	
		
			
				|  |  |  		Integer levelUserId = employeeLevelDtos.get(0).getLevelUserId();
 | 
	
		
			
				|  |  |  		List<ImGroupModel> educationGroupModels = new ArrayList<>();
 | 
	
		
			
				|  |  | -		List<ImGroupModel> teamGroupModels = new ArrayList<>();
 | 
	
		
			
				|  |  | -		List<ImGroupModel> directorGroupModels = new ArrayList<>();
 | 
	
		
			
				|  |  | +//		List<ImGroupModel> teamGroupModels = new ArrayList<>();
 | 
	
		
			
				|  |  | +//		List<ImGroupModel> directorGroupModels = new ArrayList<>();
 | 
	
		
			
				|  |  | +		//获取用户需要加入的预报名群聊
 | 
	
		
			
				|  |  | +//		List<ImGroupModel> applyGroupModels = new ArrayList<>();
 | 
	
		
			
				|  |  |  		//获取用户担任教务老师的所有乐团列表
 | 
	
		
			
				|  |  |  		List<String> musicGroupIds = employeeDao.queryMusicGroupIdByUserId(levelUserId);
 | 
	
		
			
				|  |  |  		//获取用户担任教务老师的所有网管课列表
 | 
	
	
		
			
				|  | @@ -267,6 +274,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 | 
	
		
			
				|  |  |  		//获取用户需要加入的群组列表
 | 
	
		
			
				|  |  |  		Map<String, List<EmployeeLevelDto>> collect = employeeLevelDtos.stream().collect(Collectors.groupingBy(e -> e.getRoleName()));
 | 
	
		
			
				|  |  |  		Set<String> roleNames = collect.keySet();
 | 
	
		
			
				|  |  | +		Set<Integer> userIds = new HashSet<>();
 | 
	
		
			
				|  |  |  		for (String roleName : roleNames) {
 | 
	
		
			
				|  |  |  			List<EmployeeLevelDto> levelDtos = collect.get(roleName);
 | 
	
		
			
				|  |  |  			Map<Integer, List<EmployeeLevelDto>> organIdMap = levelDtos.stream().collect(Collectors.groupingBy(e -> e.getOrganId()));
 | 
	
	
		
			
				|  | @@ -277,28 +285,60 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 | 
	
		
			
				|  |  |  					if(employeeLevelDto.getLevelUserId() == employeeLevelDto.getTransferUserId()){
 | 
	
		
			
				|  |  |  						throw new BizException("交接人校验失败,请重新填写");
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  | +					userIds.add(employeeLevelDto.getTransferUserId());
 | 
	
		
			
				|  |  | +					//获取关联的预报名的群聊
 | 
	
		
			
				|  |  | +					educationGroupModels.addAll(classGroupDao.queryApplyGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 | 
	
		
			
				|  |  |  					switch (roleName){
 | 
	
		
			
				|  |  |  						case "education":
 | 
	
		
			
				|  |  | +							//替换当前分部合作单位关联的乐团主管
 | 
	
		
			
				|  |  | +							cooperationOrganDao.batchUpdateEduId(employeeLevelDto.getTransferUserId(),levelUserId,organId);
 | 
	
		
			
				|  |  |  							//教务老师所需加入的群组
 | 
	
		
			
				|  |  |  							educationGroupModels.addAll(classGroupDao.queryEducationGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 | 
	
		
			
				|  |  |  							break;
 | 
	
		
			
				|  |  |  						case "teamTeacher":
 | 
	
		
			
				|  |  |  							//运营主管所需加入的群组
 | 
	
		
			
				|  |  | -							teamGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 | 
	
		
			
				|  |  | +							educationGroupModels.addAll(classGroupDao.queryTeamTeacherGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 | 
	
		
			
				|  |  |  							break;
 | 
	
		
			
				|  |  |  						case "director":
 | 
	
		
			
				|  |  |  							//乐队指导所需加入的群组
 | 
	
		
			
				|  |  | -							directorGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 | 
	
		
			
				|  |  | +							educationGroupModels.addAll(classGroupDao.queryDirectorGroups(employeeLevelDto.getTransferUserId(),levelUserId,organId));
 | 
	
		
			
				|  |  |  							break;
 | 
	
		
			
				|  |  |  					}
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		Date date = new Date();
 | 
	
		
			
				|  |  | +//		educationGroupModels.addAll(applyGroupModels);
 | 
	
		
			
				|  |  | +//		educationGroupModels.addAll(educationGroupModels);
 | 
	
		
			
				|  |  | +//		educationGroupModels.addAll(teamGroupModels);
 | 
	
		
			
				|  |  |  		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<>();
 | 
	
		
			
				|  |  |  			for (ImGroupModel imGroupModel : educationGroupModels) {
 | 
	
		
			
				|  |  | -				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 | 
	
		
			
				|  |  | -				
 | 
	
		
			
				|  |  | +				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(Long.parseLong(imGroupModel.getId()));
 | 
	
		
			
				|  |  | +				imGroupMember.setIsAdmin(false);
 | 
	
		
			
				|  |  | +				imGroupMember.setRoleType(imGroupModel.getUserRole());
 | 
	
		
			
				|  |  | +				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);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			imGroupMemberService.batchInsert(imGroupMemberList);
 | 
	
		
			
				|  |  | +			imFeignService.groupBatchJoin(groupModelList);
 | 
	
		
			
				|  |  | +		}
 | 
	
		
			
				|  |  | +		/*if(educationGroupModels.size() > 0){
 | 
	
		
			
				|  |  | +			//❤️用户加群
 | 
	
		
			
				|  |  | +			for (ImGroupModel imGroupModel : educationGroupModels) {
 | 
	
		
			
				|  |  | +				Map<Integer,String> userRoleMap = new HashMap<>();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  				List<ImGroupMember> memberList = imGroupModel.getMemberList();
 | 
	
		
			
				|  |  |  				for(ImGroupMember member : memberList){
 | 
	
		
			
				|  |  |  					userRoleMap.put(Integer.parseInt(member.getId()), "乐团主管");
 | 
	
	
		
			
				|  | @@ -310,7 +350,7 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 | 
	
		
			
				|  |  |  			//❤️用户加群
 | 
	
		
			
				|  |  |  			for (ImGroupModel imGroupModel : teamGroupModels) {
 | 
	
		
			
				|  |  |  				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 | 
	
		
			
				|  |  | -				
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  				List<ImGroupMember> memberList = imGroupModel.getMemberList();
 | 
	
		
			
				|  |  |  				for(ImGroupMember member : memberList){
 | 
	
		
			
				|  |  |  					userRoleMap.put(Integer.parseInt(member.getId()), "运营主管");
 | 
	
	
		
			
				|  | @@ -322,22 +362,42 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 | 
	
		
			
				|  |  |  			//❤️用户加群
 | 
	
		
			
				|  |  |  			for (ImGroupModel imGroupModel : directorGroupModels) {
 | 
	
		
			
				|  |  |  				Map<Integer,String> userRoleMap = new HashMap<Integer, String>();
 | 
	
		
			
				|  |  | -				
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  				List<ImGroupMember> memberList = imGroupModel.getMemberList();
 | 
	
		
			
				|  |  |  				for(ImGroupMember member : memberList){
 | 
	
		
			
				|  |  |  					userRoleMap.put(Integer.parseInt(member.getId()), "乐队指导");
 | 
	
		
			
				|  |  |  				}
 | 
	
		
			
				|  |  |  				imGroupMemberService.join(Long.parseLong(imGroupModel.getId()), userRoleMap);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | +		}*/
 | 
	
		
			
				|  |  |  		//原有员工退群
 | 
	
		
			
				|  |  |  		List<ImGroupModel> groupModels = classGroupDao.queryTeacherQuitGroups(levelUserId);
 | 
	
		
			
				|  |  | -		if(groupModels.size() > 0){
 | 
	
		
			
				|  |  | +		/*if(groupModels.size() > 0){
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  			List<Long> imGroupIdList = new ArrayList<Long>();
 | 
	
		
			
				|  |  |  			for (ImGroupModel imGroupModel : groupModels) {
 | 
	
		
			
				|  |  |  				imGroupIdList.add(Long.parseLong(imGroupModel.getId()));
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  			imGroupMemberService.quit(imGroupIdList, levelUserId);
 | 
	
		
			
				|  |  | +		}*/
 | 
	
		
			
				|  |  | +		//原有员工退预报名群
 | 
	
		
			
				|  |  | +		groupModels.addAll(classGroupDao.queryQuitApplyGroups(levelUserId));
 | 
	
		
			
				|  |  | +//		groupModels.addAll(imGroupModels);
 | 
	
		
			
				|  |  | +		if(groupModels.size() > 0){
 | 
	
		
			
				|  |  | +			List<com.ym.mec.biz.dal.entity.ImGroupMember> imGroupMemberList = new ArrayList<>();
 | 
	
		
			
				|  |  | +			List<GroupModel> groupModelList = new ArrayList<>();
 | 
	
		
			
				|  |  | +			for (ImGroupModel imGroupModel : groupModels) {
 | 
	
		
			
				|  |  | +				com.ym.mec.biz.dal.entity.ImGroupMember imGroupMember = new com.ym.mec.biz.dal.entity.ImGroupMember();
 | 
	
		
			
				|  |  | +				imGroupMember.setImGroupId(Long.parseLong(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);
 | 
	
		
			
				|  |  | +			}
 | 
	
		
			
				|  |  | +			imGroupMemberService.batchDeleteByGroupIdAndUserId(imGroupMemberList);
 | 
	
		
			
				|  |  | +			imFeignService.groupBatchQuit(groupModelList);
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  |  		//更换教务老师等数据
 | 
	
		
			
				|  |  |  		employeeDao.employeeLevel(employeeLevelDtos);
 | 
	
	
		
			
				|  | @@ -360,6 +420,10 @@ public class EmployeeServiceImpl extends BaseServiceImpl<Integer, Employee>  imp
 | 
	
		
			
				|  |  |  				imUserFriendService.refreshGroupImUserFriend(musicGroupId, GroupType.VIP);
 | 
	
		
			
				|  |  |  			}
 | 
	
		
			
				|  |  |  		}
 | 
	
		
			
				|  |  | +		//更新群成员数量
 | 
	
		
			
				|  |  | +		imGroupDao.updateMemberNum();
 | 
	
		
			
				|  |  | +		//删除重复的群成员
 | 
	
		
			
				|  |  | +		imGroupMemberService.delRepeat();
 | 
	
		
			
				|  |  |  	}
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  	@Override
 |