|
@@ -596,6 +596,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
teacherSubmitReq.setIsSettlement(true);
|
|
|
}
|
|
|
Teacher teacher = baseMapper.selectById(teacherSubmitReq.getUserId());
|
|
|
+ Boolean customerService = teacher.getCustomerService();
|
|
|
if (null == teacher) {
|
|
|
teacher = new Teacher();
|
|
|
teacher.setUserId(teacherSubmitReq.getUserId());
|
|
@@ -634,7 +635,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
} else {
|
|
|
// 客服状态变更,移交好友信息
|
|
|
List<TeacherWrapper.CustomerServiceSendMsg2User> customerServiceSendMsg2User = new ArrayList<>();
|
|
|
- if (Boolean.TRUE.equals(teacher.getCustomerService()) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
|
|
|
+ if (Boolean.TRUE.equals(customerService) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
|
|
|
customerServiceSendMsg2User.addAll(transferFriend(teacher.getUserId(), true));
|
|
|
}
|
|
|
// 如果机构解绑,更新机构ID为-1
|
|
@@ -672,7 +673,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
|
|
|
|
|
|
// 交接后的客服发送消息
|
|
|
- if (Boolean.TRUE.equals(teacher.getCustomerService()) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
|
|
|
+ if (Boolean.TRUE.equals(customerService) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
|
|
|
String customerMessage = sysConfigService.findConfigValue(SysConfigConstant.CUSTOMER_SERVICE_ADD_MSG);
|
|
|
String customerTitle = sysConfigService.findConfigValue(SysConfigConstant.CUSTOMER_SERVICE_ADD_MSG_TITLE);
|
|
|
for (TeacherWrapper.CustomerServiceSendMsg2User serviceSendMsg2User : customerServiceSendMsg2User) {
|
|
@@ -692,15 +693,21 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
private List<TeacherWrapper.CustomerServiceSendMsg2User> transferFriend(Long userId, boolean saveGroupFriend) {
|
|
|
List<TeacherWrapper.CustomerServiceSendMsg2User> result = new ArrayList<>();
|
|
|
// 所有的好友
|
|
|
- List<ImUserFriend> friendList = imUserFriendService.lambdaQuery()
|
|
|
+ List<ImUserFriend> userFriendList = imUserFriendService.lambdaQuery()
|
|
|
.eq(ImUserFriend::getUserId, userId)
|
|
|
.eq(ImUserFriend::getClientType, ClientEnum.TEACHER)
|
|
|
.list();
|
|
|
- if (friendList.isEmpty()) { // 没有好友
|
|
|
+
|
|
|
+ // 其他客服
|
|
|
+ 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 = friendList;
|
|
|
+ List<ImUserFriend> removeFriendList = userFriendList;
|
|
|
if (saveGroupFriend) {
|
|
|
// 群里的好友保留
|
|
|
List<String> groupIdList = imGroupMemberService.lambdaQuery()
|
|
@@ -732,12 +739,41 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
.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 = friendList.stream().filter(n -> {
|
|
|
+ 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;
|
|
@@ -762,16 +798,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
.remove();
|
|
|
});
|
|
|
|
|
|
- List<TeacherWrapper.TeacherFriend> customerServiceFriendNums = this.getBaseMapper().getCustomerServiceFriendNums();
|
|
|
- customerServiceFriendNums.removeIf(n -> n.getTeacherId().equals(userId));
|
|
|
- if (customerServiceFriendNums.isEmpty()) {
|
|
|
- return result;
|
|
|
- }
|
|
|
- List<Long> customerIdList = customerServiceFriendNums.stream().map(TeacherWrapper.TeacherFriend::getTeacherId).collect(Collectors.toList());
|
|
|
- List<ImUserFriend> userFriendList = friendList.stream()
|
|
|
- .filter(n -> !ClientEnum.TEACHER.equals(n.getFriendType()) || !customerIdList.contains(n.getFriendId()))
|
|
|
- .collect(Collectors.toList());
|
|
|
- if (userFriendList.isEmpty()) { // 除去客服好友,没有其他好友
|
|
|
+ if (customerIds.isEmpty()) {
|
|
|
return result;
|
|
|
}
|
|
|
// 去除好友里面存在其他客服关系的好友,只有没有客服好友的好友,才需要与客服建立好友关系
|