|
|
@@ -1020,25 +1020,35 @@ public class CorpServiceImpl implements CorpService {
|
|
|
return;
|
|
|
}
|
|
|
//接待客服
|
|
|
- CorpKfServicerDto corpKfServicerDto = null;
|
|
|
Integer assignType = corpKfAccountSessionConfig.getAssignType();
|
|
|
+ String servicerUserid = null;
|
|
|
if (assignType != null && assignType == 1) {
|
|
|
+ if (!redisService.hasKey(RedisService.key.CORP_KF_SEESION_ASSIGN_KEY.getName())) {
|
|
|
+ redisService.setNx(RedisService.key.CORP_KF_SEESION_ASSIGN_KEY.getName(), 0, RedisService.key.CORP_KF_SEESION_ASSIGN_KEY.getTimeout());
|
|
|
+ }
|
|
|
//轮流分配
|
|
|
Long incr = redisService.incr(RedisService.key.CORP_KF_SEESION_ASSIGN_KEY.getName(), 1l);
|
|
|
int index = incr.intValue() % corpKfServiceIds.size();
|
|
|
- Optional<CorpKfServicerDto> first = filterKfCs.stream().filter(f -> f.getServicerUserid().equals(corpKfServiceIds.get(index))).findFirst();
|
|
|
- if (first.isPresent()) {
|
|
|
- corpKfServicerDto = first.get();
|
|
|
- log.info("目前轮流接待的客服为:{}", corpKfServicerDto.getServicerUserid());
|
|
|
+ log.info("目前轮流incr是:{},接待人员list:{},轮流的下标:{}", incr, corpKfServiceIds.size(), index);
|
|
|
+ servicerUserid = corpKfServiceIds.get(index);
|
|
|
+ String present_servicer = redisService.getStr(RedisService.key.CORP_KF_SEESION_SERVICER.getName());
|
|
|
+ //目前接待客服重复 轮询至下一个
|
|
|
+ if (present_servicer != null && present_servicer.equals(servicerUserid)) {
|
|
|
+ log.info("轮流重复接待的下标:{}客服为:{}", index, servicerUserid);
|
|
|
+ incr = redisService.incr(RedisService.key.CORP_KF_SEESION_ASSIGN_KEY.getName(), 1l);
|
|
|
+ index = incr.intValue() % corpKfServiceIds.size();
|
|
|
+ servicerUserid = corpKfServiceIds.get(index);
|
|
|
}
|
|
|
+ log.info("目前轮流接待的下标:{}客服为:{}", index, servicerUserid);
|
|
|
+ redisService.set(RedisService.key.CORP_KF_SEESION_SERVICER.getName(), servicerUserid);
|
|
|
}
|
|
|
//未找到可轮流接待的客服
|
|
|
- if (corpKfServicerDto == null) {
|
|
|
+ if (servicerUserid == null) {
|
|
|
//选择第一个分配接待
|
|
|
- corpKfServicerDto = filterKfCs.get(0);
|
|
|
+ servicerUserid = filterKfCs.get(0).getServicerUserid();
|
|
|
}
|
|
|
//变更会话状态
|
|
|
- transCorpKfSessionToServicer(corpId, openKfId, null, corpKfServicerDto.getServicerUserid(), externalUserid, null, 3, sendDate, msgid);
|
|
|
+ transCorpKfSessionToServicer(corpId, openKfId, null, servicerUserid, externalUserid, null, 3, sendDate, msgid);
|
|
|
}
|
|
|
|
|
|
private Boolean enterQueueIfExistsQueues(String openKfId, String externalUserid, CorpKfAccountSessionConfig corpKfAccountSessionConfig, Set<String> dutyFollowIds) throws Exception {
|