1; 优化营销队列
This commit is contained in:
parent
1a7494076c
commit
7c28090820
|
@ -1,5 +1,7 @@
|
|||
package com.ruoyi.business.domain;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
public class MqDataInfo{
|
||||
|
||||
private String content;
|
||||
|
@ -7,6 +9,17 @@ public class MqDataInfo{
|
|||
|
||||
private BusOrderInfo busOrderInfo;
|
||||
private BusAgentInfo agentInfo;
|
||||
private BusStoreInfo storeInfo;
|
||||
|
||||
private BusStoreConfigInfo busStoreConfigInfo;
|
||||
|
||||
public BusStoreConfigInfo getBusStoreConfigInfo() {
|
||||
return busStoreConfigInfo;
|
||||
}
|
||||
|
||||
public void setBusStoreConfigInfo(BusStoreConfigInfo busStoreConfigInfo) {
|
||||
this.busStoreConfigInfo = busStoreConfigInfo;
|
||||
}
|
||||
|
||||
public BusAgentInfo getAgentInfo() {
|
||||
return agentInfo;
|
||||
|
@ -39,4 +52,12 @@ public class MqDataInfo{
|
|||
public void setChannel(String channel) {
|
||||
this.channel = channel;
|
||||
}
|
||||
|
||||
public BusStoreInfo getStoreInfo() {
|
||||
return storeInfo;
|
||||
}
|
||||
|
||||
public void setStoreInfo(BusStoreInfo storeInfo) {
|
||||
this.storeInfo = storeInfo;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,5 +70,5 @@ public interface BusReturnVisitInfoMapper
|
|||
int countByToday(String storeCode);
|
||||
int getByDate(@Param("storeCode") String storeCode, @Param("sT") String sT, @Param("eT") String eT);
|
||||
|
||||
Collection<BusReturnVisitInfo> returnVisitInfoList(@Param("privcyPhone") String privcyPhone);
|
||||
int returnVisitInfoList(@Param("privcyPhone") String privcyPhone);
|
||||
}
|
||||
|
|
|
@ -3,17 +3,23 @@ package com.ruoyi.business.service.impl;
|
|||
import com.alibaba.fastjson.JSON;
|
||||
import com.ruoyi.business.domain.*;
|
||||
import com.ruoyi.business.mapper.BusReturnVisitInfoMapper;
|
||||
import com.ruoyi.business.service.IAiService;
|
||||
import com.ruoyi.business.service.IBusAgentInfoService;
|
||||
import com.ruoyi.business.service.IBusIntegralRecordService;
|
||||
import com.ruoyi.business.service.*;
|
||||
import com.ruoyi.common.utils.StringUtils;
|
||||
import com.ruoyi.system.mapper.SysDictDataMapper;
|
||||
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
|
||||
import org.apache.rocketmq.spring.core.RocketMQListener;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.redis.core.StringRedisTemplate;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Component
|
||||
public class AiConsumer {
|
||||
|
@ -26,22 +32,175 @@ public class AiConsumer {
|
|||
private IBusIntegralRecordService integralRecordService;
|
||||
@Autowired
|
||||
private BusReturnVisitInfoMapper busReturnVisitInfoMapper;
|
||||
@Autowired
|
||||
private IBusStoreConfigInfoService iBusStoreConfigInfoService;
|
||||
|
||||
@Autowired
|
||||
private IBusOrderInfoService orderInfoService;
|
||||
@Autowired
|
||||
private IBusStoreInfoService storeInfoService;
|
||||
@Autowired
|
||||
private IBusFifteenInfoService fifteenInfoService;
|
||||
|
||||
@Autowired
|
||||
private IBusBanOperateInfoService iBusBanOperateInfoService;
|
||||
|
||||
private static DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
||||
|
||||
@Autowired
|
||||
private SysDictDataMapper sysDictDataMapper;
|
||||
|
||||
@Service
|
||||
@RocketMQMessageListener(topic="ai",selectorExpression = "tag1",consumerGroup = "abc")
|
||||
public class consumer implements RocketMQListener<MqDataInfo> {
|
||||
|
||||
|
||||
@Override
|
||||
public void onMessage(MqDataInfo mqDataInfo) {
|
||||
long startTime = System.currentTimeMillis();
|
||||
System.out.println("开始======="+startTime);
|
||||
BusAgentInfo agentInfo = mqDataInfo.getAgentInfo();
|
||||
BusStoreInfo busStoreInfo = mqDataInfo.getStoreInfo();
|
||||
BusOrderInfo busOrderInfo = mqDataInfo.getBusOrderInfo();
|
||||
BusStoreConfigInfo busStoreConfigInfo = mqDataInfo.getBusStoreConfigInfo();
|
||||
// try {
|
||||
// if ("2".equals(busStoreInfo.getReturnVisitStatus())) {
|
||||
// System.out.println("未开启营销的跳出");
|
||||
// return;// 未开启营销的跳出
|
||||
// }
|
||||
// // 配置规则
|
||||
// BusStoreConfigInfo busStoreConfigInfo = new BusStoreConfigInfo();
|
||||
// busStoreConfigInfo.setStoreCode(busStoreInfo.getStoreCode());
|
||||
// busStoreConfigInfo = iBusStoreConfigInfoService.selectBusStoreConfigInfoList(busStoreConfigInfo).get(0);
|
||||
//
|
||||
// List<BusOrderInfo> list = new ArrayList<>();
|
||||
// if ("1".equals(busStoreInfo.getSelfDeliveryStatus())) {
|
||||
// System.out.println("自动营销");
|
||||
// list = orderInfoService.selectBusOrderInfoListToAi(busStoreInfo.getStoreCode(), mqDataInfo.getT1(), mqDataInfo.getT2());
|
||||
// } else if ("2".equals(busStoreInfo.getSelfDeliveryStatus())) {
|
||||
// System.out.println("自配送营销");
|
||||
// LocalDateTime dateTime = LocalDateTime.parse(mqDataInfo.getNow(), dateTimeFormatter);
|
||||
// LocalDateTime tN = dateTime.minusMinutes(busStoreConfigInfo.getSelfDeliveryDuration());
|
||||
// String time = tN.format(dateTimeFormatter);
|
||||
// // 自配送前推时间处理
|
||||
// list = orderInfoService.selectBusZpsOrderInfoListToAi(busStoreInfo.getStoreCode(), time);
|
||||
// }
|
||||
// if (list.size() == 0) return;
|
||||
//
|
||||
// BusAgentInfo agentInfo = agentInfoService.selectBusAgentInfoById(busStoreInfo.getBindId());
|
||||
// List<BusOrderInfo> newList = list.stream().distinct().collect(Collectors.toList());
|
||||
// if (agentInfo == null || "2".equals(agentInfo.getDelStatus())) {
|
||||
// return;
|
||||
// }
|
||||
//// int cha = agentInfoL.get(0).getAiDurationBalance() - agentInfoL.get(0).getAiRealTimeNum();
|
||||
// int cha = agentInfo.getAiDurationBalance();
|
||||
// if (cha < list.size()&&(cha - 1)>0) {
|
||||
// list.subList(0, cha - 1);
|
||||
// System.out.println("积分不足截取部分订单营销");
|
||||
// agentInfo.setAiRealTimeNum(agentInfo.getAiDurationBalance());
|
||||
// } else if(cha < 0){
|
||||
// return;
|
||||
// }
|
||||
//// agentInfoService.updateBusAgentInfo(agentInfoL.get(0));
|
||||
//// } else break;
|
||||
// for (BusOrderInfo busOrderInfo : newList) {
|
||||
try {
|
||||
if(busReturnVisitInfoMapper.returnVisitInfoList(busOrderInfo.getPrivcyPhone())>0){
|
||||
return;
|
||||
}
|
||||
// 拼好饭
|
||||
if ("N".equals(busStoreConfigInfo.getIsSpliceOrder())) { // 否:开启拼好饭订单过滤(不营销拼好饭)
|
||||
if ("2".equals(busOrderInfo.getIsPhf())) {//否:
|
||||
System.out.println("拼好饭拦截成功");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// 下单次数
|
||||
if (StringUtils.isEmpty(busOrderInfo.getOrderCount())){
|
||||
return;
|
||||
}
|
||||
int count = Integer.valueOf(busOrderInfo.getOrderCount());
|
||||
if (busStoreConfigInfo.getMaxOrderNum() < count
|
||||
|| count < busStoreConfigInfo.getMinOrderNum()) {
|
||||
System.out.println("下单次数拦截成功");
|
||||
return;
|
||||
}
|
||||
// 营销时间区间
|
||||
LocalTime start = LocalTime.parse(busStoreConfigInfo.getStartTime());
|
||||
LocalTime end = LocalTime.parse(busStoreConfigInfo.getEndTime());
|
||||
// 时区
|
||||
// ZoneId zoneId = ZoneId.systemDefault();
|
||||
LocalDateTime orderDateTime = LocalDateTime.parse(busOrderInfo.getCompleteTime(), dateTimeFormatter);
|
||||
// LocalDateTime orderDateTime = busOrderInfo.getOrderTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||
LocalTime orderTime = orderDateTime.toLocalTime();
|
||||
if (orderTime.isBefore(start) || end.isBefore(orderTime)) {
|
||||
System.out.println("营销时间区间拦截成功");
|
||||
return;
|
||||
}
|
||||
// 话术判断 08:00 10:00 11:30 13:30 18:00 20:00
|
||||
String content = "";
|
||||
if("AI".equals(busStoreInfo.getMarketingChannels())){
|
||||
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)) {
|
||||
if(busStoreConfigInfo.getContent1()==null){
|
||||
return;
|
||||
}
|
||||
System.out.println("ai话术1");
|
||||
content = busStoreConfigInfo.getContent1();
|
||||
} else if (time2.isBefore(orderTime) && orderTime.isBefore(time3)) {
|
||||
if(busStoreConfigInfo.getContent2()==null){
|
||||
return;
|
||||
}
|
||||
System.out.println("ai话术2");
|
||||
content = busStoreConfigInfo.getContent2();
|
||||
} else if (time3.isBefore(orderTime) && orderTime.isBefore(time4)) {
|
||||
if(busStoreConfigInfo.getContent3()==null){
|
||||
return;
|
||||
}
|
||||
System.out.println("ai话术3");
|
||||
content = busStoreConfigInfo.getContent3();
|
||||
} else {
|
||||
if(busStoreConfigInfo.getContent4()==null){
|
||||
return;
|
||||
}
|
||||
System.out.println("ai话术4");
|
||||
content = busStoreConfigInfo.getContent4();
|
||||
}
|
||||
}else if("sms".equals(busStoreInfo.getMarketingChannels())){
|
||||
System.out.println("短信话术");
|
||||
content = sysDictDataMapper.selectDictLabel("bus_default_sms_script","default_script");
|
||||
}
|
||||
// 当日此店铺营销限额
|
||||
if ("1".equals(busStoreConfigInfo.getQuotaStatus()) && busStoreConfigInfo.getQuota() != 0){
|
||||
int quota = busReturnVisitInfoMapper.countByToday(busStoreInfo.getStoreCode());
|
||||
if (quota >= busStoreConfigInfo.getQuota()) {
|
||||
System.out.println("当日此店铺营销限额拦截成功");
|
||||
return;
|
||||
}
|
||||
}
|
||||
//加入免运营订单-黑名单的 不营销跳出
|
||||
BusBanOperateInfo busBanOperateInfo = new BusBanOperateInfo();
|
||||
busBanOperateInfo.setBanOperateCode(busOrderInfo.getCustomId());
|
||||
busBanOperateInfo.setBanStatus("1");
|
||||
List<BusBanOperateInfo> list1 = iBusBanOperateInfoService.selectBusBanOperateInfoList(busBanOperateInfo);
|
||||
if (list1.size() > 0) {
|
||||
System.out.println("黑名单拦截成功");
|
||||
return;
|
||||
}
|
||||
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
||||
System.out.println("==============================="+returnVisitInfo);
|
||||
returnVisitInfo.setPhoneNumber(mqDataInfo.getBusOrderInfo().getPrivcyPhone());
|
||||
if("AI".equals(mqDataInfo.getChannel())){
|
||||
// aiService.sendAiTask(mqDataInfo.getContent(),mqDataInfo.getBusOrderInfo());
|
||||
returnVisitInfo.setIsCharging("AI");
|
||||
}else if("sms".equals(mqDataInfo.getChannel())){
|
||||
// aiService.sendSmsTask(mqDataInfo.getContent(),mqDataInfo.getBusOrderInfo());
|
||||
BusAgentInfo busAgentInfo = mqDataInfo.getAgentInfo();
|
||||
returnVisitInfo.setPhoneNumber(busOrderInfo.getPrivcyPhone());
|
||||
// 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("15天拦截=====================");
|
||||
BusAgentInfo busAgentInfo = agentInfo;
|
||||
int a = 1;
|
||||
int reduce = busAgentInfo.getAiDurationBalance() - a;
|
||||
busAgentInfo.setAiDurationBalance(reduce);
|
||||
|
@ -53,13 +212,48 @@ public class AiConsumer {
|
|||
record.setUpdateType("消耗账分");
|
||||
record.setIntegralUpdateNum(a);
|
||||
record.setIntegralBalance(reduce);
|
||||
record.setRemark(mqDataInfo.getBusOrderInfo().getPrivcyPhone());
|
||||
record.setRemark(busOrderInfo.getPrivcyPhone());
|
||||
record.setAgentRemark("其他");
|
||||
integralRecordService.insertBusIntegralRecord(record);
|
||||
returnVisitInfo.setIsCharging("其他");
|
||||
}else {
|
||||
if("AI".equals(busStoreInfo.getMarketingChannels())){
|
||||
aiService.sendAiTask(content,busOrderInfo);
|
||||
returnVisitInfo.setIsCharging("AI");
|
||||
//定时任务15天之前的删除记录 todo
|
||||
fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
}else if("sms".equals(busStoreInfo.getMarketingChannels())){
|
||||
aiService.sendSmsTask(content,busOrderInfo);
|
||||
BusAgentInfo busAgentInfo =agentInfo;
|
||||
int a = 1;
|
||||
int reduce = busAgentInfo.getAiDurationBalance() - a;
|
||||
busAgentInfo.setAiDurationBalance(reduce);
|
||||
agentInfoService.updateBusAgentInfo(busAgentInfo);
|
||||
|
||||
BusIntegralRecord record = new BusIntegralRecord();
|
||||
record.setAccount(busAgentInfo.getAgentAccount());
|
||||
record.setIntegralUpdateTime(new Date());
|
||||
record.setUpdateType("消耗账分");
|
||||
record.setIntegralUpdateNum(a);
|
||||
record.setIntegralBalance(reduce);
|
||||
record.setRemark(busOrderInfo.getPrivcyPhone());
|
||||
record.setAgentRemark("sms");
|
||||
integralRecordService.insertBusIntegralRecord(record);
|
||||
returnVisitInfo.setIsCharging("sms");
|
||||
//定时任务15天之前的删除记录 todo
|
||||
fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
}else{
|
||||
System.out.println("未配置营销渠道=====================");
|
||||
return;
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 判断是否营销的依据!!!
|
||||
*/
|
||||
List<BusReturnVisitInfo> list2 = busReturnVisitInfoMapper.selectBusReturnVisitInfoList(returnVisitInfo);
|
||||
if (list2.size() > 0) {
|
||||
System.out.println("修改营销事件=====================");
|
||||
|
@ -67,6 +261,16 @@ public class AiConsumer {
|
|||
returnVisitInfo.setReturnVisitTime(new Date());
|
||||
busReturnVisitInfoMapper.updateBusReturnVisitInfo(returnVisitInfo);
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
return;
|
||||
}
|
||||
// }
|
||||
// }catch (Exception e){
|
||||
// e.printStackTrace();
|
||||
// return;
|
||||
// }
|
||||
System.out.println(("一共耗时time: " + (System.currentTimeMillis() - startTime) / 1000 + " s"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -48,16 +48,10 @@ public class AiServiceImpl implements IAiService {
|
|||
@Autowired
|
||||
private BusReturnVisitInfoMapper busReturnVisitInfoMapper;
|
||||
@Autowired
|
||||
private IBusFifteenInfoService fifteenInfoService;
|
||||
@Autowired
|
||||
private IBusIntegralRecordService integralRecordService;
|
||||
@Autowired
|
||||
private StringRedisTemplate redisTemplate;
|
||||
@Autowired
|
||||
private IBusStoreConfigInfoService iBusStoreConfigInfoService;
|
||||
@Autowired
|
||||
private IBusBanOperateInfoService iBusBanOperateInfoService;
|
||||
@Autowired
|
||||
private BusTencentProperties busTencentProperties;
|
||||
|
||||
@Autowired
|
||||
|
@ -114,10 +108,10 @@ public class AiServiceImpl implements IAiService {
|
|||
System.out.println("追加任务返回: ============taskMainId,taskMainSn===========" + taskMainId + "," + taskMainSn);
|
||||
|
||||
//定时任务15天之前的删除记录 todo
|
||||
BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
||||
fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
// BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
||||
// fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
// fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
// fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
|
||||
} else if ("20005".equals(jo.getString("code")) || "20006".equals(jo.getString("code"))) {
|
||||
System.out.println("建立任务接口返回错误: " + jo.toString());
|
||||
|
@ -206,7 +200,6 @@ public class AiServiceImpl implements IAiService {
|
|||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public synchronized void sendAiTask(String content, BusOrderInfo busOrderInfo) {
|
||||
try {
|
||||
String apiKey = Optional.ofNullable(redisTemplate.opsForValue().get("apiKey")).orElse(null);
|
||||
|
@ -224,20 +217,24 @@ public class AiServiceImpl implements IAiService {
|
|||
}
|
||||
}
|
||||
|
||||
@Autowired
|
||||
private IBusStoreConfigInfoService iBusStoreConfigInfoService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void sendToAi() {
|
||||
System.out.println("开始===");
|
||||
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
LocalDateTime t30 = now.minusMinutes(30);
|
||||
LocalDateTime t35 = now.minusMinutes(35);
|
||||
LocalDateTime t10 = now.minusMinutes(10);
|
||||
String t1 = t30.format(dateTimeFormatter);
|
||||
String t1 = t35.format(dateTimeFormatter);
|
||||
String t2 = t10.format(dateTimeFormatter);
|
||||
|
||||
BusStoreInfo storeInfo = new BusStoreInfo();
|
||||
List<BusStoreInfo> storeInfoList = storeInfoService.selectBusStoreInfoList(storeInfo);
|
||||
for (BusStoreInfo busStoreInfo : storeInfoList) {
|
||||
try {
|
||||
if ("2".equals(busStoreInfo.getReturnVisitStatus())) {
|
||||
System.out.println("未开启营销的跳出");
|
||||
continue;// 未开启营销的跳出
|
||||
|
@ -259,216 +256,39 @@ public class AiServiceImpl implements IAiService {
|
|||
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();
|
||||
|
||||
BusAgentInfo agentInfo = agentInfoService.selectBusAgentInfoById(busStoreInfo.getBindId());
|
||||
List<BusOrderInfo> newList = list.stream().distinct().collect(Collectors.toList());
|
||||
if (agentInfo == null || "2".equals(agentInfo.getDelStatus())) {
|
||||
continue;
|
||||
}
|
||||
// int cha = agentInfoL.get(0).getAiDurationBalance() - agentInfoL.get(0).getAiRealTimeNum();
|
||||
int cha = agentInfo.getAiDurationBalance();
|
||||
if (cha < list.size()&&(cha - 1)>0) {
|
||||
list.subList(0, cha - 1);
|
||||
System.out.println("积分不足截取部分订单营销");
|
||||
agentInfoL.get(0).setAiRealTimeNum(agentInfoL.get(0).getAiDurationBalance());
|
||||
} else {
|
||||
agentInfoL.get(0).setAiRealTimeNum(agentInfoL.get(0).getAiRealTimeNum() + list.size());
|
||||
agentInfo.setAiRealTimeNum(agentInfo.getAiDurationBalance());
|
||||
} else if(cha < 0){
|
||||
continue;
|
||||
}
|
||||
agentInfoService.updateBusAgentInfo(agentInfoL.get(0));
|
||||
} else continue;
|
||||
List<BusOrderInfo> newList = list.stream().distinct().collect(Collectors.toList());
|
||||
for (BusOrderInfo busOrderInfo : newList) {
|
||||
// 拼好饭
|
||||
if ("N".equals(busStoreConfigInfo.getIsSpliceOrder())) { // 否:开启拼好饭订单过滤(不营销拼好饭)
|
||||
if ("2".equals(busOrderInfo.getIsPhf())) {//否:
|
||||
System.out.println("拼好饭拦截成功");
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
// 下单次数
|
||||
if (StringUtils.isEmpty(busOrderInfo.getOrderCount())){
|
||||
continue;
|
||||
}
|
||||
int count = Integer.valueOf(busOrderInfo.getOrderCount());
|
||||
if (busStoreConfigInfo.getMaxOrderNum() < count
|
||||
|| count < busStoreConfigInfo.getMinOrderNum()) {
|
||||
System.out.println("下单次数拦截成功");
|
||||
continue;
|
||||
}
|
||||
// 营销时间区间
|
||||
LocalTime start = LocalTime.parse(busStoreConfigInfo.getStartTime());
|
||||
LocalTime end = LocalTime.parse(busStoreConfigInfo.getEndTime());
|
||||
// 时区
|
||||
// ZoneId zoneId = ZoneId.systemDefault();
|
||||
LocalDateTime orderDateTime = LocalDateTime.parse(busOrderInfo.getCompleteTime(), dateTimeFormatter);
|
||||
// LocalDateTime orderDateTime = busOrderInfo.getOrderTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();
|
||||
LocalTime orderTime = orderDateTime.toLocalTime();
|
||||
if (orderTime.isBefore(start) || end.isBefore(orderTime)) {
|
||||
System.out.println("营销时间区间拦截成功");
|
||||
continue;
|
||||
}
|
||||
// 话术判断 08:00 10:00 11:30 13:30 18:00 20:00
|
||||
String content = "";
|
||||
if("AI".equals(busStoreInfo.getMarketingChannels())){
|
||||
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)) {
|
||||
if(busStoreConfigInfo.getContent1()==null){
|
||||
continue;
|
||||
}
|
||||
System.out.println("ai话术1");
|
||||
content = busStoreConfigInfo.getContent1();
|
||||
} else if (time2.isBefore(orderTime) && orderTime.isBefore(time3)) {
|
||||
if(busStoreConfigInfo.getContent2()==null){
|
||||
continue;
|
||||
}
|
||||
System.out.println("ai话术2");
|
||||
content = busStoreConfigInfo.getContent2();
|
||||
} else if (time3.isBefore(orderTime) && orderTime.isBefore(time4)) {
|
||||
if(busStoreConfigInfo.getContent3()==null){
|
||||
continue;
|
||||
}
|
||||
System.out.println("ai话术3");
|
||||
content = busStoreConfigInfo.getContent3();
|
||||
} else {
|
||||
if(busStoreConfigInfo.getContent4()==null){
|
||||
continue;
|
||||
}
|
||||
System.out.println("ai话术4");
|
||||
content = busStoreConfigInfo.getContent4();
|
||||
}
|
||||
}else if("sms".equals(busStoreInfo.getMarketingChannels())){
|
||||
System.out.println("短信话术");
|
||||
content = sysDictDataMapper.selectDictLabel("bus_default_sms_script","default_script");
|
||||
}
|
||||
if(busReturnVisitInfoMapper.returnVisitInfoList(busOrderInfo.getPrivcyPhone()).size()>0){
|
||||
continue;
|
||||
}
|
||||
// 当日此店铺营销限额
|
||||
if ("1".equals(busStoreConfigInfo.getQuotaStatus()) && busStoreConfigInfo.getQuota() != 0){
|
||||
int quota = busReturnVisitInfoMapper.countByToday(storeInfo.getStoreCode());
|
||||
if (quota >= busStoreConfigInfo.getQuota()) {
|
||||
System.out.println("当日此店铺营销限额拦截成功");
|
||||
break;
|
||||
}
|
||||
}
|
||||
//加入免运营订单-黑名单的 不营销跳出
|
||||
BusBanOperateInfo busBanOperateInfo = new BusBanOperateInfo();
|
||||
busBanOperateInfo.setBanOperateCode(busOrderInfo.getCustomId());
|
||||
busBanOperateInfo.setBanStatus("1");
|
||||
List<BusBanOperateInfo> list1 = iBusBanOperateInfoService.selectBusBanOperateInfoList(busBanOperateInfo);
|
||||
if (list1.size() > 0) {
|
||||
System.out.println("黑名单拦截成功");
|
||||
continue;
|
||||
}
|
||||
BusReturnVisitInfo returnVisitInfo = new BusReturnVisitInfo();
|
||||
returnVisitInfo.setPhoneNumber(busOrderInfo.getPrivcyPhone());
|
||||
// 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("15天拦截=====================");
|
||||
BusAgentInfo busAgentInfo = agentInfoL.get(0);
|
||||
int a = 1;
|
||||
int reduce = busAgentInfo.getAiDurationBalance() - a;
|
||||
busAgentInfo.setAiDurationBalance(reduce);
|
||||
agentInfoService.updateBusAgentInfo(busAgentInfo);
|
||||
|
||||
BusIntegralRecord record = new BusIntegralRecord();
|
||||
record.setAccount(busAgentInfo.getAgentAccount());
|
||||
record.setIntegralUpdateTime(new Date());
|
||||
record.setUpdateType("消耗账分");
|
||||
record.setIntegralUpdateNum(a);
|
||||
record.setIntegralBalance(reduce);
|
||||
record.setRemark(busOrderInfo.getPrivcyPhone());
|
||||
record.setAgentRemark("其他");
|
||||
integralRecordService.insertBusIntegralRecord(record);
|
||||
returnVisitInfo.setIsCharging("其他");
|
||||
|
||||
List<BusReturnVisitInfo> list2 = busReturnVisitInfoMapper.selectBusReturnVisitInfoList(returnVisitInfo);
|
||||
if (list2.size() > 0) {
|
||||
System.out.println("修改营销事件=====================");
|
||||
returnVisitInfo.setId(list2.get(0).getId());
|
||||
returnVisitInfo.setReturnVisitTime(new Date());
|
||||
busReturnVisitInfoMapper.updateBusReturnVisitInfo(returnVisitInfo);
|
||||
}
|
||||
|
||||
}else {
|
||||
MqDataInfo mqDataInfo = new MqDataInfo();
|
||||
mqDataInfo.setChannel(busStoreInfo.getMarketingChannels());
|
||||
mqDataInfo.setContent(content);
|
||||
mqDataInfo.setAgentInfo(agentInfo);
|
||||
mqDataInfo.setStoreInfo(busStoreInfo);
|
||||
mqDataInfo.setBusOrderInfo(busOrderInfo);
|
||||
mqDataInfo.setAgentInfo(agentInfoL.get(0));
|
||||
try {
|
||||
mqDataInfo.setBusStoreConfigInfo(busStoreConfigInfo);
|
||||
// mqDataInfo.se
|
||||
aiProducer.sendInfo(mqDataInfo);
|
||||
} catch (Exception e) {
|
||||
}
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// if (listInfo.size() == 0) {
|
||||
// System.out.println("话术:" + content + "; order" + busOrderInfo.toString());
|
||||
// if("AI".equals(busStoreInfo.getMarketingChannels())){
|
||||
// sendAiTask(content,busOrderInfo);
|
||||
// returnVisitInfo.setIsCharging("AI");
|
||||
// }else if("sms".equals(busStoreInfo.getMarketingChannels())){
|
||||
// sendSmsTask(content,busOrderInfo);
|
||||
// BusAgentInfo busAgentInfo = agentInfoL.get(0);
|
||||
// int a = 1;
|
||||
// int reduce = busAgentInfo.getAiDurationBalance() - a;
|
||||
// busAgentInfo.setAiDurationBalance(reduce);
|
||||
// agentInfoService.updateBusAgentInfo(busAgentInfo);
|
||||
//
|
||||
// BusIntegralRecord record = new BusIntegralRecord();
|
||||
// record.setAccount(busAgentInfo.getAgentAccount());
|
||||
// record.setIntegralUpdateTime(new Date());
|
||||
// record.setUpdateType("消耗账分");
|
||||
// record.setIntegralUpdateNum(a);
|
||||
// record.setIntegralBalance(reduce);
|
||||
// record.setRemark(busOrderInfo.getPrivcyPhone());
|
||||
// record.setAgentRemark("sms");
|
||||
// integralRecordService.insertBusIntegralRecord(record);
|
||||
// returnVisitInfo.setIsCharging("sms");
|
||||
// }else{
|
||||
// System.out.println("未配置营销渠道=====================");
|
||||
// }
|
||||
// }else {
|
||||
// System.out.println("15天拦截=====================");
|
||||
// BusAgentInfo busAgentInfo = agentInfoL.get(0);
|
||||
// int a = 1;
|
||||
// int reduce = busAgentInfo.getAiDurationBalance() - a;
|
||||
// busAgentInfo.setAiDurationBalance(reduce);
|
||||
// agentInfoService.updateBusAgentInfo(busAgentInfo);
|
||||
//
|
||||
// BusIntegralRecord record = new BusIntegralRecord();
|
||||
// record.setAccount(busAgentInfo.getAgentAccount());
|
||||
// record.setIntegralUpdateTime(new Date());
|
||||
// record.setUpdateType("消耗账分");
|
||||
// record.setIntegralUpdateNum(a);
|
||||
// record.setIntegralBalance(reduce);
|
||||
// record.setRemark(busOrderInfo.getPrivcyPhone());
|
||||
// record.setAgentRemark("其他");
|
||||
// integralRecordService.insertBusIntegralRecord(record);
|
||||
// returnVisitInfo.setIsCharging("其他");
|
||||
// }
|
||||
// List<BusReturnVisitInfo> list2 = busReturnVisitInfoMapper.selectBusReturnVisitInfoList(returnVisitInfo);
|
||||
// if (list2.size() > 0) {
|
||||
// System.out.println("修改营销事件=====================");
|
||||
// returnVisitInfo.setId(list2.get(0).getId());
|
||||
// returnVisitInfo.setReturnVisitTime(new Date());
|
||||
// busReturnVisitInfoMapper.updateBusReturnVisitInfo(returnVisitInfo);
|
||||
// }
|
||||
continue;
|
||||
}
|
||||
}
|
||||
System.out.println("结束===");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void sms() {
|
||||
String content = sysDictDataMapper.selectDictLabel("bus_default_sms_script","default_script");
|
||||
BusOrderInfo busOrderInfo = orderInfoService.selectBusOrderInfoById(1L);
|
||||
|
@ -495,10 +315,10 @@ public class AiServiceImpl implements IAiService {
|
|||
System.out.println(jsonObject);
|
||||
if("00".equals(jsonObject.getString("status"))){
|
||||
//定时任务15天之前的删除记录 todo
|
||||
BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
||||
fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
// BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
||||
// fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
// fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
// fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
}
|
||||
System.out.println("建立sendSmsTask成功: ");
|
||||
} catch (Exception e) {
|
||||
|
@ -529,10 +349,10 @@ public class AiServiceImpl implements IAiService {
|
|||
redisTemplate.opsForValue().set("dialTaskMainSn", taskMainSn);
|
||||
|
||||
//定时任务15天之前的删除记录 todo
|
||||
BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
||||
fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
// BusFifteenInfo fifteenInfo = new BusFifteenInfo();
|
||||
// fifteenInfo.setCustomId(busOrderInfo.getCustomId());
|
||||
// fifteenInfo.setLastVisitTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
|
||||
// fifteenInfoService.insertBusFifteenInfo(fifteenInfo);
|
||||
|
||||
} else if ("20005".equals(jo.getString("code")) || "20006".equals(jo.getString("code"))) {
|
||||
redisTemplate.delete("apiKey");
|
||||
|
|
|
@ -128,12 +128,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<select id="getByDate" resultType="java.lang.Integer">
|
||||
select count(id) from bus_return_visit_info where store_code = #{storeCode} and return_visit_time between #{sT} and #{eT}
|
||||
</select>
|
||||
<select id="returnVisitInfoList" resultType="com.ruoyi.business.domain.BusReturnVisitInfo">
|
||||
<include refid="selectBusReturnVisitInfoVo"/>
|
||||
<where>
|
||||
<if test="privcyPhone != null and privcyPhone != ''"> and phone_number = #{privcyPhone}</if>
|
||||
<select id="returnVisitInfoList" resultType="java.lang.Integer">
|
||||
SELECT count(1) from (
|
||||
select count(id) from bus_return_visit_info
|
||||
where phone_number != ''
|
||||
and phone_number = #{privcyPhone}
|
||||
and return_visit_time is not null
|
||||
</where>
|
||||
GROUP BY phone_number
|
||||
) a
|
||||
</select>
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue