| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |