Ver Fonte

多次往返交接同机构判断

yuanliang há 11 meses atrás
pai
commit
de0f6dd860

+ 31 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java

@@ -969,7 +969,12 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         }
 
         teacherFriendMap.forEach((teacherId, teacherIds) -> {
-            imUserFriendService.saveUserTeacherFriend(teacherId, teacherIds,EImUserFriendSourceForm.CUSTOMER);
+            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);
+            Set<Long> notSame = teacherIds.stream().filter(n->!sameTenant.contains(n)).collect(Collectors.toSet());
+            imUserFriendService.saveUserTeacherFriend(teacherId, notSame, EImUserFriendSourceForm.CUSTOMER);
+
             this.lambdaUpdate().set(Teacher::getCustomerId,teacherId).in(Teacher::getUserId,teacherIds).update();
             // 发送消息
             TeacherWrapper.CustomerServiceSendMsg2User customerServiceSendMsg2User = new TeacherWrapper.CustomerServiceSendMsg2User();
@@ -979,7 +984,12 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
 //            imUserFriendService.sendCustomerServiceAddFriendMessage(teacherId, customerTitle, customerMessage, new ArrayList<>(teacherIds), ClientEnum.TEACHER);
         });
         studentFriendMap.forEach((teacherId, studentIds) -> {
-            imUserFriendService.saveUserFriend(teacherId, studentIds, EImUserFriendSourceForm.CUSTOMER);
+            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);
+            Set<Long> notSame = studentIds.stream().filter(n->!sameTenant.contains(n)).collect(Collectors.toSet());
+            imUserFriendService.saveUserFriend(teacherId, notSame, EImUserFriendSourceForm.CUSTOMER);
+
             studentService.lambdaUpdate().set(Student::getCustomerId, teacherId).in(Student::getUserId, studentIds).update();
             TeacherWrapper.CustomerServiceSendMsg2User customerServiceSendMsg2User = new TeacherWrapper.CustomerServiceSendMsg2User();
             customerServiceSendMsg2User.setCustomerId(teacherId);
@@ -989,6 +999,25 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         });
         return result;
     }
+
+    private List<Long> getSameTenant(Long teacherId, Set<Long> userIds, ClientEnum clientEnum) {
+        Teacher teacher = this.getById(teacherId);
+        Long tenantId = teacher.getTenantId();
+        if (tenantId == null || tenantId <= 0) {
+            return new ArrayList<>();
+        }
+        if (ClientEnum.STUDENT.equals(clientEnum)) {
+            return studentService.lambdaQuery().in(Student::getUserId, userIds).list()
+                    .stream().filter(n -> tenantId.equals(n.getTenantId()))
+                    .map(Student::getUserId).collect(Collectors.toList());
+        }
+        if (ClientEnum.TEACHER.equals(clientEnum)) {
+            return this.lambdaQuery().in(Teacher::getUserId, userIds).list()
+                    .stream().filter(n -> tenantId.equals(n.getTenantId()))
+                    .map(Teacher::getUserId).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
     /***
      * 封装用户信息
      * @author liweifan