|
@@ -621,15 +621,11 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
sendBindUnBindSMS(teacher.getUserId(), teacherSubmitReq.getPhone(), MessageTypeEnum.TEACHER_BIND_TENANT, teacher.getTenantId());
|
|
|
|
|
|
// 与客服建立好友
|
|
|
- String customerService = customerServiceConfig.getCustomerService();
|
|
|
- if (StringUtils.isNotBlank(customerService)) {
|
|
|
- List<String> phones = Arrays.stream(customerService.split(",")).collect(Collectors.toList());
|
|
|
- Random rand = new Random();
|
|
|
- String mobile = phones.get(rand.nextInt(phones.size()));
|
|
|
- SysUser friend = sysUserMapper.findUserByPhone(mobile);
|
|
|
- if (friend != null) {
|
|
|
+ if (!Boolean.TRUE.equals(teacher.getCustomerService())) {
|
|
|
+ Teacher customerServiceTeacher = getCustomerServiceByFriendLeast();
|
|
|
+ if (customerServiceTeacher != null) {
|
|
|
imUserFriendService.registerUserBindCustomerService(teacher.getUserId(),
|
|
|
- Collections.singletonList(friend.getId()), ClientEnum.TEACHER);
|
|
|
+ Collections.singletonList(customerServiceTeacher.getUserId()), ClientEnum.TEACHER);
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
@@ -653,6 +649,11 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
updateTenant(updateTenant, teacherSubmitReq.getUpdateBy());
|
|
|
}
|
|
|
|
|
|
+ // 客服状态变更,移交好友信息
|
|
|
+ if (Boolean.TRUE.equals(teacher.getCustomerService()) && Boolean.FALSE.equals(teacherSubmitReq.getCustomerService())) {
|
|
|
+ transferFriend(teacher.getUserId());
|
|
|
+ }
|
|
|
+
|
|
|
teacher.setUpdateTime(new Date());
|
|
|
teacher = getTeacherDetil(teacher, teacherSubmitReq);
|
|
|
if (null == teacher.getEntryAuthDate() || null == teacher.getMusicianDate()) {
|
|
@@ -670,6 +671,33 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
return teacher;
|
|
|
}
|
|
|
|
|
|
+ // 客服好友移交给其他客服
|
|
|
+ private void transferFriend(Long userId) {
|
|
|
+ List<ImUserFriend> friendList = imUserFriendService.lambdaQuery()
|
|
|
+ .eq(ImUserFriend::getUserId, userId)
|
|
|
+ .eq(ImUserFriend::getClientType, ClientEnum.TEACHER)
|
|
|
+ .list();
|
|
|
+ if (friendList.isEmpty()) { // 没有好友
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Teacher> customerService = getCustomerService();
|
|
|
+ List<Long> teacherIdList = customerService.stream().map(Teacher::getUserId).collect(Collectors.toList());
|
|
|
+ teacherIdList.removeIf(n->n.equals(userId));
|
|
|
+ if (teacherIdList.isEmpty()) { // 没有客服
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ List<Long> friendIdList = friendList.stream().map(ImUserFriend::getFriendId).collect(Collectors.toList());
|
|
|
+ friendIdList.removeIf(teacherIdList::contains);
|
|
|
+ if (friendIdList.isEmpty()) { // 有一个客服好友
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ //todo
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/***
|
|
|
* 封装用户信息
|
|
|
* @author liweifan
|
|
@@ -722,6 +750,7 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
teacher.setSettlementFrom(teacherSubmitReq.getSettlementFrom());
|
|
|
teacher.setTenantId(teacherSubmitReq.getTenantId() == null ? -1L : teacherSubmitReq.getTenantId());
|
|
|
teacher.setAvatar(Optional.ofNullable(teacherSubmitReq.getAvatar()).orElse(teacher.getAvatar()));
|
|
|
+ teacher.setCustomerService(teacherSubmitReq.getCustomerService());
|
|
|
if (StringUtil.isEmpty(teacherSubmitReq.getTeacherType())) {
|
|
|
return teacher;
|
|
|
}
|
|
@@ -1140,7 +1169,10 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
});
|
|
|
}
|
|
|
// 删除好友关系
|
|
|
- imUserFriendService.delStudentFriendByTenantId(teacher.getTenantId(), teacher.getUserId(), ClientEnum.TEACHER.getCode());
|
|
|
+ Boolean customerService = teacher.getCustomerService();
|
|
|
+ if (Boolean.FALSE.equals(customerService)) {
|
|
|
+ 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());
|
|
@@ -1288,4 +1320,20 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
|
|
|
teacherVo.setVipType(vipType);
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取学生好友最少的一个客服
|
|
|
+ * @return 客服
|
|
|
+ */
|
|
|
+ private Teacher getCustomerServiceByFriendLeast() {
|
|
|
+ return this.getBaseMapper().getCustomerServiceByFriendLeast();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Teacher> getCustomerService() {
|
|
|
+ return this.lambdaQuery()
|
|
|
+ .eq(Teacher::getCustomerService, true)
|
|
|
+ .eq(Teacher::getLockFlag, false)
|
|
|
+ .list();
|
|
|
+ }
|
|
|
}
|