|
|
@@ -3,10 +3,15 @@ package com.fs.app.service;
|
|
|
import cn.hutool.core.util.RandomUtil;
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
import com.alibaba.fastjson.JSON;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
+import com.fs.common.core.redis.RedisCacheT;
|
|
|
import com.fs.common.utils.PubFun;
|
|
|
+import com.fs.common.utils.StringUtils;
|
|
|
+import com.fs.company.domain.CompanyVoiceRobotic;
|
|
|
import com.fs.company.domain.CompanyWxAccount;
|
|
|
import com.fs.company.domain.CompanyWxClient;
|
|
|
import com.fs.company.domain.CompanyWxDialog;
|
|
|
+import com.fs.company.mapper.CompanyVoiceRoboticMapper;
|
|
|
import com.fs.company.service.ICompanyVoiceRoboticService;
|
|
|
import com.fs.company.service.ICompanyWxAccountService;
|
|
|
import com.fs.company.service.ICompanyWxClientService;
|
|
|
@@ -27,8 +32,10 @@ import org.springframework.stereotype.Service;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.temporal.ChronoUnit;
|
|
|
import java.util.ArrayList;
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.function.Function;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Slf4j
|
|
|
@@ -44,6 +51,13 @@ public class WxTaskService {
|
|
|
private final ObjectPlaceholderResolver objectPlaceholderResolver;
|
|
|
private final ICrmCustomerService crmCustomerService;
|
|
|
private final FriendService friendService;
|
|
|
+ private final CompanyVoiceRoboticMapper companyVoiceRoboticMapper;
|
|
|
+ private final RedisCacheT<Long> redisCache;
|
|
|
+
|
|
|
+ private static final String TASK_ID = "cid:task:";
|
|
|
+ private static final String CELL_PHONE = "cellPhone";
|
|
|
+ private static final String ADD_WX = "addWx";
|
|
|
+ private static final String SEND_MSG = "sendMsg";
|
|
|
|
|
|
public void addWx(List<Long> accountIdList) {
|
|
|
String json = sysConfigService.selectConfigByKey("wx.config");
|
|
|
@@ -131,6 +145,50 @@ public class WxTaskService {
|
|
|
}
|
|
|
|
|
|
public void cellRun() {
|
|
|
+ log.info("===========CID任务开始执行===========");
|
|
|
+ List<CompanyVoiceRobotic> list = companyVoiceRoboticMapper.selectList(new QueryWrapper<CompanyVoiceRobotic>().eq("task_status", 1));
|
|
|
+ List<CompanyVoiceRobotic> successList = list.stream().filter(e -> StringUtils.isNotEmpty(e.getRunTaskFlow()) && e.getTaskFlow().length() == e.getRunTaskFlow().length()).collect(Collectors.toList());
|
|
|
+ List<CompanyVoiceRobotic> waitList = list.stream().filter(e -> StringUtils.isEmpty(e.getRunTaskFlow()) || e.getTaskFlow().length() != e.getRunTaskFlow().length()).collect(Collectors.toList());
|
|
|
+ successList.forEach(e -> e.setTaskStatus(3));
|
|
|
+ if(!successList.isEmpty()){
|
|
|
+ log.info("已经完成任务:{}", successList.size());
|
|
|
+ companyVoiceRoboticService.updateBatchById(successList);
|
|
|
+ }
|
|
|
+ waitList.forEach(e -> {
|
|
|
+ log.info("ROBOTIC-ID:{},开始执行小任务:{}", e.getId(), e.getName());
|
|
|
+ List<String> taskFlow = new ArrayList<>(Arrays.asList(e.getTaskFlow().split(",")));
|
|
|
+ log.info("ROBOTIC-ID:{},当前任务顺序:{}", e.getId(), e.getTaskFlow());
|
|
|
+ String runTaskFlow = e.getRunTaskFlow();
|
|
|
+ log.info("ROBOTIC-ID:{},已有任务:{}", e.getId(), e.getRunTaskFlow());
|
|
|
+ if(StringUtils.isNotEmpty(runTaskFlow)){
|
|
|
+ Arrays.asList(runTaskFlow.split(",")).forEach(taskFlow::remove);
|
|
|
+ }
|
|
|
+ log.info("ROBOTIC-ID:{},当前还剩余任务:{}", e.getId(), taskFlow);
|
|
|
+ e.setNowTask(taskFlow.get(0));
|
|
|
+ log.info("ROBOTIC-ID:{},当前需要执行任务:{}", e.getId(), e.getNowTask());
|
|
|
+ });
|
|
|
+ Function<CompanyVoiceRobotic, String> getKey = e -> TASK_ID + e.getId();
|
|
|
+ waitList.forEach(e -> {
|
|
|
+ if(redisCache.getCacheObject(getKey.apply(e)) != null){
|
|
|
+ log.info("ROBOTIC-ID:{},已有正在执行任务", e.getId());
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ redisCache.setCacheObject(getKey.apply(e), e.getTaskId());
|
|
|
+ try {
|
|
|
+ switch (e.getNowTask()) {
|
|
|
+ case CELL_PHONE:
|
|
|
|
|
|
+ break;
|
|
|
+ case ADD_WX:
|
|
|
+ break;
|
|
|
+ case SEND_MSG:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }catch (Exception exception){
|
|
|
+ log.error("ROBOTIC-ID:{},任务执行失败", e.getId(), exception);
|
|
|
+ redisCache.deleteObject(getKey.apply(e));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ log.info("===========CID任务执行完成===========");
|
|
|
}
|
|
|
}
|