|  | @@ -1,19 +1,18 @@
 | 
	
		
			
				|  |  |  package com.ym.mec.biz.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import java.util.*;
 | 
	
		
			
				|  |  | -import java.util.concurrent.CompletableFuture;
 | 
	
		
			
				|  |  | -import java.util.concurrent.ExecutorService;
 | 
	
		
			
				|  |  | -import java.util.concurrent.Executors;
 | 
	
		
			
				|  |  | -import java.util.function.Consumer;
 | 
	
		
			
				|  |  |  import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.google.common.collect.Lists;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.dao.*;
 | 
	
		
			
				|  |  | -import com.ym.mec.biz.dal.dto.ClassGroupStudentInfoDto;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.entity.*;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.enums.GroupType;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.enums.school.ESchoolStaffType;
 | 
	
		
			
				|  |  | +import com.ym.mec.biz.dal.mapper.SchoolStaffMapper;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.dal.wrapper.ImGroupWrapper;
 | 
	
		
			
				|  |  |  import com.ym.mec.biz.service.TeacherService;
 | 
	
		
			
				|  |  |  import com.ym.mec.util.collection.MapUtil;
 | 
	
		
			
				|  |  | +import org.apache.commons.collections.CollectionUtils;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.data.redis.core.RedisTemplate;
 | 
	
	
		
			
				|  | @@ -31,178 +30,210 @@ import static com.ym.mec.biz.dal.enums.GroupType.*;
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend> implements ImUserFriendService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private ImUserFriendDao imUserFriendDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private TeacherService teacherService;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private MusicGroupDao musicGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private VipGroupDao vipGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private PracticeGroupDao practiceGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private TeacherDao teacherDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private CourseScheduleDao courseScheduleDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private StudentRegistrationDao studentRegistrationDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private ClassGroupDao classGroupDao;
 | 
	
		
			
				|  |  | -	@Autowired
 | 
	
		
			
				|  |  | -	private RedisTemplate<String,String> redisTemplate;
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public BaseDAO<Long, ImUserFriend> getDAO() {
 | 
	
		
			
				|  |  | -		return imUserFriendDao;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public boolean addFriend(Integer userId, Integer friendUserId, String nickname, String memo) {
 | 
	
		
			
				|  |  | -		// 检查是否已经是好友
 | 
	
		
			
				|  |  | -		ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
 | 
	
		
			
				|  |  | -		if (userFriend != null) {
 | 
	
		
			
				|  |  | -			throw new BizException("好友已存在");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		Date date = new Date();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		userFriend = new ImUserFriend();
 | 
	
		
			
				|  |  | -		userFriend.setFriendId(friendUserId);
 | 
	
		
			
				|  |  | -		userFriend.setUserId(friendUserId);
 | 
	
		
			
				|  |  | -		userFriend.setFriendNickname(nickname);
 | 
	
		
			
				|  |  | -		userFriend.setMemo(memo);
 | 
	
		
			
				|  |  | -		userFriend.setCreateTime(date);
 | 
	
		
			
				|  |  | -		userFriend.setUpdateTime(date);
 | 
	
		
			
				|  |  | -		imUserFriendDao.insert(userFriend);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		return true;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public boolean deleteFriend(Integer userId, Integer friendUserId) {
 | 
	
		
			
				|  |  | -		ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
 | 
	
		
			
				|  |  | -		if (userFriend == null) {
 | 
	
		
			
				|  |  | -			throw new BizException("好友不存在");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		imUserFriendDao.delete(userFriend.getId());
 | 
	
		
			
				|  |  | -		return true;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public boolean updateFriendNickname(Integer userId, Integer friendUserId, String nickname, String memo) {
 | 
	
		
			
				|  |  | -		ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
 | 
	
		
			
				|  |  | -		if (userFriend == null) {
 | 
	
		
			
				|  |  | -			throw new BizException("好友不存在");
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		Date date = new Date();
 | 
	
		
			
				|  |  | -		userFriend.setFriendNickname(nickname);
 | 
	
		
			
				|  |  | -		userFriend.setMemo(memo);
 | 
	
		
			
				|  |  | -		userFriend.setUpdateTime(date);
 | 
	
		
			
				|  |  | -		imUserFriendDao.update(userFriend);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		return true;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
 | 
	
		
			
				|  |  | -		String syncImUserFriendKey = "syncImUserFriend:" + userId;
 | 
	
		
			
				|  |  | -		if(redisTemplate.hasKey(syncImUserFriendKey)){
 | 
	
		
			
				|  |  | -			return imUserFriendDao.queryFriendListByUserId(userId, search);
 | 
	
		
			
				|  |  | -		}else {
 | 
	
		
			
				|  |  | -			return teacherService.queryGroupStudents1(userId,null);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public ImUserFriendDto queryFriendDetail(Integer userId, Integer friendUserId) {
 | 
	
		
			
				|  |  | -		return imUserFriendDao.queryFriendDetail(userId, friendUserId);
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	public void batchInsert(List<ImUserFriend> imUserFriends) {
 | 
	
		
			
				|  |  | -		for (ImUserFriend imUserFriend : imUserFriends) {
 | 
	
		
			
				|  |  | -			if(imUserFriend.getUserId() == imUserFriend.getFriendId()){
 | 
	
		
			
				|  |  | -				continue;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			// 检查是否已经是好友
 | 
	
		
			
				|  |  | -			ImUserFriend userFriend = imUserFriendDao.query(imUserFriend.getUserId(), imUserFriend.getFriendId());
 | 
	
		
			
				|  |  | -			if (userFriend != null) {
 | 
	
		
			
				|  |  | -				continue;
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			imUserFriendDao.insert(imUserFriend);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public void refreshCourseImUserFriend(Long courseId) {
 | 
	
		
			
				|  |  | -		CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
 | 
	
		
			
				|  |  | -		//获取班级关联的老师列表
 | 
	
		
			
				|  |  | -		Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
 | 
	
		
			
				|  |  | -		//获取班级关联的学员列表
 | 
	
		
			
				|  |  | -		Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
 | 
	
		
			
				|  |  | -		ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | -		if(classGroup == null){
 | 
	
		
			
				|  |  | -			return;
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		GroupType groupType = classGroup.getGroupType();
 | 
	
		
			
				|  |  | -		List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | -		if(imUserFriends.size() > 0){
 | 
	
		
			
				|  |  | -			batchInsert(imUserFriends);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public void refreshClassImUserFriend(Integer classGroupId) {
 | 
	
		
			
				|  |  | -		//获取班级关联的老师列表
 | 
	
		
			
				|  |  | -		Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(classGroupId,null,null);
 | 
	
		
			
				|  |  | -		//获取班级关联的学员列表
 | 
	
		
			
				|  |  | -		Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(classGroupId,null,null);
 | 
	
		
			
				|  |  | -		ClassGroup classGroup = classGroupDao.get(classGroupId);
 | 
	
		
			
				|  |  | -		GroupType groupType = classGroup.getGroupType();
 | 
	
		
			
				|  |  | -		List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | -		if(imUserFriends.size() > 0){
 | 
	
		
			
				|  |  | -			batchInsert(imUserFriends);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@Override
 | 
	
		
			
				|  |  | -	@Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | -	public void refreshGroupImUserFriend(String musicGroupId,GroupType groupType) {
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ImUserFriendDao imUserFriendDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private TeacherService teacherService;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ClassGroupTeacherMapperDao classGroupTeacherMapperDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ClassGroupStudentMapperDao classGroupStudentMapperDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private MusicGroupDao musicGroupDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private VipGroupDao vipGroupDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private PracticeGroupDao practiceGroupDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private TeacherDao teacherDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private CourseScheduleDao courseScheduleDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private StudentRegistrationDao studentRegistrationDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ClassGroupDao classGroupDao;
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private RedisTemplate<String,String> redisTemplate;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private SchoolStaffMapper schoolStaffMapper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Autowired
 | 
	
		
			
				|  |  | +    private ImGroupMemberDao imGroupMemberDao;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public BaseDAO<Long, ImUserFriend> getDAO() {
 | 
	
		
			
				|  |  | +        return imUserFriendDao;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public boolean addFriend(Integer userId, Integer friendUserId, String nickname, String memo) {
 | 
	
		
			
				|  |  | +        // 检查是否已经是好友
 | 
	
		
			
				|  |  | +        ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
 | 
	
		
			
				|  |  | +        if (userFriend != null) {
 | 
	
		
			
				|  |  | +            throw new BizException("好友已存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Date date = new Date();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        userFriend = new ImUserFriend();
 | 
	
		
			
				|  |  | +        userFriend.setFriendId(friendUserId);
 | 
	
		
			
				|  |  | +        userFriend.setUserId(friendUserId);
 | 
	
		
			
				|  |  | +        userFriend.setFriendNickname(nickname);
 | 
	
		
			
				|  |  | +        userFriend.setMemo(memo);
 | 
	
		
			
				|  |  | +        userFriend.setCreateTime(date);
 | 
	
		
			
				|  |  | +        userFriend.setUpdateTime(date);
 | 
	
		
			
				|  |  | +        imUserFriendDao.insert(userFriend);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public boolean deleteFriend(Integer userId, Integer friendUserId) {
 | 
	
		
			
				|  |  | +        ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
 | 
	
		
			
				|  |  | +        if (userFriend == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("好友不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        imUserFriendDao.delete(userFriend.getId());
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public boolean updateFriendNickname(Integer userId, Integer friendUserId, String nickname, String memo) {
 | 
	
		
			
				|  |  | +        ImUserFriend userFriend = imUserFriendDao.query(userId, friendUserId);
 | 
	
		
			
				|  |  | +        if (userFriend == null) {
 | 
	
		
			
				|  |  | +            throw new BizException("好友不存在");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Date date = new Date();
 | 
	
		
			
				|  |  | +        userFriend.setFriendNickname(nickname);
 | 
	
		
			
				|  |  | +        userFriend.setMemo(memo);
 | 
	
		
			
				|  |  | +        userFriend.setUpdateTime(date);
 | 
	
		
			
				|  |  | +        imUserFriendDao.update(userFriend);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return true;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public List<ImUserFriendDto> queryFriendListByUserId(Integer userId, String search) {
 | 
	
		
			
				|  |  | +        String syncImUserFriendKey = "syncImUserFriend:" + userId;
 | 
	
		
			
				|  |  | +        if(redisTemplate.hasKey(syncImUserFriendKey)){
 | 
	
		
			
				|  |  | +            return imUserFriendDao.queryFriendListByUserId(userId, search);
 | 
	
		
			
				|  |  | +        }else {
 | 
	
		
			
				|  |  | +            return teacherService.queryGroupStudents1(userId,null);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public ImUserFriendDto queryFriendDetail(Integer userId, Integer friendUserId) {
 | 
	
		
			
				|  |  | +        return imUserFriendDao.queryFriendDetail(userId, friendUserId);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void batchInsert(List<ImUserFriend> imUserFriends) {
 | 
	
		
			
				|  |  | +        for (ImUserFriend imUserFriend : imUserFriends) {
 | 
	
		
			
				|  |  | +            if(imUserFriend.getUserId() == imUserFriend.getFriendId()){
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            // 检查是否已经是好友
 | 
	
		
			
				|  |  | +            ImUserFriend userFriend = imUserFriendDao.query(imUserFriend.getUserId(), imUserFriend.getFriendId());
 | 
	
		
			
				|  |  | +            if (userFriend != null) {
 | 
	
		
			
				|  |  | +                continue;
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            imUserFriendDao.insert(imUserFriend);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void refreshCourseImUserFriend(Long courseId) {
 | 
	
		
			
				|  |  | +        CourseSchedule courseSchedule = courseScheduleDao.get(courseId);
 | 
	
		
			
				|  |  | +        //获取班级关联的老师列表
 | 
	
		
			
				|  |  | +        Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
 | 
	
		
			
				|  |  | +        //获取班级关联的学员列表
 | 
	
		
			
				|  |  | +        Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(courseSchedule.getClassGroupId(),null,null);
 | 
	
		
			
				|  |  | +        ClassGroup classGroup = classGroupDao.get(courseSchedule.getClassGroupId());
 | 
	
		
			
				|  |  | +        if(classGroup == null){
 | 
	
		
			
				|  |  | +            return;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        GroupType groupType = classGroup.getGroupType();
 | 
	
		
			
				|  |  | +        List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | +        if(imUserFriends.size() > 0){
 | 
	
		
			
				|  |  | +            batchInsert(imUserFriends);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void refreshClassImUserFriend(Integer classGroupId) {
 | 
	
		
			
				|  |  | +        //获取班级关联的老师列表
 | 
	
		
			
				|  |  | +        Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(classGroupId,null,null);
 | 
	
		
			
				|  |  | +        //获取班级关联的学员列表
 | 
	
		
			
				|  |  | +        Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(classGroupId,null,null);
 | 
	
		
			
				|  |  | +        ClassGroup classGroup = classGroupDao.get(classGroupId);
 | 
	
		
			
				|  |  | +        GroupType groupType = classGroup.getGroupType();
 | 
	
		
			
				|  |  | +        List<ImUserFriend> imUserFriends = saveImUserFriends(studentIds, teacherIds, groupType, classGroup.getMusicGroupId());
 | 
	
		
			
				|  |  | +        if(imUserFriends.size() > 0){
 | 
	
		
			
				|  |  | +            batchInsert(imUserFriends);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    public void refreshGroupImUserFriend(String musicGroupId,GroupType groupType) {
 | 
	
		
			
				|  |  |  //		ExecutorService executor = Executors.newCachedThreadPool();
 | 
	
		
			
				|  |  |  //		CompletableFuture.runAsync(()->{
 | 
	
		
			
				|  |  | -			List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, groupType.getCode());
 | 
	
		
			
				|  |  | -			List<ImUserFriend> imUserFriends = new ArrayList<>();
 | 
	
		
			
				|  |  | -			classGroups.forEach(e->{
 | 
	
		
			
				|  |  | -				//获取班级关联的老师列表
 | 
	
		
			
				|  |  | -				Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(e.getId(),null,null);
 | 
	
		
			
				|  |  | -				//获取班级关联的学员列表
 | 
	
		
			
				|  |  | -				Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(e.getId(),null,null);
 | 
	
		
			
				|  |  | -				imUserFriends.addAll(saveImUserFriends(studentIds,teacherIds,groupType,musicGroupId));
 | 
	
		
			
				|  |  | -			});
 | 
	
		
			
				|  |  | -			if(imUserFriends.size() > 0){
 | 
	
		
			
				|  |  | -				batchInsert(imUserFriends);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			//更新用户朋友昵称是空的历史数据(线上没有发现这种问题)
 | 
	
		
			
				|  |  | -			imUserFriendDao.updateNullNickName();
 | 
	
		
			
				|  |  | +        List<ClassGroup> classGroups = classGroupDao.queryClassGroups(musicGroupId, groupType==null?null:groupType.getCode());
 | 
	
		
			
				|  |  | +        List<ImUserFriend> imUserFriends = new ArrayList<>();
 | 
	
		
			
				|  |  | +        classGroups.forEach(e->{
 | 
	
		
			
				|  |  | +            //获取班级关联的老师列表
 | 
	
		
			
				|  |  | +            Set<Integer> teacherIds = classGroupTeacherMapperDao.queryTeacherIdsByClassGroupId(e.getId(),null,null);
 | 
	
		
			
				|  |  | +            //获取班级关联的学员列表
 | 
	
		
			
				|  |  | +            Set<Integer> studentIds = classGroupStudentMapperDao.queryStudentIdsByClassGroupId(e.getId(),null,null);
 | 
	
		
			
				|  |  | +            imUserFriends.addAll(saveImUserFriends(studentIds,teacherIds,groupType,musicGroupId));
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
 | 
	
		
			
				|  |  | +        // 更新学校端乐团主管的群好友列表
 | 
	
		
			
				|  |  | +        if (musicGroup.getCooperationOrganId() != null) {
 | 
	
		
			
				|  |  | +            // 获取乐团主管
 | 
	
		
			
				|  |  | +            List<SchoolStaff> schoolStaffs = schoolStaffMapper.getByCoopIdAndType(musicGroup.getCooperationOrganId(), ESchoolStaffType.ORCHESTRA_LEADER);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            if (CollectionUtils.isNotEmpty(schoolStaffs)) {
 | 
	
		
			
				|  |  | +                SchoolStaff schoolStaff = schoolStaffs.get(0);
 | 
	
		
			
				|  |  | +                // 获取乐团群的人员列表
 | 
	
		
			
				|  |  | +                List<ImGroupMember> memberList = imGroupMemberDao.getByGroupId(musicGroupId);
 | 
	
		
			
				|  |  | +                if (CollectionUtils.isNotEmpty(memberList)) {
 | 
	
		
			
				|  |  | +                    Long staffUserId = schoolStaff.getUserId();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +                    Set<Integer> userIds = memberList.stream().map(o -> o.getUserId())
 | 
	
		
			
				|  |  | +                            .collect(Collectors.toSet());
 | 
	
		
			
				|  |  | +                    userFriends(imUserFriends, musicGroup.getName(), staffUserId, userIds);
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        // 更新学校端好友列表
 | 
	
		
			
				|  |  | +        if (musicGroup.getCooperationOrganId() != null) {
 | 
	
		
			
				|  |  | +            imUserFriends.addAll(schoolStaffFriend(musicGroup.getCooperationOrganId()));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if(imUserFriends.size() > 0){
 | 
	
		
			
				|  |  | +            batchInsert(imUserFriends);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //更新用户朋友昵称是空的历史数据(线上没有发现这种问题)
 | 
	
		
			
				|  |  | +        imUserFriendDao.updateNullNickName();
 | 
	
		
			
				|  |  |  //		},executor);
 | 
	
		
			
				|  |  |  //		executor.shutdown();
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public List<ImUserFriendDto> queryFriendListByUserIdV2(Integer userId, String search, String musicGroupId, Integer subjectId, Boolean vipFlag) {
 | 
	
		
			
				|  |  |          // 逻辑过于复杂 拿出数据后筛选
 | 
	
		
			
				|  |  |          return imUserFriendDao.queryFriendListByUserIdV2(userId, search,musicGroupId,subjectId,vipFlag);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -221,110 +252,163 @@ public class ImUserFriendServiceImpl extends BaseServiceImpl<Long, ImUserFriend>
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public List<ImUserFriend> saveImUserFriends(Set<Integer> studentIds,Set<Integer> teacherIds,GroupType groupType,String musicGroupId){
 | 
	
		
			
				|  |  | -		List<ImUserFriend> imUserFriends = new ArrayList<>();
 | 
	
		
			
				|  |  | -		Set<Integer> educationIds = new HashSet<>();
 | 
	
		
			
				|  |  | -		Integer repairUserId = null;
 | 
	
		
			
				|  |  | -		String repairUserName = null;
 | 
	
		
			
				|  |  | -		MusicGroup musicGroup = new MusicGroup();
 | 
	
		
			
				|  |  | -		//获取当前学员声部
 | 
	
		
			
				|  |  | -		Map<Integer,String> studentSubjectName = new HashMap<>();
 | 
	
		
			
				|  |  | -		Map<Integer, String> teacherSubjectNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | -		if(teacherIds.size() > 0){
 | 
	
		
			
				|  |  | -			teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		if(groupType == MUSIC){
 | 
	
		
			
				|  |  | -			//学员关联乐团管理人员通讯录
 | 
	
		
			
				|  |  | -			musicGroup = musicGroupDao.get(musicGroupId);
 | 
	
		
			
				|  |  | -			educationIds.add(musicGroup.getDirectorUserId());
 | 
	
		
			
				|  |  | -			educationIds.add(musicGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | -			educationIds.add(musicGroup.getTeamTeacherId());
 | 
	
		
			
				|  |  | -			if(musicGroup.getRepairUserId() != null){
 | 
	
		
			
				|  |  | -				repairUserId = musicGroup.getRepairUserId();
 | 
	
		
			
				|  |  | -				repairUserName = teacherDao.queryNameById(repairUserId);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -			if(studentIds.size() > 0){
 | 
	
		
			
				|  |  | -				studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}else if(groupType == VIP){
 | 
	
		
			
				|  |  | -			VipGroup vipGroup = vipGroupDao.get(Long.parseLong(musicGroupId));
 | 
	
		
			
				|  |  | -			educationIds.add(vipGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | -		}else if(groupType == PRACTICE){
 | 
	
		
			
				|  |  | -			PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(musicGroupId));
 | 
	
		
			
				|  |  | -			educationIds.add(practiceGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		studentIds.removeAll(Collections.singleton(null));
 | 
	
		
			
				|  |  | -		teacherIds.removeAll(Collections.singleton(null));
 | 
	
		
			
				|  |  | -		educationIds.removeAll(Collections.singleton(null));
 | 
	
		
			
				|  |  | -		Map<Integer, String> usernameMap = new HashMap<>();
 | 
	
		
			
				|  |  | -		if(studentIds.size() > 0){
 | 
	
		
			
				|  |  | -			usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(studentIds)));
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		Map<Integer, String> teacherRealNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | -		if(teacherIds.size() > 0){
 | 
	
		
			
				|  |  | -			teacherRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(teacherIds)));
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		Map<Integer, String> educationRealNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | -		if(educationIds.size() > 0){
 | 
	
		
			
				|  |  | -			educationRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(educationIds)));
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		//老师关联教务、学员
 | 
	
		
			
				|  |  | -		for (Integer teacherId : teacherIds) {
 | 
	
		
			
				|  |  | -			//老师关联学员
 | 
	
		
			
				|  |  | -			this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),teacherId,imUserFriends);
 | 
	
		
			
				|  |  | -			//老师关联教务
 | 
	
		
			
				|  |  | -			this.addImUserFriend(educationIds,null,educationRealNameMap,null,teacherId,imUserFriends);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		//教务关联的老师、学员
 | 
	
		
			
				|  |  | -		for (Integer educationId : educationIds) {
 | 
	
		
			
				|  |  | -			//教务关联学员
 | 
	
		
			
				|  |  | -			this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),educationId,imUserFriends);
 | 
	
		
			
				|  |  | -			//教务关联老师
 | 
	
		
			
				|  |  | -			this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),educationId,imUserFriends);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		//学员关联的老师、教务、维修技师
 | 
	
		
			
				|  |  | -		for (Integer studentId : studentIds) {
 | 
	
		
			
				|  |  | -			//学员关联的老师
 | 
	
		
			
				|  |  | -			this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),studentId,imUserFriends);
 | 
	
		
			
				|  |  | -			//学员关联的教务
 | 
	
		
			
				|  |  | -			this.addImUserFriend(educationIds,null,educationRealNameMap,null,studentId,imUserFriends);
 | 
	
		
			
				|  |  | -			//学员关联维修技师
 | 
	
		
			
				|  |  | -			if(repairUserId != null){
 | 
	
		
			
				|  |  | -				if(repairUserId == studentId){
 | 
	
		
			
				|  |  | -					continue;
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				ImUserFriend imUserFriend = new ImUserFriend();
 | 
	
		
			
				|  |  | -				imUserFriend.setUserId(studentId);
 | 
	
		
			
				|  |  | -				imUserFriend.setFriendId(repairUserId);
 | 
	
		
			
				|  |  | -				imUserFriend.setFriendNickname(repairUserName);
 | 
	
		
			
				|  |  | -				imUserFriend.setMemo(musicGroup.getName());
 | 
	
		
			
				|  |  | -				imUserFriend.setTags("维修技师");
 | 
	
		
			
				|  |  | -				imUserFriends.add(imUserFriend);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		//维修技师关联学员
 | 
	
		
			
				|  |  | -		if(repairUserId != null){
 | 
	
		
			
				|  |  | -			this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),repairUserId,imUserFriends);
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		return imUserFriends;
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
 | 
	
		
			
				|  |  | -								Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends){
 | 
	
		
			
				|  |  | -		if(friendUserIds != null && friendUserIds.size() > 0){
 | 
	
		
			
				|  |  | -			for (Integer friendId : friendUserIds) {
 | 
	
		
			
				|  |  | -				if(userId == friendId){
 | 
	
		
			
				|  |  | -					continue;
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				ImUserFriend imUserFriend = new ImUserFriend();
 | 
	
		
			
				|  |  | -				imUserFriend.setUserId(userId);
 | 
	
		
			
				|  |  | -				imUserFriend.setFriendId(friendId);
 | 
	
		
			
				|  |  | -				imUserFriend.setFriendNickname(nameMap.get(friendId));
 | 
	
		
			
				|  |  | -				imUserFriend.setMemo(memo);
 | 
	
		
			
				|  |  | -				if(tagsMap != null){
 | 
	
		
			
				|  |  | -					imUserFriend.setTags(tagsMap.get(friendId));
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				imUserFriends.add(imUserFriend);
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | +        List<ImUserFriend> imUserFriends = new ArrayList<>();
 | 
	
		
			
				|  |  | +        Set<Integer> educationIds = new HashSet<>();
 | 
	
		
			
				|  |  | +        Integer repairUserId = null;
 | 
	
		
			
				|  |  | +        String repairUserName = null;
 | 
	
		
			
				|  |  | +        MusicGroup musicGroup = new MusicGroup();
 | 
	
		
			
				|  |  | +        //获取当前学员声部
 | 
	
		
			
				|  |  | +        Map<Integer,String> studentSubjectName = new HashMap<>();
 | 
	
		
			
				|  |  | +        Map<Integer, String> teacherSubjectNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        if(teacherIds.size() > 0){
 | 
	
		
			
				|  |  | +            teacherSubjectNameMap = MapUtil.convertIntegerMap(teacherDao.querySubjectNameByIdList(new ArrayList<>(teacherIds)));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if(groupType == MUSIC){
 | 
	
		
			
				|  |  | +            //学员关联乐团管理人员通讯录
 | 
	
		
			
				|  |  | +            musicGroup = musicGroupDao.get(musicGroupId);
 | 
	
		
			
				|  |  | +            educationIds.add(musicGroup.getDirectorUserId());
 | 
	
		
			
				|  |  | +            educationIds.add(musicGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | +            educationIds.add(musicGroup.getTeamTeacherId());
 | 
	
		
			
				|  |  | +            if(musicGroup.getRepairUserId() != null){
 | 
	
		
			
				|  |  | +                repairUserId = musicGroup.getRepairUserId();
 | 
	
		
			
				|  |  | +                repairUserName = teacherDao.queryNameById(repairUserId);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if(studentIds.size() > 0){
 | 
	
		
			
				|  |  | +                studentSubjectName = MapUtil.convertMybatisMap(studentRegistrationDao.getStudentSubjectNameByStuIds(musicGroup.getId(),studentIds));
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }else if(groupType == VIP){
 | 
	
		
			
				|  |  | +            VipGroup vipGroup = vipGroupDao.get(Long.parseLong(musicGroupId));
 | 
	
		
			
				|  |  | +            educationIds.add(vipGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | +        }else if(groupType == PRACTICE){
 | 
	
		
			
				|  |  | +            PracticeGroup practiceGroup = practiceGroupDao.get(Long.parseLong(musicGroupId));
 | 
	
		
			
				|  |  | +            educationIds.add(practiceGroup.getEducationalTeacherId());
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        studentIds.removeAll(Collections.singleton(null));
 | 
	
		
			
				|  |  | +        teacherIds.removeAll(Collections.singleton(null));
 | 
	
		
			
				|  |  | +        educationIds.removeAll(Collections.singleton(null));
 | 
	
		
			
				|  |  | +        Map<Integer, String> usernameMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        if(studentIds.size() > 0){
 | 
	
		
			
				|  |  | +            usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(studentIds)));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Map<Integer, String> teacherRealNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        if(teacherIds.size() > 0){
 | 
	
		
			
				|  |  | +            teacherRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(teacherIds)));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        Map<Integer, String> educationRealNameMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        if(educationIds.size() > 0){
 | 
	
		
			
				|  |  | +            educationRealNameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(educationIds)));
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //老师关联教务、学员
 | 
	
		
			
				|  |  | +        for (Integer teacherId : teacherIds) {
 | 
	
		
			
				|  |  | +            //老师关联学员
 | 
	
		
			
				|  |  | +            this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),teacherId,imUserFriends);
 | 
	
		
			
				|  |  | +            //老师关联教务
 | 
	
		
			
				|  |  | +            this.addImUserFriend(educationIds,null,educationRealNameMap,null,teacherId,imUserFriends);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //教务关联的老师、学员
 | 
	
		
			
				|  |  | +        for (Integer educationId : educationIds) {
 | 
	
		
			
				|  |  | +            //教务关联学员
 | 
	
		
			
				|  |  | +            this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),educationId,imUserFriends);
 | 
	
		
			
				|  |  | +            //教务关联老师
 | 
	
		
			
				|  |  | +            this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),educationId,imUserFriends);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //学员关联的老师、教务、维修技师
 | 
	
		
			
				|  |  | +        for (Integer studentId : studentIds) {
 | 
	
		
			
				|  |  | +            //学员关联的老师
 | 
	
		
			
				|  |  | +            this.addImUserFriend(teacherIds,teacherSubjectNameMap,teacherRealNameMap,musicGroup.getName(),studentId,imUserFriends);
 | 
	
		
			
				|  |  | +            //学员关联的教务
 | 
	
		
			
				|  |  | +            this.addImUserFriend(educationIds,null,educationRealNameMap,null,studentId,imUserFriends);
 | 
	
		
			
				|  |  | +            //学员关联维修技师
 | 
	
		
			
				|  |  | +            if(repairUserId != null){
 | 
	
		
			
				|  |  | +                if(repairUserId == studentId){
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                ImUserFriend imUserFriend = new ImUserFriend();
 | 
	
		
			
				|  |  | +                imUserFriend.setUserId(studentId);
 | 
	
		
			
				|  |  | +                imUserFriend.setFriendId(repairUserId);
 | 
	
		
			
				|  |  | +                imUserFriend.setFriendNickname(repairUserName);
 | 
	
		
			
				|  |  | +                imUserFriend.setMemo(musicGroup.getName());
 | 
	
		
			
				|  |  | +                imUserFriend.setTags("维修技师");
 | 
	
		
			
				|  |  | +                imUserFriends.add(imUserFriend);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //维修技师关联学员
 | 
	
		
			
				|  |  | +        if(repairUserId != null){
 | 
	
		
			
				|  |  | +            this.addImUserFriend(studentIds,studentSubjectName,usernameMap,musicGroup.getName(),repairUserId,imUserFriends);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        return imUserFriends;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private List<ImUserFriend> schoolStaffFriend(Integer coopId) {
 | 
	
		
			
				|  |  | +        List<ImUserFriend> imUserFriends = new ArrayList<>();
 | 
	
		
			
				|  |  | +        Map<Integer, String> usernameMap;
 | 
	
		
			
				|  |  | +        // 获取乐团主管
 | 
	
		
			
				|  |  | +        List<SchoolStaff> schoolStaffs = schoolStaffMapper.getByCoopIdAndType(coopId,null);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(schoolStaffs)) {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            Set<Integer> userIds = schoolStaffs.stream().map(o -> o.getUserId().intValue())
 | 
	
		
			
				|  |  | +                    .collect(Collectors.toSet());
 | 
	
		
			
				|  |  | +            usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 设置好友关系
 | 
	
		
			
				|  |  | +            for (Integer userId : userIds) {
 | 
	
		
			
				|  |  | +                this.addImUserFriend(userIds, null, usernameMap, null, userId, imUserFriends);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return imUserFriends;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  | +     * 刷新学校端好友列表
 | 
	
		
			
				|  |  | +     *
 | 
	
		
			
				|  |  | +     * @param coopId 合作商id
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void refreshSchoolStaffFriend(Integer coopId) {
 | 
	
		
			
				|  |  | +        List<ImUserFriend> imUserFriends = schoolStaffFriend(coopId);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if(imUserFriends.size() > 0){
 | 
	
		
			
				|  |  | +            batchInsert(imUserFriends);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void userFriends(List<ImUserFriend> imUserFriends, String musicGroupName, Long userId, Set<Integer> userIds) {
 | 
	
		
			
				|  |  | +        Map<Integer, String> usernameMap;
 | 
	
		
			
				|  |  | +        if (CollectionUtils.isNotEmpty(userIds)) {
 | 
	
		
			
				|  |  | +            usernameMap = MapUtil.convertMybatisMap(teacherDao.queryUserNameByIdList(new ArrayList<>(userIds)));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            // 设置好友关系
 | 
	
		
			
				|  |  | +            this.addImUserFriend(userIds,null,usernameMap, musicGroupName, userId.intValue(), imUserFriends);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            for (Integer user : userIds) {
 | 
	
		
			
				|  |  | +                // 设置好友关系
 | 
	
		
			
				|  |  | +                this.addImUserFriend(new HashSet<>(Lists.newArrayList(
 | 
	
		
			
				|  |  | +                        userId.intValue())),null,usernameMap, musicGroupName,user, imUserFriends);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    public void addImUserFriend(Set<Integer> friendUserIds,Map<Integer,String> tagsMap,
 | 
	
		
			
				|  |  | +                                Map<Integer,String> nameMap,String memo,Integer userId,List<ImUserFriend> imUserFriends){
 | 
	
		
			
				|  |  | +        if(friendUserIds != null && friendUserIds.size() > 0){
 | 
	
		
			
				|  |  | +            for (Integer friendId : friendUserIds) {
 | 
	
		
			
				|  |  | +                if(userId == friendId){
 | 
	
		
			
				|  |  | +                    continue;
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                ImUserFriend imUserFriend = new ImUserFriend();
 | 
	
		
			
				|  |  | +                imUserFriend.setUserId(userId);
 | 
	
		
			
				|  |  | +                imUserFriend.setFriendId(friendId);
 | 
	
		
			
				|  |  | +                imUserFriend.setFriendNickname(nameMap.get(friendId));
 | 
	
		
			
				|  |  | +                imUserFriend.setMemo(memo);
 | 
	
		
			
				|  |  | +                if(tagsMap != null){
 | 
	
		
			
				|  |  | +                    imUserFriend.setTags(tagsMap.get(friendId));
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +                imUserFriends.add(imUserFriend);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |