|
|
@@ -93,7 +93,7 @@ public class SysWechatCustomerBusinessServiceImpl implements SysWechatCustomerBu
|
|
|
if (!customer.isEmpty()) {
|
|
|
// 获取值班时间列表
|
|
|
Map<Long, List<SysWechatCustomerDuty>> dutyMap = sysWechatCustomerDutyService.lambdaQuery()
|
|
|
- .in(SysWechatCustomerDuty::getId, customer)
|
|
|
+ .in(SysWechatCustomerDuty::getCustomerId, customer)
|
|
|
.list()
|
|
|
.stream()
|
|
|
.collect(Collectors.groupingBy(SysWechatCustomerDuty::getCustomerId));
|
|
|
@@ -203,6 +203,7 @@ public class SysWechatCustomerBusinessServiceImpl implements SysWechatCustomerBu
|
|
|
list.add(sysWechatCustomerAddVo.getReceptionistId());
|
|
|
wxCpKfService.addServicer(sysWechatCustomer.getOpenKfId(), list);
|
|
|
sysWechatCustomer.setReceptionistId(sysWechatCustomerAddVo.getReceptionistId());
|
|
|
+ sysWechatCustomer.setReceptionist(sysWechatCustomerAddVo.getReceptionist());
|
|
|
}
|
|
|
|
|
|
// 昵称和头像是否跟换
|
|
|
@@ -212,50 +213,71 @@ public class SysWechatCustomerBusinessServiceImpl implements SysWechatCustomerBu
|
|
|
|
|
|
sysWechatCustomer.setNickname(sysWechatCustomerAddVo.getNickname());
|
|
|
sysWechatCustomer.setAvatar(sysWechatCustomerAddVo.getAvatar());
|
|
|
+ sysWechatCustomer.setUserId(sysWechatCustomerAddVo.getUserId());
|
|
|
sysWechatCustomerService.updateById(sysWechatCustomer);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public String getWeChatCustomer(SysUser user) throws WxErrorException {
|
|
|
SysWechatCustomer sysWechatCustomer = sysWechatCustomerService.getByUserId(user.getLeaderId());
|
|
|
- if (!ObjectUtils.isEmpty(sysWechatCustomer)) {
|
|
|
- List<SysWechatCustomerDuty> list = sysWechatCustomerDutyService.lambdaQuery()
|
|
|
- .ge(SysWechatCustomerDuty::getStartTime, LocalDateTime.now())
|
|
|
- .le(SysWechatCustomerDuty::getEndTime, LocalDateTime.now())
|
|
|
- .list();
|
|
|
- if (sysWechatCustomer.getDutyCustomerId() > 0 && list != null && !list.isEmpty()) {
|
|
|
- sysWechatCustomer = sysWechatCustomerService.getById(sysWechatCustomer.getDutyCustomerId());
|
|
|
- }
|
|
|
- }
|
|
|
+ List<SysWechatCustomer> sysWechatCustomerList = sysWechatCustomerService.list();
|
|
|
+ List<Long> sysWechatCustomerIdList = sysWechatCustomerList.stream().map(SysWechatCustomer::getId).collect(Collectors.toList());
|
|
|
+
|
|
|
if (ObjectUtils.isEmpty(sysWechatCustomer)) {
|
|
|
+ // 获取最近一次的客服记录
|
|
|
SysWechatCustomerRecording sysWechatCustomerRecording = sysWechatCustomerRecordingService.lambdaQuery()
|
|
|
+ .in(!sysWechatCustomerIdList.isEmpty(), SysWechatCustomerRecording::getCustomerId, sysWechatCustomerIdList)
|
|
|
.eq(SysWechatCustomerRecording::getUserId, user.getId())
|
|
|
.orderByDesc(SysWechatCustomerRecording::getCreateTime)
|
|
|
+ .last("limit 1")
|
|
|
.one();
|
|
|
- if (!ObjectUtils.isEmpty(sysWechatCustomerRecording)) {
|
|
|
+ if (ObjectUtils.isEmpty(sysWechatCustomerRecording)) {
|
|
|
+ // 没有客服记录使用最近的一条
|
|
|
sysWechatCustomerRecording = sysWechatCustomerRecordingService.lambdaQuery()
|
|
|
+ .in(!sysWechatCustomerIdList.isEmpty(), SysWechatCustomerRecording::getCustomerId, sysWechatCustomerIdList)
|
|
|
.orderByDesc(SysWechatCustomerRecording::getCreateTime)
|
|
|
.last("limit 1")
|
|
|
.one();
|
|
|
+ Long i = Optional.ofNullable(sysWechatCustomerRecording)
|
|
|
+ .map(SysWechatCustomerRecording::getCustomerId)
|
|
|
+ .orElse(0L);
|
|
|
+ sysWechatCustomer = sysWechatCustomerService.lambdaQuery()
|
|
|
+ .gt(i > 0, SysWechatCustomer::getId, i)
|
|
|
+ .orderByAsc(SysWechatCustomer::getId)
|
|
|
+ .last("limit 1")
|
|
|
+ .one();
|
|
|
+ if (ObjectUtils.isEmpty(sysWechatCustomer)) {
|
|
|
+ sysWechatCustomer = sysWechatCustomerService.lambdaQuery()
|
|
|
+ .orderByAsc(SysWechatCustomer::getId)
|
|
|
+ .last("limit 1")
|
|
|
+ .one();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 使用上一次的客服
|
|
|
+ sysWechatCustomer = sysWechatCustomerService.lambdaQuery()
|
|
|
+ .eq(SysWechatCustomer::getId, sysWechatCustomerRecording.getCustomerId())
|
|
|
+ .one();
|
|
|
}
|
|
|
|
|
|
- Long i = Optional.ofNullable(sysWechatCustomerRecording)
|
|
|
- .map(SysWechatCustomerRecording::getCustomerId)
|
|
|
- .orElse(0L);
|
|
|
- sysWechatCustomer = sysWechatCustomerService.lambdaQuery()
|
|
|
- .ge(i > 0, SysWechatCustomer::getId, sysWechatCustomerRecording.getCustomerId())
|
|
|
- .orderByDesc(SysWechatCustomer::getId)
|
|
|
- .last("limit 1")
|
|
|
- .one();
|
|
|
- if (ObjectUtils.isEmpty(sysWechatCustomer)) {
|
|
|
- throw new SystemException("请联系管理员穿件客服");
|
|
|
- }
|
|
|
SysWechatCustomerRecording customerRecording = new SysWechatCustomerRecording();
|
|
|
customerRecording.setCustomerId(sysWechatCustomer.getId());
|
|
|
customerRecording.setUserId(user.getId());
|
|
|
sysWechatCustomerRecordingService.save(customerRecording);
|
|
|
}
|
|
|
|
|
|
+ List<SysWechatCustomerDuty> list = sysWechatCustomerDutyService.lambdaQuery()
|
|
|
+ .eq(SysWechatCustomerDuty::getCustomerId, sysWechatCustomer.getId())
|
|
|
+ .le(SysWechatCustomerDuty::getStartTime, LocalDateTime.now())
|
|
|
+ .ge(SysWechatCustomerDuty::getEndTime, LocalDateTime.now())
|
|
|
+ .list();
|
|
|
+ if (sysWechatCustomer.getDutyCustomerId() > 0 && list != null && !list.isEmpty()) {
|
|
|
+ sysWechatCustomer = sysWechatCustomerService.getById(sysWechatCustomer.getDutyCustomerId());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (ObjectUtils.isEmpty(sysWechatCustomer)) {
|
|
|
+ throw new SystemException("请联系管理员,配置客服");
|
|
|
+ }
|
|
|
+
|
|
|
String openKfId = sysWechatCustomer.getOpenKfId();
|
|
|
WxCpKfAccountLink wxCpKfAccountLink = new WxCpKfAccountLink();
|
|
|
wxCpKfAccountLink.setOpenKfid(openKfId);
|
|
|
@@ -264,4 +286,5 @@ public class SysWechatCustomerBusinessServiceImpl implements SysWechatCustomerBu
|
|
|
return accountLink.getUrl();
|
|
|
}
|
|
|
|
|
|
+
|
|
|
}
|