|  | @@ -330,6 +330,11 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      @Transactional(rollbackFor = Exception.class)
 | 
	
		
			
				|  |  |      public HttpResponseResult<Boolean> submit(TeacherSubmitReq teacherSubmitReq) throws BizException {
 | 
	
		
			
				|  |  | +        Long tenantId = teacherSubmitReq.getTenantId();
 | 
	
		
			
				|  |  | +        Boolean customerService = teacherSubmitReq.getCustomerService();
 | 
	
		
			
				|  |  | +        if (tenantId != null && tenantId > 0 && Boolean.TRUE.equals(customerService)) {
 | 
	
		
			
				|  |  | +            throw new BizException("客服不能有机构老师身份");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |          // todo 暂时不上客服相关
 | 
	
		
			
				|  |  |  //        teacherSubmitReq.setCustomerService(null);
 | 
	
		
			
				|  |  |          if (null == teacherSubmitReq.getUserId()) {
 | 
	
	
		
			
				|  | @@ -703,181 +708,6 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |                  .set(Student::getCustomerId, null));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    // 客服好友移交给其他客服
 | 
	
		
			
				|  |  | -    private List<TeacherWrapper.CustomerServiceSendMsg2User> transferFriend(Long userId, boolean saveGroupFriend) {
 | 
	
		
			
				|  |  | -        List<TeacherWrapper.CustomerServiceSendMsg2User> result = new ArrayList<>();
 | 
	
		
			
				|  |  | -        // 所有的好友
 | 
	
		
			
				|  |  | -        List<ImUserFriend> userFriendList = imUserFriendService.lambdaQuery()
 | 
	
		
			
				|  |  | -                .eq(ImUserFriend::getUserId, userId)
 | 
	
		
			
				|  |  | -                .eq(ImUserFriend::getClientType, ClientEnum.TEACHER)
 | 
	
		
			
				|  |  | -                .list();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // 其他客服
 | 
	
		
			
				|  |  | -        List<TeacherWrapper.TeacherFriend> customerServiceFriendNums = this.getBaseMapper().getCustomerServiceFriendNums();
 | 
	
		
			
				|  |  | -        customerServiceFriendNums.removeIf(n -> n.getTeacherId().equals(userId));
 | 
	
		
			
				|  |  | -        List<Long> customerIds = customerServiceFriendNums.stream().map(TeacherWrapper.TeacherFriend::getTeacherId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -        userFriendList.removeIf(n -> customerIds.contains(n.getFriendId()) && ClientEnum.TEACHER.equals(n.getFriendType()));
 | 
	
		
			
				|  |  | -        if (userFriendList.isEmpty()) { // 没有好友
 | 
	
		
			
				|  |  | -            return result;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        List<ImUserFriend> removeFriendList = userFriendList;
 | 
	
		
			
				|  |  | -        if (saveGroupFriend) {
 | 
	
		
			
				|  |  | -            // 群里的好友保留
 | 
	
		
			
				|  |  | -            List<String> groupIdList = imGroupMemberService.lambdaQuery()
 | 
	
		
			
				|  |  | -                    .eq(ImGroupMember::getUserId, userId)
 | 
	
		
			
				|  |  | -                    .eq(ImGroupMember::getIsAdmin, true)
 | 
	
		
			
				|  |  | -                    .eq(ImGroupMember::getGroupRoleType, EImGroupMemberRoleType.Owner)
 | 
	
		
			
				|  |  | -                    .list()
 | 
	
		
			
				|  |  | -                    .stream()
 | 
	
		
			
				|  |  | -                    .map(ImGroupMember::getGroupId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            List<Long> savedTeacherIdList = new ArrayList<>();
 | 
	
		
			
				|  |  | -            List<Long> savedStudentIdList = new ArrayList<>();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            if (!groupIdList.isEmpty()) {
 | 
	
		
			
				|  |  | -                List<ImGroupMember> savedMemberList = imGroupMemberService.lambdaQuery()
 | 
	
		
			
				|  |  | -                        .in(ImGroupMember::getGroupId, groupIdList)
 | 
	
		
			
				|  |  | -                        .eq(ImGroupMember::getIsAdmin, false)
 | 
	
		
			
				|  |  | -                        .ne(ImGroupMember::getGroupRoleType, EImGroupMemberRoleType.Owner)
 | 
	
		
			
				|  |  | -                        .list();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                savedTeacherIdList.addAll(savedMemberList.stream()
 | 
	
		
			
				|  |  | -                        .filter(n -> ImGroupMemberRoleType.TEACHER.equals(n.getRoleType()))
 | 
	
		
			
				|  |  | -                        .map(ImGroupMember::getUserId)
 | 
	
		
			
				|  |  | -                        .collect(Collectors.toList()));
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -                savedStudentIdList.addAll(savedMemberList.stream()
 | 
	
		
			
				|  |  | -                        .filter(n -> ImGroupMemberRoleType.STUDENT.equals(n.getRoleType()))
 | 
	
		
			
				|  |  | -                        .map(ImGroupMember::getUserId)
 | 
	
		
			
				|  |  | -                        .collect(Collectors.toList()));
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 机构好友保留
 | 
	
		
			
				|  |  | -            Teacher teacher = this.getById(userId);
 | 
	
		
			
				|  |  | -            List<Long> tenantTeacherIds = new ArrayList<>();
 | 
	
		
			
				|  |  | -            List<Long> tenantStudentIds = new ArrayList<>();
 | 
	
		
			
				|  |  | -            if (teacher.getTenantId() > 0) {
 | 
	
		
			
				|  |  | -                List<Long> teacherIdList = userFriendList.stream().filter(n -> ClientEnum.TEACHER.equals(n.getFriendType())).map(ImUserFriend::getFriendId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -                List<Long> studentIdList = userFriendList.stream().filter(n -> ClientEnum.STUDENT.equals(n.getFriendType())).map(ImUserFriend::getFriendId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -                if (!teacherIdList.isEmpty()) {
 | 
	
		
			
				|  |  | -                    List<Long> tenantTeacherIdsTemp = this.lambdaQuery().in(Teacher::getUserId, teacherIdList)
 | 
	
		
			
				|  |  | -                            .eq(Teacher::getTenantId, teacher.getTenantId())
 | 
	
		
			
				|  |  | -                            .list()
 | 
	
		
			
				|  |  | -                            .stream().filter(n -> n.getTenantId() > 0).map(Teacher::getUserId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -                    tenantTeacherIds.addAll(tenantTeacherIdsTemp);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                if (!studentIdList.isEmpty()) {
 | 
	
		
			
				|  |  | -                    List<Long> tenantStudentIdsTemp = studentService.lambdaQuery().in(Student::getUserId, studentIdList)
 | 
	
		
			
				|  |  | -                            .eq(Student::getTenantId, teacher.getTenantId())
 | 
	
		
			
				|  |  | -                            .list()
 | 
	
		
			
				|  |  | -                            .stream().filter(n -> n.getTenantId() > 0).map(Student::getUserId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -                    tenantStudentIds.addAll(tenantStudentIdsTemp);
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            // 删除的好友
 | 
	
		
			
				|  |  | -            removeFriendList = userFriendList.stream().filter(n -> {
 | 
	
		
			
				|  |  | -                if (ClientEnum.STUDENT.equals(n.getFriendType())) {
 | 
	
		
			
				|  |  | -                    if (tenantStudentIds.contains(n.getFriendId())) {
 | 
	
		
			
				|  |  | -                        return false;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    return !savedStudentIdList.contains(n.getFriendId());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                if (ClientEnum.TEACHER.equals(n.getFriendType())) {
 | 
	
		
			
				|  |  | -                    if (tenantTeacherIds.contains(n.getFriendId())) {
 | 
	
		
			
				|  |  | -                        return false;
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    return !savedTeacherIdList.contains(n.getFriendId());
 | 
	
		
			
				|  |  | -                }
 | 
	
		
			
				|  |  | -                return false;
 | 
	
		
			
				|  |  | -            }).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // 删除好友
 | 
	
		
			
				|  |  | -        removeFriendList.stream().collect(Collectors.groupingBy(ImUserFriend::getFriendType)).forEach((client, friends) -> {
 | 
	
		
			
				|  |  | -            List<Long> friendIds = friends.stream().map(ImUserFriend::getFriendId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -            imUserFriendService.lambdaUpdate()
 | 
	
		
			
				|  |  | -                    .eq(ImUserFriend::getUserId, userId)
 | 
	
		
			
				|  |  | -                    .eq(ImUserFriend::getClientType, ClientEnum.TEACHER)
 | 
	
		
			
				|  |  | -                    .in(ImUserFriend::getFriendId, friendIds)
 | 
	
		
			
				|  |  | -                    .eq(ImUserFriend::getFriendType, client)
 | 
	
		
			
				|  |  | -                    .remove();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -            imUserFriendService.lambdaUpdate()
 | 
	
		
			
				|  |  | -                    .eq(ImUserFriend::getFriendId, userId)
 | 
	
		
			
				|  |  | -                    .eq(ImUserFriend::getFriendType, ClientEnum.TEACHER)
 | 
	
		
			
				|  |  | -                    .in(ImUserFriend::getUserId, friendIds)
 | 
	
		
			
				|  |  | -                    .eq(ImUserFriend::getClientType, client)
 | 
	
		
			
				|  |  | -                    .remove();
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if (customerIds.isEmpty()) {
 | 
	
		
			
				|  |  | -            return result;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -        // 去除好友里面存在其他客服关系的好友,只有没有客服好友的好友,才需要与客服建立好友关系
 | 
	
		
			
				|  |  | -        List<ImUserFriend> teacherFriends = userFriendList.stream().filter(n -> ClientEnum.TEACHER.equals(n.getFriendType())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -        if (!teacherFriends.isEmpty()) {
 | 
	
		
			
				|  |  | -            String teacherFriendIds = teacherFriends.stream().map(n -> n.getFriendId().toString()).distinct().collect(Collectors.joining(","));
 | 
	
		
			
				|  |  | -            List<Long> existFriendIds = imUserFriendService.getDao().queryExistCustomerServiceFriend(teacherFriendIds, ClientEnum.TEACHER.getCode())
 | 
	
		
			
				|  |  | -                    .stream()
 | 
	
		
			
				|  |  | -                    .map(ImUserFriend::getUserId)
 | 
	
		
			
				|  |  | -                    .collect(Collectors.toList());
 | 
	
		
			
				|  |  | -            userFriendList.removeIf(n -> ClientEnum.TEACHER.equals(n.getFriendType()) && existFriendIds.contains(n.getFriendId()));
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        List<ImUserFriend> studentFriends = userFriendList.stream().filter(n -> ClientEnum.STUDENT.equals(n.getFriendType())).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -        if (!studentFriends.isEmpty()) {
 | 
	
		
			
				|  |  | -            String studentFriendIds = studentFriends.stream().map(n -> n.getFriendId().toString()).distinct().collect(Collectors.joining(","));
 | 
	
		
			
				|  |  | -            List<Long> existFriendIds = imUserFriendService.getDao().queryExistCustomerServiceFriend(studentFriendIds, ClientEnum.STUDENT.getCode())
 | 
	
		
			
				|  |  | -                    .stream()
 | 
	
		
			
				|  |  | -                    .map(ImUserFriend::getUserId)
 | 
	
		
			
				|  |  | -                    .collect(Collectors.toList());
 | 
	
		
			
				|  |  | -            userFriendList.removeIf(n -> ClientEnum.STUDENT.equals(n.getFriendType()) && existFriendIds.contains(n.getFriendId()));
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        if (userFriendList.isEmpty()) {
 | 
	
		
			
				|  |  | -            return result;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        // 好友交接
 | 
	
		
			
				|  |  | -        Map<Long, Set<Long>> teacherFriendMap = new LinkedHashMap<>();
 | 
	
		
			
				|  |  | -        Map<Long, Set<Long>> studentFriendMap = new LinkedHashMap<>();
 | 
	
		
			
				|  |  | -        for (ImUserFriend imUserFriend : userFriendList) {
 | 
	
		
			
				|  |  | -            TeacherWrapper.TeacherFriend teacherFriend = customerServiceFriendNums.get(0);
 | 
	
		
			
				|  |  | -            if (ClientEnum.TEACHER.equals(imUserFriend.getFriendType())) {
 | 
	
		
			
				|  |  | -                Set<Long> set = teacherFriendMap.getOrDefault(teacherFriend.getTeacherId(), new HashSet<>());
 | 
	
		
			
				|  |  | -                set.add(imUserFriend.getFriendId());
 | 
	
		
			
				|  |  | -                teacherFriendMap.put(teacherFriend.getTeacherId(), set);
 | 
	
		
			
				|  |  | -            } else if (ClientEnum.STUDENT.equals(imUserFriend.getFriendType())) {
 | 
	
		
			
				|  |  | -                Set<Long> set = studentFriendMap.getOrDefault(teacherFriend.getTeacherId(), new HashSet<>());
 | 
	
		
			
				|  |  | -                set.add(imUserFriend.getFriendId());
 | 
	
		
			
				|  |  | -                studentFriendMap.put(teacherFriend.getTeacherId(), set);
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | -            teacherFriend.setFriendNums(teacherFriend.getFriendNums() + 1);
 | 
	
		
			
				|  |  | -            Collections.sort(customerServiceFriendNums);
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -        teacherFriendMap.forEach((teacherId, teacherIds) -> {
 | 
	
		
			
				|  |  | -            imUserFriendService.saveUserTeacherFriend(teacherId, teacherIds,EImUserFriendSourceForm.CUSTOMER);
 | 
	
		
			
				|  |  | -            // 发送消息
 | 
	
		
			
				|  |  | -            TeacherWrapper.CustomerServiceSendMsg2User customerServiceSendMsg2User = new TeacherWrapper.CustomerServiceSendMsg2User();
 | 
	
		
			
				|  |  | -            customerServiceSendMsg2User.setCustomerId(teacherId);
 | 
	
		
			
				|  |  | -            customerServiceSendMsg2User.getTeacherIds().addAll(teacherIds);
 | 
	
		
			
				|  |  | -            result.add(customerServiceSendMsg2User);
 | 
	
		
			
				|  |  | -//            imUserFriendService.sendCustomerServiceAddFriendMessage(teacherId, customerTitle, customerMessage, new ArrayList<>(teacherIds), ClientEnum.TEACHER);
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        studentFriendMap.forEach((teacherId, studentIds) -> {
 | 
	
		
			
				|  |  | -            imUserFriendService.saveUserFriend(teacherId, studentIds,EImUserFriendSourceForm.CUSTOMER);
 | 
	
		
			
				|  |  | -            TeacherWrapper.CustomerServiceSendMsg2User customerServiceSendMsg2User = new TeacherWrapper.CustomerServiceSendMsg2User();
 | 
	
		
			
				|  |  | -            customerServiceSendMsg2User.setCustomerId(teacherId);
 | 
	
		
			
				|  |  | -            customerServiceSendMsg2User.getTeacherIds().addAll(studentIds);
 | 
	
		
			
				|  |  | -            result.add(customerServiceSendMsg2User);
 | 
	
		
			
				|  |  | -//            imUserFriendService.sendCustomerServiceAddFriendMessage(teacherId, customerTitle, customerMessage, new ArrayList<>(studentIds), ClientEnum.STUDENT);
 | 
	
		
			
				|  |  | -        });
 | 
	
		
			
				|  |  | -        return result;
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |      private List<TeacherWrapper.CustomerServiceSendMsg2User> transferFriendV2(Long userId, boolean saveGroupFriend){
 | 
	
		
			
				|  |  |          List<TeacherWrapper.CustomerServiceSendMsg2User> result = new ArrayList<>();
 | 
	
		
			
				|  |  |          // 所有的好友
 | 
	
	
		
			
				|  | @@ -886,15 +716,6 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |                  .eq(ImUserFriend::getClientType, ClientEnum.TEACHER)
 | 
	
		
			
				|  |  |                  .list();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -        // 其他客服
 | 
	
		
			
				|  |  | -        List<TeacherWrapper.TeacherFriend> customerServiceFriendNums = this.getBaseMapper().getCustomerServiceFriendNums();
 | 
	
		
			
				|  |  | -        customerServiceFriendNums.removeIf(n -> n.getTeacherId().equals(userId));
 | 
	
		
			
				|  |  | -        List<Long> customerIds = customerServiceFriendNums.stream().map(TeacherWrapper.TeacherFriend::getTeacherId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | -        userFriendList.removeIf(n -> customerIds.contains(n.getFriendId()) && ClientEnum.TEACHER.equals(n.getFriendType()));
 | 
	
		
			
				|  |  | -        if (userFriendList.isEmpty()) { // 没有好友
 | 
	
		
			
				|  |  | -            return result;
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  |          // 好友保留
 | 
	
		
			
				|  |  |          userFriendList.stream().filter(n -> Boolean.FALSE.equals(saveGroupFriend) || EImUserFriendSourceForm.CUSTOMER.equals(n.getSourceForm()))
 | 
	
		
			
				|  |  |                  .collect(Collectors.groupingBy(ImUserFriend::getFriendType)).forEach((client, friends) -> {
 | 
	
	
		
			
				|  | @@ -914,6 +735,15 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |                              .remove();
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        // 其他客服
 | 
	
		
			
				|  |  | +        List<TeacherWrapper.TeacherFriend> customerServiceFriendNums = this.getBaseMapper().getCustomerServiceFriendNums();
 | 
	
		
			
				|  |  | +        customerServiceFriendNums.removeIf(n -> n.getTeacherId().equals(userId));
 | 
	
		
			
				|  |  | +        List<Long> customerIds = customerServiceFriendNums.stream().map(TeacherWrapper.TeacherFriend::getTeacherId).collect(Collectors.toList());
 | 
	
		
			
				|  |  | +        userFriendList.removeIf(n -> customerIds.contains(n.getFriendId()) && ClientEnum.TEACHER.equals(n.getFriendType()));
 | 
	
		
			
				|  |  | +        if (userFriendList.isEmpty()) { // 没有好友
 | 
	
		
			
				|  |  | +            return result;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          if (customerIds.isEmpty()) {
 | 
	
		
			
				|  |  |              return result;
 | 
	
		
			
				|  |  |          }
 | 
	
	
		
			
				|  | @@ -922,7 +752,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |          // 存在专属客服的好友不需要分配
 | 
	
		
			
				|  |  |          List<ImUserFriend> teacherFriends = userFriendList.stream().filter(n -> ClientEnum.TEACHER.equals(n.getFriendType())).collect(Collectors.toList());
 | 
	
		
			
				|  |  |          if (!teacherFriends.isEmpty()) {
 | 
	
		
			
				|  |  | -            String teacherFriendIds = teacherFriends.stream().map(n -> n.getFriendId().toString()).distinct().collect(Collectors.joining(","));
 | 
	
		
			
				|  |  | +            List<Long> teacherFriendIds = teacherFriends.stream().map(ImUserFriend::getFriendId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  |              List<Long> existFriendIds = this.lambdaQuery()
 | 
	
		
			
				|  |  |                      .in(Teacher::getUserId, teacherFriendIds)
 | 
	
		
			
				|  |  |                      .list()
 | 
	
	
		
			
				|  | @@ -935,7 +765,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          List<ImUserFriend> studentFriends = userFriendList.stream().filter(n -> ClientEnum.STUDENT.equals(n.getFriendType())).collect(Collectors.toList());
 | 
	
		
			
				|  |  |          if (!studentFriends.isEmpty()) {
 | 
	
		
			
				|  |  | -            String studentFriendIds = studentFriends.stream().map(n -> n.getFriendId().toString()).distinct().collect(Collectors.joining(","));
 | 
	
		
			
				|  |  | +            List<Long> studentFriendIds = studentFriends.stream().map(ImUserFriend::getFriendId).distinct().collect(Collectors.toList());
 | 
	
		
			
				|  |  |              List<Long> existFriendIds = studentService.lambdaQuery()
 | 
	
		
			
				|  |  |                      .in(Student::getUserId, studentFriendIds)
 | 
	
		
			
				|  |  |                      .list()
 | 
	
	
		
			
				|  | @@ -971,7 +801,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |          teacherFriendMap.forEach((teacherId, teacherIds) -> {
 | 
	
		
			
				|  |  |              List<Long> sameTenant = getSameTenant(teacherId, teacherIds, ClientEnum.TEACHER);
 | 
	
		
			
				|  |  |              Set<Long> same = teacherIds.stream().filter(sameTenant::contains).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | -            imUserFriendService.saveUserTeacherFriend(teacherId, same, EImUserFriendSourceForm.TEACHER);
 | 
	
		
			
				|  |  | +            if (!same.isEmpty()) {
 | 
	
		
			
				|  |  | +                imUserFriendService.saveUserTeacherFriend(teacherId, same, EImUserFriendSourceForm.TEACHER);
 | 
	
		
			
				|  |  | +                imUserFriendService.refreshCustomer(teacherId, ClientEnum.TEACHER, new ArrayList<>(same), ClientEnum.TEACHER);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              Set<Long> notSame = teacherIds.stream().filter(n->!sameTenant.contains(n)).collect(Collectors.toSet());
 | 
	
		
			
				|  |  |              imUserFriendService.saveUserTeacherFriend(teacherId, notSame, EImUserFriendSourceForm.CUSTOMER);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -986,7 +819,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |          studentFriendMap.forEach((teacherId, studentIds) -> {
 | 
	
		
			
				|  |  |              List<Long> sameTenant = getSameTenant(teacherId, studentIds, ClientEnum.STUDENT);
 | 
	
		
			
				|  |  |              Set<Long> same = studentIds.stream().filter(sameTenant::contains).collect(Collectors.toSet());
 | 
	
		
			
				|  |  | -            imUserFriendService.saveUserFriend(teacherId, same, EImUserFriendSourceForm.TEACHER);
 | 
	
		
			
				|  |  | +            if (!same.isEmpty()) {
 | 
	
		
			
				|  |  | +                imUserFriendService.saveUserFriend(teacherId, same, EImUserFriendSourceForm.TEACHER);
 | 
	
		
			
				|  |  | +                imUserFriendService.refreshCustomer(teacherId, ClientEnum.TEACHER, new ArrayList<>(same), ClientEnum.STUDENT);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |              Set<Long> notSame = studentIds.stream().filter(n->!sameTenant.contains(n)).collect(Collectors.toSet());
 | 
	
		
			
				|  |  |              imUserFriendService.saveUserFriend(teacherId, notSame, EImUserFriendSourceForm.CUSTOMER);
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -1489,10 +1325,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |                  });
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              // 删除好友关系
 | 
	
		
			
				|  |  | -            Boolean customerService = teacher.getCustomerService();
 | 
	
		
			
				|  |  | -            if (Boolean.FALSE.equals(customerService)) {
 | 
	
		
			
				|  |  | -                imUserFriendService.delStudentFriendByTenantId(teacher.getTenantId(), teacher.getUserId(), ClientEnum.TEACHER.getCode());
 | 
	
		
			
				|  |  | -            }
 | 
	
		
			
				|  |  | +            imUserFriendService.delStudentFriendByTenantId(teacher.getTenantId(), teacher.getUserId(), ClientEnum.TEACHER.getCode());
 | 
	
		
			
				|  |  |              addBindUnBindRecord(teacher.getUserId(), teacher.getTenantId(), false);
 | 
	
		
			
				|  |  |              SysUser sysUser = sysUserMapper.getByUserId(teacher.getUserId());
 | 
	
		
			
				|  |  |              sendBindUnBindSMS(teacher.getUserId(), sysUser.getPhone(), MessageTypeEnum.TEACHER_UNBIND_TENANT, teacher.getTenantId());
 | 
	
	
		
			
				|  | @@ -1516,7 +1349,8 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |                      .collect(Collectors.toSet());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |              if (!collect.isEmpty()) {
 | 
	
		
			
				|  |  | -                imUserFriendService.saveUserFriend(teacher.getUserId(), collect,EImUserFriendSourceForm.TEACHER);
 | 
	
		
			
				|  |  | +                imUserFriendService.saveUserFriend(teacher.getUserId(), collect, EImUserFriendSourceForm.TEACHER);
 | 
	
		
			
				|  |  | +                imUserFriendService.refreshCustomer(teacher.getUserId(), ClientEnum.TEACHER, new ArrayList<>(collect), ClientEnum.STUDENT);
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |              addBindUnBindRecord(teacher.getUserId(),updateTenant.getTenantId(),true);
 | 
	
		
			
				|  |  |              SysUser sysUser = sysUserMapper.getByUserId(teacher.getUserId());
 | 
	
	
		
			
				|  | @@ -1664,9 +1498,13 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 | 
	
		
			
				|  |  |          if (teacher == null) {
 | 
	
		
			
				|  |  |              throw new BizException("无效的老师账号");
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  | +        Long tenantId = teacher.getTenantId();
 | 
	
		
			
				|  |  | +        Boolean customerService = teacher.getCustomerService();
 | 
	
		
			
				|  |  | +        if (tenantId != null && tenantId > 0 && Boolean.TRUE.equals(customerService)) {
 | 
	
		
			
				|  |  | +            throw new BizException("客服不能有机构老师身份");
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          // 冻结客服,移交好友给其他客服
 | 
	
		
			
				|  |  | -        Boolean customerService = teacher.getCustomerService();
 | 
	
		
			
				|  |  |          if (UserLockFlag.NORMAL.equals(teacher.getLockFlag()) && Boolean.TRUE.equals(customerService)) {
 | 
	
		
			
				|  |  |              List<TeacherWrapper.CustomerServiceSendMsg2User> customerServiceSendMsg2User = transferFriendV2(teacherId, false);
 | 
	
		
			
				|  |  |              clearUserCustomerRelation(teacherId);
 |