发送ai 账分预处理
This commit is contained in:
parent
4410a4fbb3
commit
86b39013b9
|
@ -1,17 +1,14 @@
|
||||||
package com.ruoyi.quartz.task;
|
package com.ruoyi.quartz.task;
|
||||||
|
|
||||||
import com.ruoyi.business.domain.*;
|
import com.ruoyi.business.domain.BusReturnVisitInfo;
|
||||||
|
import com.ruoyi.business.domain.BusStoreDayInfo;
|
||||||
|
import com.ruoyi.business.domain.BusStoreInfo;
|
||||||
import com.ruoyi.business.service.*;
|
import com.ruoyi.business.service.*;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.time.LocalTime;
|
|
||||||
import java.time.ZoneId;
|
|
||||||
import java.time.format.DateTimeFormatter;
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -21,29 +18,17 @@ import java.util.List;
|
||||||
*/
|
*/
|
||||||
@Component("ryTask")
|
@Component("ryTask")
|
||||||
public class RyTask {
|
public class RyTask {
|
||||||
@Autowired
|
|
||||||
private IBusOrderInfoService orderInfoService;
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBusStoreInfoService storeInfoService;
|
private IBusStoreInfoService storeInfoService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBusStoreDayInfoService iBusStoreDayInfoService;
|
private IBusStoreDayInfoService iBusStoreDayInfoService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBusStoreConfigInfoService iBusStoreConfigInfoService;
|
|
||||||
@Autowired
|
|
||||||
private IBusAgentInfoService agentInfoService;
|
|
||||||
@Autowired
|
|
||||||
private IAiService aiService;
|
private IAiService aiService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IMeituanService iMeituanService;
|
private IMeituanService iMeituanService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBusFifteenInfoService fifteenInfoService;
|
|
||||||
@Autowired
|
|
||||||
private IBusBanOperateInfoService iBusBanOperateInfoService;
|
|
||||||
@Autowired
|
|
||||||
private IBusReturnVisitInfoService iBusReturnVisitInfoService;
|
private IBusReturnVisitInfoService iBusReturnVisitInfoService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private StringRedisTemplate redisTemplate;
|
|
||||||
|
|
||||||
// public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
|
// public void ryMultipleParams(String s, Boolean b, Long l, Double d, Integer i)
|
||||||
// {
|
// {
|
||||||
|
@ -73,109 +58,9 @@ public class RyTask {
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
public void sendToAi() throws Exception {
|
public void sendToAi() throws Exception {
|
||||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
aiService.sendToAi();
|
||||||
DateTimeFormatter dateTimeFormatterNow = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
||||||
LocalDateTime now = LocalDateTime.now();
|
|
||||||
LocalDateTime t30 = now.minusMinutes(30);
|
|
||||||
LocalDateTime t10 = now.minusMinutes(10);
|
|
||||||
String t1 = t30.format(dateTimeFormatter);
|
|
||||||
String t2 = t10.format(dateTimeFormatter);
|
|
||||||
|
|
||||||
BusStoreInfo storeInfo = new BusStoreInfo();
|
|
||||||
List<BusStoreInfo> storeInfoList = storeInfoService.selectBusStoreInfoList(storeInfo);
|
|
||||||
for (BusStoreInfo busStoreInfo : storeInfoList) {
|
|
||||||
if("2".equals(busStoreInfo.getReturnVisitStatus())){
|
|
||||||
continue;// 未开启营销的跳出
|
|
||||||
}
|
|
||||||
// 配置规则
|
|
||||||
BusStoreConfigInfo busStoreConfigInfo = new BusStoreConfigInfo();
|
|
||||||
busStoreConfigInfo.setStoreCode(busStoreInfo.getStoreCode());
|
|
||||||
busStoreConfigInfo = iBusStoreConfigInfoService.selectBusStoreConfigInfoList(busStoreConfigInfo).get(0);
|
|
||||||
|
|
||||||
List<BusOrderInfo> list = new ArrayList<>();
|
|
||||||
if("1".equals(busStoreInfo.getSelfDeliveryStatus())){
|
|
||||||
list = orderInfoService.selectBusOrderInfoListToAi(busStoreInfo.getStoreCode(),t1, t2);
|
|
||||||
}else if("2".equals(busStoreInfo.getSelfDeliveryStatus())){
|
|
||||||
LocalDateTime tN = now.minusMinutes(busStoreConfigInfo.getSelfDeliveryDuration());
|
|
||||||
String time = tN.format(dateTimeFormatter);
|
|
||||||
// 自配送前推时间处理
|
|
||||||
list = orderInfoService.selectBusZpsOrderInfoListToAi(busStoreInfo.getStoreCode(), time);
|
|
||||||
}
|
|
||||||
if (list.size() == 0 ) continue;
|
|
||||||
list.forEach(System.out::println);
|
|
||||||
//代理账分不足,跳出 取最小值
|
|
||||||
BusAgentInfo agentInfo = new BusAgentInfo();
|
|
||||||
agentInfo.setAgentAccount(busStoreInfo.getBindUser());
|
|
||||||
List<BusAgentInfo> agentInfoL = agentInfoService.selectBusAgentInfoList(agentInfo);
|
|
||||||
if (agentInfoL.size() > 0) {
|
|
||||||
if (agentInfoL.get(0).getAiDurationBalance() < list.size()) {
|
|
||||||
list.subList(0,agentInfoL.get(0).getAiDurationBalance()-1);
|
|
||||||
}
|
|
||||||
} else continue;
|
|
||||||
for (BusOrderInfo busOrderInfo : list) {
|
|
||||||
// 拼好饭
|
|
||||||
if("N".equals(busStoreConfigInfo.getIsSpliceOrder())){ // 否:开启拼好饭订单过滤(不营销拼好饭)
|
|
||||||
if("2".equals(busOrderInfo.getIsPhf())){//否:
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 下单次数
|
|
||||||
int count = Integer.valueOf(busOrderInfo.getOrderCount());
|
|
||||||
if(busStoreConfigInfo.getMaxOrderNum() < count
|
|
||||||
|| count < busStoreConfigInfo.getMinOrderNum()){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// 营销时间区间
|
|
||||||
LocalTime start = LocalTime.parse(busStoreConfigInfo.getStartTime());
|
|
||||||
LocalTime end = LocalTime.parse(busStoreConfigInfo.getEndTime());
|
|
||||||
// 时区
|
|
||||||
ZoneId zoneId = ZoneId.systemDefault();
|
|
||||||
LocalDateTime orderDateTime = LocalDateTime.ofInstant(busOrderInfo.getOrderTime().toInstant(), zoneId);
|
|
||||||
LocalTime orderTime = orderDateTime.toLocalTime();
|
|
||||||
if(orderTime.isBefore(start)||end.isBefore(orderTime)){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// 话术判断 08:00 10:00 11:30 13:30 18:00 20:00
|
|
||||||
String content = "";
|
|
||||||
LocalTime time1 = LocalTime.of(6, 00, 00);
|
|
||||||
LocalTime time2 = LocalTime.of(10, 00, 00);
|
|
||||||
LocalTime time3 = LocalTime.of(14, 00, 00);
|
|
||||||
LocalTime time4 = LocalTime.of(17, 00, 00);
|
|
||||||
if(time1.isBefore(orderTime)&&orderTime.isBefore(time2)){
|
|
||||||
content = busStoreConfigInfo.getContent1();
|
|
||||||
}else if(time2.isBefore(orderTime)&&orderTime.isBefore(time3)){
|
|
||||||
content = busStoreConfigInfo.getContent2();
|
|
||||||
}else if(time3.isBefore(orderTime)&&orderTime.isBefore(time4)){
|
|
||||||
content = busStoreConfigInfo.getContent3();
|
|
||||||
}else{
|
|
||||||
content = busStoreConfigInfo.getContent4();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//加入免运营订单-黑名单的 不营销跳出
|
|
||||||
BusBanOperateInfo busBanOperateInfo = new BusBanOperateInfo();
|
|
||||||
busBanOperateInfo.setBanOperateCode(busOrderInfo.getCustomId());
|
|
||||||
busBanOperateInfo.setBanStatus("1");
|
|
||||||
List<BusBanOperateInfo> list1 = iBusBanOperateInfoService.selectBusBanOperateInfoList(busBanOperateInfo);
|
|
||||||
if(list1.size() > 0){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
// 当日此店铺营销限额
|
|
||||||
int quota = iBusReturnVisitInfoService.countByToday(storeInfo.getStoreCode());
|
|
||||||
if(quota >= busStoreConfigInfo.getQuota()){
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
redisTemplate.opsForValue().set(busStoreConfigInfo.getStoreCode()+now.format(dateTimeFormatterNow), quota+"");
|
|
||||||
BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
|
||||||
fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
|
||||||
List<BusFifteenInfo> listInfo = fifteenInfoService.selectBusFifteenInfoList(fifteenInfo);
|
|
||||||
if (listInfo.size() == 0) {
|
|
||||||
System.out.println("话术:"+content+"; order"+busOrderInfo.toString());
|
|
||||||
// aiService.sendAiTask(content,busOrderInfo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
* 获取AI结果 5分钟
|
* 获取AI结果 5分钟
|
||||||
*/
|
*/
|
||||||
|
@ -192,11 +77,11 @@ public class RyTask {
|
||||||
BusStoreInfo storeInfo = new BusStoreInfo();
|
BusStoreInfo storeInfo = new BusStoreInfo();
|
||||||
List<BusStoreInfo> storeInfoList = storeInfoService.selectBusStoreInfoList(storeInfo);
|
List<BusStoreInfo> storeInfoList = storeInfoService.selectBusStoreInfoList(storeInfo);
|
||||||
for (BusStoreInfo busStoreInfo : storeInfoList) {
|
for (BusStoreInfo busStoreInfo : storeInfoList) {
|
||||||
List<BusReturnVisitInfo> list = iBusReturnVisitInfoService.selectBusReturnVisitInfoListByDate(busStoreInfo.getStoreCode(),date.format(dateTimeFormatter));
|
List<BusReturnVisitInfo> list = iBusReturnVisitInfoService.selectBusReturnVisitInfoListByDate(busStoreInfo.getStoreCode(), date.format(dateTimeFormatter));
|
||||||
BusStoreDayInfo busStoreDayInfo = new BusStoreDayInfo();
|
BusStoreDayInfo busStoreDayInfo = new BusStoreDayInfo();
|
||||||
busStoreDayInfo.setStoreId(busStoreInfo.getId());
|
busStoreDayInfo.setStoreId(busStoreInfo.getId());
|
||||||
List<BusStoreDayInfo> list1 = iBusStoreDayInfoService.selectBusStoreDayInfoList(busStoreDayInfo);
|
List<BusStoreDayInfo> list1 = iBusStoreDayInfoService.selectBusStoreDayInfoList(busStoreDayInfo);
|
||||||
if(list1.size()==1){
|
if (list1.size() == 1) {
|
||||||
busStoreDayInfo = list1.get(0);
|
busStoreDayInfo = list1.get(0);
|
||||||
busStoreDayInfo.setLastReturnVisitNum(list.size());
|
busStoreDayInfo.setLastReturnVisitNum(list.size());
|
||||||
iBusStoreDayInfoService.updateBusStoreDayInfo(busStoreDayInfo);
|
iBusStoreDayInfoService.updateBusStoreDayInfo(busStoreDayInfo);
|
||||||
|
|
|
@ -57,6 +57,9 @@ public class BusAgentInfo extends BaseEntity
|
||||||
private int aiDurationBalance;
|
private int aiDurationBalance;
|
||||||
private int aiDurationBalance1;
|
private int aiDurationBalance1;
|
||||||
|
|
||||||
|
public BusAgentInfo() {
|
||||||
|
}
|
||||||
|
|
||||||
public int getAiDurationBalance1() {
|
public int getAiDurationBalance1() {
|
||||||
return aiDurationBalance1;
|
return aiDurationBalance1;
|
||||||
}
|
}
|
||||||
|
@ -114,6 +117,15 @@ public class BusAgentInfo extends BaseEntity
|
||||||
private String password;
|
private String password;
|
||||||
private String confirmPassword;
|
private String confirmPassword;
|
||||||
private String phoneNumber;
|
private String phoneNumber;
|
||||||
|
private int aiRealTimeNum;
|
||||||
|
|
||||||
|
public int getAiRealTimeNum() {
|
||||||
|
return aiRealTimeNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAiRealTimeNum(int aiRealTimeNum) {
|
||||||
|
this.aiRealTimeNum = aiRealTimeNum;
|
||||||
|
}
|
||||||
|
|
||||||
public String getPassword() {
|
public String getPassword() {
|
||||||
return password;
|
return password;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.ruoyi.business.service;
|
package com.ruoyi.business.service;
|
||||||
|
|
||||||
import com.ruoyi.business.domain.BusOrderInfo;
|
import com.ruoyi.business.domain.BusOrderInfo;
|
||||||
import com.ruoyi.common.core.domain.R;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ai Service接口
|
* ai Service接口
|
||||||
|
@ -9,9 +8,10 @@ import com.ruoyi.common.core.domain.R;
|
||||||
* @author ruoyi
|
* @author ruoyi
|
||||||
* @date 2024-07-03
|
* @date 2024-07-03
|
||||||
*/
|
*/
|
||||||
public interface IAiService
|
public interface IAiService {
|
||||||
{
|
|
||||||
void queryAiTask();
|
void queryAiTask();
|
||||||
|
|
||||||
void sendAiTask(String content, BusOrderInfo busOrderInfo);
|
void sendAiTask(String content, BusOrderInfo busOrderInfo);
|
||||||
|
|
||||||
|
void sendToAi();
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,21 +4,19 @@ import com.alibaba.fastjson2.JSON;
|
||||||
import com.alibaba.fastjson2.JSONArray;
|
import com.alibaba.fastjson2.JSONArray;
|
||||||
import com.alibaba.fastjson2.JSONObject;
|
import com.alibaba.fastjson2.JSONObject;
|
||||||
import com.ruoyi.business.domain.*;
|
import com.ruoyi.business.domain.*;
|
||||||
import com.ruoyi.business.mapper.BusAgentInfoMapper;
|
|
||||||
import com.ruoyi.business.mapper.BusFifteenInfoMapper;
|
|
||||||
import com.ruoyi.business.service.*;
|
import com.ruoyi.business.service.*;
|
||||||
import com.ruoyi.common.core.domain.R;
|
|
||||||
import com.ruoyi.common.exception.ServiceException;
|
|
||||||
import com.ruoyi.common.utils.HttpClientUtilT;
|
import com.ruoyi.common.utils.HttpClientUtilT;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
|
import java.time.format.DateTimeFormatter;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,8 +26,7 @@ import java.util.*;
|
||||||
* @date 2024-07-03
|
* @date 2024-07-03
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
public class AiServiceImpl implements IAiService
|
public class AiServiceImpl implements IAiService {
|
||||||
{
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBusAiInfoService aiInfoService;
|
private IBusAiInfoService aiInfoService;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -46,6 +43,12 @@ public class AiServiceImpl implements IAiService
|
||||||
private IBusIntegralRecordService integralRecordService;
|
private IBusIntegralRecordService integralRecordService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private StringRedisTemplate redisTemplate;
|
private StringRedisTemplate redisTemplate;
|
||||||
|
@Autowired
|
||||||
|
private IBusStoreConfigInfoService iBusStoreConfigInfoService;
|
||||||
|
@Autowired
|
||||||
|
private IBusBanOperateInfoService iBusBanOperateInfoService;
|
||||||
|
@Autowired
|
||||||
|
private IBusReturnVisitInfoService iBusReturnVisitInfoService;
|
||||||
|
|
||||||
private String userSn = "SYSUSER|8398f13f3feccef770ee4d465fe22fbf";
|
private String userSn = "SYSUSER|8398f13f3feccef770ee4d465fe22fbf";
|
||||||
private String aiUserSn = "SYSUSER|2665bcca63a2b5c724095fa01dce0470";
|
private String aiUserSn = "SYSUSER|2665bcca63a2b5c724095fa01dce0470";
|
||||||
|
@ -56,17 +59,17 @@ public class AiServiceImpl implements IAiService
|
||||||
Map<String, String> header = new HashMap<>();
|
Map<String, String> header = new HashMap<>();
|
||||||
header.put("Accept", "application/json");
|
header.put("Accept", "application/json");
|
||||||
header.put("Content-Type", "application/json;charset=utf-8");
|
header.put("Content-Type", "application/json;charset=utf-8");
|
||||||
String loginJson = "{\"username\":\""+userName+"\",\"password\":\""+userName+"\",\"from\":\"2\",\"url\":\"83710973\"}";
|
String loginJson = "{\"username\":\"" + userName + "\",\"password\":\"" + userName + "\",\"from\":\"2\",\"url\":\"83710973\"}";
|
||||||
String loginResult = HttpClientUtilT.doPostJson(url,header, loginJson);
|
String loginResult = HttpClientUtilT.doPostJson(url, header, loginJson);
|
||||||
JSONObject jsonObject = JSONObject.parseObject(loginResult);
|
JSONObject jsonObject = JSONObject.parseObject(loginResult);
|
||||||
if ("0".equals(jsonObject.getString("code"))){
|
if ("0".equals(jsonObject.getString("code"))) {
|
||||||
JSONObject data = jsonObject.getJSONObject("data");
|
JSONObject data = jsonObject.getJSONObject("data");
|
||||||
String apiKey = data.getString("api_key");
|
String apiKey = data.getString("api_key");
|
||||||
long apiKeyExpire = Long.valueOf(data.getString("api_key_expire"));
|
long apiKeyExpire = Long.valueOf(data.getString("api_key_expire"));
|
||||||
String userSn = data.getString("user_sn");
|
String userSn = data.getString("user_sn");
|
||||||
String projectSn = data.getString("project_sn");
|
String projectSn = data.getString("project_sn");
|
||||||
System.out.println("login 返回:===========apikey,userSn,projectSn============="+apiKey+","+userSn+","+projectSn);
|
System.out.println("login 返回:===========apikey,userSn,projectSn=============" + apiKey + "," + userSn + "," + projectSn);
|
||||||
redisTemplate.opsForValue().set("apiKey",apiKey);
|
redisTemplate.opsForValue().set("apiKey", apiKey);
|
||||||
return apiKey;
|
return apiKey;
|
||||||
} else {
|
} else {
|
||||||
System.out.println("login接口返回错误: " + jsonObject.toString());
|
System.out.println("login接口返回错误: " + jsonObject.toString());
|
||||||
|
@ -113,11 +116,11 @@ public class AiServiceImpl implements IAiService
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
|
|
||||||
private void appendAiTask(String aKey,String dialTaskMainSn,String content,BusOrderInfo busOrderInfo) {
|
private void appendAiTask(String aKey, String dialTaskMainSn, String content, BusOrderInfo busOrderInfo) {
|
||||||
// String aKey, String phoneNo, String virtualPhone, String dialTaskMainSn
|
// String aKey, String phoneNo, String virtualPhone, String dialTaskMainSn
|
||||||
String phoneNo = busOrderInfo.getPrivcyPhone().split(",")[0];
|
String phoneNo = busOrderInfo.getPrivcyPhone().split(",")[0];
|
||||||
String virtualPhone = busOrderInfo.getPrivcyPhone().split(",")[1];
|
String virtualPhone = busOrderInfo.getPrivcyPhone().split(",")[1];
|
||||||
String requestJson = "{\"api_key\": \"" + aKey + "\",\"user_sn\": \"" + userSn + "\",\"source\": \"测试任务\",\"project_sn\": \"" + content + "\",\"ai_user_sn\": \""+aiUserSn+"\",\"is_zidong\": \"on\",\"client_info_json\": {\"data\": [{\"姓名\": \"客户\",\"电话\": \"" + phoneNo + "\",\"备注\": \"下单"+busOrderInfo.getOrderCount()+"次\",\"虚拟分机号\": \"" + virtualPhone + "\"}]},\"is_open_second_dialing\": \"1\",\n" +
|
String requestJson = "{\"api_key\": \"" + aKey + "\",\"user_sn\": \"" + userSn + "\",\"source\": \"测试任务\",\"project_sn\": \"" + content + "\",\"ai_user_sn\": \"" + aiUserSn + "\",\"is_zidong\": \"on\",\"client_info_json\": {\"data\": [{\"姓名\": \"客户\",\"电话\": \"" + phoneNo + "\",\"备注\": \"下单" + busOrderInfo.getOrderCount() + "次\",\"虚拟分机号\": \"" + virtualPhone + "\"}]},\"is_open_second_dialing\": \"1\",\n" +
|
||||||
"\"is_open_remove_duplication\": \"0\",\"dial_task_main_sn\": \"" + dialTaskMainSn + "\",\"is_append\": \"1\"}";
|
"\"is_open_remove_duplication\": \"0\",\"dial_task_main_sn\": \"" + dialTaskMainSn + "\",\"is_append\": \"1\"}";
|
||||||
String requestUrl = "https://ai002.ciopaas.com/api/addJsonOfAsync";
|
String requestUrl = "https://ai002.ciopaas.com/api/addJsonOfAsync";
|
||||||
Map<String, String> header = new HashMap<>();
|
Map<String, String> header = new HashMap<>();
|
||||||
|
@ -143,8 +146,8 @@ public class AiServiceImpl implements IAiService
|
||||||
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
|
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
|
||||||
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||||
|
|
||||||
} else if("20005".equals(jo.getString("code"))||"20006".equals(jo.getString("code"))) {
|
} else if ("20005".equals(jo.getString("code")) || "20006".equals(jo.getString("code"))) {
|
||||||
sendAiTask(content,busOrderInfo);
|
sendAiTask(content, busOrderInfo);
|
||||||
} else {
|
} else {
|
||||||
// TODO: 2024/7/10 失败原因判断 是否继续循环
|
// TODO: 2024/7/10 失败原因判断 是否继续循环
|
||||||
System.out.println("建立任务接口返回错误: " + jo.toString());
|
System.out.println("建立任务接口返回错误: " + jo.toString());
|
||||||
|
@ -152,27 +155,28 @@ public class AiServiceImpl implements IAiService
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional
|
||||||
public void queryAiTask() {
|
public void queryAiTask() {
|
||||||
String url = "https://ai002.ciopaas.com/api/login";
|
String url = "https://ai002.ciopaas.com/api/login";
|
||||||
String userName = "zw982210";
|
String userName = "zw982210";
|
||||||
Map<String, String> header = new HashMap<>();
|
Map<String, String> header = new HashMap<>();
|
||||||
header.put("Accept", "application/json");
|
header.put("Accept", "application/json");
|
||||||
header.put("Content-Type", "application/json;charset=utf-8");
|
header.put("Content-Type", "application/json;charset=utf-8");
|
||||||
String loginJson = "{\"username\":\""+userName+"\",\"password\":\""+userName+"\",\"from\":\"2\",\"url\":\"83710973\"}";
|
String loginJson = "{\"username\":\"" + userName + "\",\"password\":\"" + userName + "\",\"from\":\"2\",\"url\":\"83710973\"}";
|
||||||
String loginResult = HttpClientUtilT.doPostJson(url,header, loginJson);
|
String loginResult = HttpClientUtilT.doPostJson(url, header, loginJson);
|
||||||
JSONObject jsonObject = JSONObject.parseObject(loginResult);
|
JSONObject jsonObject = JSONObject.parseObject(loginResult);
|
||||||
if ("0".equals(jsonObject.getString("code"))){
|
if ("0".equals(jsonObject.getString("code"))) {
|
||||||
JSONObject data = jsonObject.getJSONObject("data");
|
JSONObject data = jsonObject.getJSONObject("data");
|
||||||
String apiKey = data.getString("api_key");
|
String apiKey = data.getString("api_key");
|
||||||
String userSn = data.getString("user_sn");
|
String userSn = data.getString("user_sn");
|
||||||
String projectSn = data.getString("project_sn");
|
String projectSn = data.getString("project_sn");
|
||||||
System.out.println("login 返回:===========apikey,userSn,projectSn============="+apiKey+","+userSn+","+projectSn);
|
System.out.println("login 返回:===========apikey,userSn,projectSn=============" + apiKey + "," + userSn + "," + projectSn);
|
||||||
|
|
||||||
String url1 = "https://ai002.ciopaas.com/api/crmList";
|
String url1 = "https://ai002.ciopaas.com/api/crmList";
|
||||||
String json1 = "{\"api_key\":\""+apiKey+"\",\"user_sn\":\""+userSn+"\",\"pageIndex\":\"0\",\"pageSize\":\"20\"}";
|
String json1 = "{\"api_key\":\"" + apiKey + "\",\"user_sn\":\"" + userSn + "\",\"pageIndex\":\"0\",\"pageSize\":\"20\"}";
|
||||||
String result1 = HttpClientUtilT.doPostJson(url1,header,json1);
|
String result1 = HttpClientUtilT.doPostJson(url1, header, json1);
|
||||||
JSONObject jsonObject1 = JSONObject.parseObject(result1);
|
JSONObject jsonObject1 = JSONObject.parseObject(result1);
|
||||||
if ("0".equals(jsonObject1.getString("code"))){
|
if ("0".equals(jsonObject1.getString("code"))) {
|
||||||
JSONArray jsonArray = jsonObject1.getJSONObject("data").getJSONArray("list");
|
JSONArray jsonArray = jsonObject1.getJSONObject("data").getJSONArray("list");
|
||||||
for (Object o : jsonArray) {
|
for (Object o : jsonArray) {
|
||||||
JSONObject oj = JSONObject.parseObject(JSON.toJSONString(o));
|
JSONObject oj = JSONObject.parseObject(JSON.toJSONString(o));
|
||||||
|
@ -201,8 +205,8 @@ public class AiServiceImpl implements IAiService
|
||||||
// long saveId = aiInfo.getId();
|
// long saveId = aiInfo.getId();
|
||||||
reduceIntegral(aiInfo);
|
reduceIntegral(aiInfo);
|
||||||
}
|
}
|
||||||
}catch (Exception e) {
|
} catch (Exception e) {
|
||||||
System.out.println(id+"duplicate");
|
System.out.println(id + "duplicate");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -215,39 +219,150 @@ public class AiServiceImpl implements IAiService
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public synchronized void sendAiTask(String content,BusOrderInfo busOrderInfo) {
|
public synchronized void sendAiTask(String content, BusOrderInfo busOrderInfo) {
|
||||||
try {
|
try {
|
||||||
String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
|
String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
|
||||||
if (apiKey == null){
|
if (apiKey == null) {
|
||||||
apiKey = login();
|
apiKey = login();
|
||||||
}
|
}
|
||||||
String dialTaskMainSn = Optional.ofNullable(redisTemplate.opsForValue().get("dialTaskMainSn")).orElse(null);
|
String dialTaskMainSn = Optional.ofNullable(redisTemplate.opsForValue().get("dialTaskMainSn")).orElse(null);
|
||||||
if (dialTaskMainSn != null){
|
if (dialTaskMainSn != null) {
|
||||||
appendAiTask(apiKey,dialTaskMainSn,content,busOrderInfo);
|
appendAiTask(apiKey, dialTaskMainSn, content, busOrderInfo);
|
||||||
} else {
|
} else {
|
||||||
addAiTaskTest(apiKey,content,busOrderInfo);
|
addAiTaskTest(apiKey, content, busOrderInfo);
|
||||||
}
|
}
|
||||||
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
||||||
returnVisitInfo.setPhoneNumber(busOrderInfo.getPrivcyPhone());
|
returnVisitInfo.setPhoneNumber(busOrderInfo.getPrivcyPhone());
|
||||||
List<BusReturnVisitInfo> list = returnVisitInfoService.selectBusReturnVisitInfoList(returnVisitInfo);
|
List<BusReturnVisitInfo> list = returnVisitInfoService.selectBusReturnVisitInfoList(returnVisitInfo);
|
||||||
if(list.size() == 1){
|
if (list.size() == 1) {
|
||||||
returnVisitInfo.setId(list.get(0).getId());
|
returnVisitInfo.setId(list.get(0).getId());
|
||||||
returnVisitInfo.setReturnVisitTime(new Date());
|
returnVisitInfo.setReturnVisitTime(new Date());
|
||||||
returnVisitInfoService.updateBusReturnVisitInfo(returnVisitInfo);
|
returnVisitInfoService.updateBusReturnVisitInfo(returnVisitInfo);
|
||||||
}
|
}
|
||||||
}catch (Exception e){
|
} catch (Exception e) {
|
||||||
System.out.println("建立接口返回错误: " + e.getMessage());
|
System.out.println("建立接口返回错误: " + e.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addAiTaskTest(String apiKey,String content, BusOrderInfo busOrderInfo) {
|
@Override
|
||||||
|
@Transactional
|
||||||
|
public void sendToAi() {
|
||||||
|
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
||||||
|
DateTimeFormatter dateTimeFormatterNow = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
LocalDateTime t30 = now.minusMinutes(30);
|
||||||
|
LocalDateTime t10 = now.minusMinutes(10);
|
||||||
|
String t1 = t30.format(dateTimeFormatter);
|
||||||
|
String t2 = t10.format(dateTimeFormatter);
|
||||||
|
|
||||||
|
BusStoreInfo storeInfo = new BusStoreInfo();
|
||||||
|
List<BusStoreInfo> storeInfoList = storeInfoService.selectBusStoreInfoList(storeInfo);
|
||||||
|
for (BusStoreInfo busStoreInfo : storeInfoList) {
|
||||||
|
if ("2".equals(busStoreInfo.getReturnVisitStatus())) {
|
||||||
|
continue;// 未开启营销的跳出
|
||||||
|
}
|
||||||
|
// 配置规则
|
||||||
|
BusStoreConfigInfo busStoreConfigInfo = new BusStoreConfigInfo();
|
||||||
|
busStoreConfigInfo.setStoreCode(busStoreInfo.getStoreCode());
|
||||||
|
busStoreConfigInfo = iBusStoreConfigInfoService.selectBusStoreConfigInfoList(busStoreConfigInfo).get(0);
|
||||||
|
|
||||||
|
List<BusOrderInfo> list = new ArrayList<>();
|
||||||
|
if ("1".equals(busStoreInfo.getSelfDeliveryStatus())) {
|
||||||
|
list = orderInfoService.selectBusOrderInfoListToAi(busStoreInfo.getStoreCode(), t1, t2);
|
||||||
|
} else if ("2".equals(busStoreInfo.getSelfDeliveryStatus())) {
|
||||||
|
LocalDateTime tN = now.minusMinutes(busStoreConfigInfo.getSelfDeliveryDuration());
|
||||||
|
String time = tN.format(dateTimeFormatter);
|
||||||
|
// 自配送前推时间处理
|
||||||
|
list = orderInfoService.selectBusZpsOrderInfoListToAi(busStoreInfo.getStoreCode(), time);
|
||||||
|
}
|
||||||
|
if (list.size() == 0) continue;
|
||||||
|
list.forEach(System.out::println);
|
||||||
|
//代理账分不足,跳出 取最小值
|
||||||
|
BusAgentInfo agentInfo = new BusAgentInfo();
|
||||||
|
agentInfo.setAgentAccount(busStoreInfo.getBindUser());
|
||||||
|
List<BusAgentInfo> agentInfoL = agentInfoService.selectBusAgentInfoList(agentInfo);
|
||||||
|
if (agentInfoL.size() > 0) {
|
||||||
|
int cha = agentInfoL.get(0).getAiDurationBalance() - agentInfoL.get(0).getAiRealTimeNum();
|
||||||
|
if (cha < list.size()) {
|
||||||
|
list.subList(0, cha - 1);
|
||||||
|
agentInfoL.get(0).setAiRealTimeNum(agentInfoL.get(0).getAiDurationBalance());
|
||||||
|
} else {
|
||||||
|
agentInfoL.get(0).setAiRealTimeNum(agentInfoL.get(0).getAiRealTimeNum() + list.size());
|
||||||
|
}
|
||||||
|
agentInfoService.updateAgentInfo(agentInfoL.get(0));
|
||||||
|
} else continue;
|
||||||
|
for (BusOrderInfo busOrderInfo : list) {
|
||||||
|
// 拼好饭
|
||||||
|
if ("N".equals(busStoreConfigInfo.getIsSpliceOrder())) { // 否:开启拼好饭订单过滤(不营销拼好饭)
|
||||||
|
if ("2".equals(busOrderInfo.getIsPhf())) {//否:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 下单次数
|
||||||
|
int count = Integer.valueOf(busOrderInfo.getOrderCount());
|
||||||
|
if (busStoreConfigInfo.getMaxOrderNum() < count
|
||||||
|
|| count < busStoreConfigInfo.getMinOrderNum()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 营销时间区间
|
||||||
|
LocalTime start = LocalTime.parse(busStoreConfigInfo.getStartTime());
|
||||||
|
LocalTime end = LocalTime.parse(busStoreConfigInfo.getEndTime());
|
||||||
|
// 时区
|
||||||
|
ZoneId zoneId = ZoneId.systemDefault();
|
||||||
|
LocalDateTime orderDateTime = LocalDateTime.ofInstant(busOrderInfo.getOrderTime().toInstant(), zoneId);
|
||||||
|
LocalTime orderTime = orderDateTime.toLocalTime();
|
||||||
|
if (orderTime.isBefore(start) || end.isBefore(orderTime)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 话术判断 08:00 10:00 11:30 13:30 18:00 20:00
|
||||||
|
String content = "";
|
||||||
|
LocalTime time1 = LocalTime.of(6, 00, 00);
|
||||||
|
LocalTime time2 = LocalTime.of(10, 00, 00);
|
||||||
|
LocalTime time3 = LocalTime.of(14, 00, 00);
|
||||||
|
LocalTime time4 = LocalTime.of(17, 00, 00);
|
||||||
|
if (time1.isBefore(orderTime) && orderTime.isBefore(time2)) {
|
||||||
|
content = busStoreConfigInfo.getContent1();
|
||||||
|
} else if (time2.isBefore(orderTime) && orderTime.isBefore(time3)) {
|
||||||
|
content = busStoreConfigInfo.getContent2();
|
||||||
|
} else if (time3.isBefore(orderTime) && orderTime.isBefore(time4)) {
|
||||||
|
content = busStoreConfigInfo.getContent3();
|
||||||
|
} else {
|
||||||
|
content = busStoreConfigInfo.getContent4();
|
||||||
|
}
|
||||||
|
|
||||||
|
//加入免运营订单-黑名单的 不营销跳出
|
||||||
|
BusBanOperateInfo busBanOperateInfo = new BusBanOperateInfo();
|
||||||
|
busBanOperateInfo.setBanOperateCode(busOrderInfo.getCustomId());
|
||||||
|
busBanOperateInfo.setBanStatus("1");
|
||||||
|
List<BusBanOperateInfo> list1 = iBusBanOperateInfoService.selectBusBanOperateInfoList(busBanOperateInfo);
|
||||||
|
if (list1.size() > 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
// 当日此店铺营销限额
|
||||||
|
int quota = iBusReturnVisitInfoService.countByToday(storeInfo.getStoreCode());
|
||||||
|
if (quota >= busStoreConfigInfo.getQuota()) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
redisTemplate.opsForValue().set(busStoreConfigInfo.getStoreCode() + now.format(dateTimeFormatterNow), quota + "");
|
||||||
|
BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
||||||
|
fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||||
|
List<BusFifteenInfo> listInfo = fifteenInfoService.selectBusFifteenInfoList(fifteenInfo);
|
||||||
|
if (listInfo.size() == 0) {
|
||||||
|
System.out.println("话术:" + content + "; order" + busOrderInfo.toString());
|
||||||
|
// aiService.sendAiTask(content,busOrderInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addAiTaskTest(String apiKey, String content, BusOrderInfo busOrderInfo) {
|
||||||
// String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
|
// String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
|
||||||
String phoneNo = busOrderInfo.getPrivcyPhone().split(",")[0];
|
String phoneNo = busOrderInfo.getPrivcyPhone().split(",")[0];
|
||||||
String virtualPhone = busOrderInfo.getPrivcyPhone().split(",")[1];
|
String virtualPhone = busOrderInfo.getPrivcyPhone().split(",")[1];
|
||||||
Map<String, String> header = new HashMap<>();
|
Map<String, String> header = new HashMap<>();
|
||||||
header.put("Accept", "application/json");
|
header.put("Accept", "application/json");
|
||||||
header.put("Content-Type", "application/json;charset=utf-8");
|
header.put("Content-Type", "application/json;charset=utf-8");
|
||||||
String requestJson = "{\"api_key\": \"" + apiKey + "\",\"user_sn\": \"" + userSn + "\",\"source\": \"商户\",\"project_sn\": \"" + content + "\",\"ai_user_sn\": \""+aiUserSn+"\",\"is_zidong\": \"on\",\"client_info_json\": {\"data\": [{\"姓名\": \"客户\",\"电话\": \"" + phoneNo + "\",\"备注\": \"下单"+busOrderInfo.getOrderCount()+"次\",\"虚拟分机号\": \"" + virtualPhone + "\"}]},\"is_open_second_dialing\": \"1\",\n" +
|
String requestJson = "{\"api_key\": \"" + apiKey + "\",\"user_sn\": \"" + userSn + "\",\"source\": \"商户\",\"project_sn\": \"" + content + "\",\"ai_user_sn\": \"" + aiUserSn + "\",\"is_zidong\": \"on\",\"client_info_json\": {\"data\": [{\"姓名\": \"客户\",\"电话\": \"" + phoneNo + "\",\"备注\": \"下单" + busOrderInfo.getOrderCount() + "次\",\"虚拟分机号\": \"" + virtualPhone + "\"}]},\"is_open_second_dialing\": \"1\",\n" +
|
||||||
"\"is_open_remove_duplication\": \"0\",\"is_append\": \"0\"}";
|
"\"is_open_remove_duplication\": \"0\",\"is_append\": \"0\"}";
|
||||||
String requestUrl = "https://ai002.ciopaas.com/api/addJsonOfAsync";
|
String requestUrl = "https://ai002.ciopaas.com/api/addJsonOfAsync";
|
||||||
String requestResult = HttpClientUtilT.doPostJson(requestUrl, header, requestJson);
|
String requestResult = HttpClientUtilT.doPostJson(requestUrl, header, requestJson);
|
||||||
|
@ -267,8 +382,8 @@ public class AiServiceImpl implements IAiService
|
||||||
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
|
fifteenInfo.setLastVisitTime(LocalDateTime.now().toString());
|
||||||
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||||
|
|
||||||
} else if("20005".equals(jo.getString("code"))||"20006".equals(jo.getString("code"))) {
|
} else if ("20005".equals(jo.getString("code")) || "20006".equals(jo.getString("code"))) {
|
||||||
sendAiTask(content,busOrderInfo);
|
sendAiTask(content, busOrderInfo);
|
||||||
} else {
|
} else {
|
||||||
// TODO: 2024/7/10 失败原因判断 是否继续循环
|
// TODO: 2024/7/10 失败原因判断 是否继续循环
|
||||||
System.out.println("建立任务接口返回错误: " + jo.toString());
|
System.out.println("建立任务接口返回错误: " + jo.toString());
|
||||||
|
@ -281,28 +396,29 @@ public class AiServiceImpl implements IAiService
|
||||||
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
BusOrderInfo orderInfo = new BusOrderInfo();
|
BusOrderInfo orderInfo = new BusOrderInfo();
|
||||||
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
||||||
orderInfo.setPrivcyPhone(aiInfo.getPhone()+","+aiInfo.getVirtualExtensionNumber());
|
orderInfo.setPrivcyPhone(aiInfo.getPhone() + "," + aiInfo.getVirtualExtensionNumber());
|
||||||
returnVisitInfo.setPhoneNumber(aiInfo.getPhone()+","+aiInfo.getVirtualExtensionNumber());
|
returnVisitInfo.setPhoneNumber(aiInfo.getPhone() + "," + aiInfo.getVirtualExtensionNumber());
|
||||||
List<BusReturnVisitInfo> list = returnVisitInfoService.selectBusReturnVisitInfoList(returnVisitInfo);
|
List<BusReturnVisitInfo> list = returnVisitInfoService.selectBusReturnVisitInfoList(returnVisitInfo);
|
||||||
if(list.size() == 1){
|
if (list.size() == 1) {
|
||||||
returnVisitInfo.setId(list.get(0).getId());
|
returnVisitInfo.setId(list.get(0).getId());
|
||||||
returnVisitInfo.setFinishTime(format.parse(aiInfo.getDisconnectedAt()));
|
returnVisitInfo.setFinishTime(format.parse(aiInfo.getDisconnectedAt()));
|
||||||
returnVisitInfoService.updateBusReturnVisitInfo(returnVisitInfo);
|
returnVisitInfoService.updateBusReturnVisitInfo(returnVisitInfo);
|
||||||
}
|
}
|
||||||
List<BusOrderInfo> temp = orderInfoService.selectBusOrderInfoList(orderInfo);
|
List<BusOrderInfo> temp = orderInfoService.selectBusOrderInfoList(orderInfo);
|
||||||
if(temp.size() > 0){
|
if (temp.size() > 0) {
|
||||||
BusStoreInfo storeInfo = new BusStoreInfo();
|
BusStoreInfo storeInfo = new BusStoreInfo();
|
||||||
storeInfo.setStoreCode(temp.get(0).getStoreCode());
|
storeInfo.setStoreCode(temp.get(0).getStoreCode());
|
||||||
List<BusStoreInfo> tempStore = storeInfoService.selectBusStoreInfoList(storeInfo);
|
List<BusStoreInfo> tempStore = storeInfoService.selectBusStoreInfoList(storeInfo);
|
||||||
if (tempStore.size() > 0){
|
if (tempStore.size() > 0) {
|
||||||
BusAgentInfo agentInfo = new BusAgentInfo();
|
BusAgentInfo agentInfo = new BusAgentInfo();
|
||||||
agentInfo.setAgentAccount(tempStore.get(0).getBindUser());
|
agentInfo.setAgentAccount(tempStore.get(0).getBindUser());
|
||||||
List<BusAgentInfo> agentInfoL = agentInfoService.selectBusAgentInfoList(agentInfo);
|
List<BusAgentInfo> agentInfoL = agentInfoService.selectBusAgentInfoList(agentInfo);
|
||||||
if (agentInfoL.size() > 0) {
|
if (agentInfoL.size() > 0) {
|
||||||
BusAgentInfo busAgentInfo = agentInfoL.get(0);
|
BusAgentInfo busAgentInfo = agentInfoL.get(0);
|
||||||
int a = (Integer.valueOf(aiInfo.getTalktimes()) / 60) + 1;
|
int a = (Integer.valueOf(aiInfo.getTalktimes()) / 60) + 1;
|
||||||
int reduce = busAgentInfo.getIntegral() - a;
|
int reduce = busAgentInfo.getAiDurationBalance() - a;
|
||||||
busAgentInfo.setIntegral(reduce);
|
busAgentInfo.setAiDurationBalance(reduce);
|
||||||
|
busAgentInfo.setAiRealTimeNum(0);
|
||||||
agentInfoService.updateBusAgentInfo(busAgentInfo);
|
agentInfoService.updateBusAgentInfo(busAgentInfo);
|
||||||
|
|
||||||
BusIntegralRecord record = new BusIntegralRecord();
|
BusIntegralRecord record = new BusIntegralRecord();
|
||||||
|
|
|
@ -21,6 +21,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
<result property="delStatus" column="del_status" />
|
<result property="delStatus" column="del_status" />
|
||||||
<result property="integral" column="integral" />
|
<result property="integral" column="integral" />
|
||||||
<result property="createTime" column="create_time" />
|
<result property="createTime" column="create_time" />
|
||||||
|
<result property="aiRealTimeNum" column="ai_real_time_num" />
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<sql id="selectBusAgentInfoVo">
|
<sql id="selectBusAgentInfoVo">
|
||||||
|
|
Loading…
Reference in New Issue