diff --git a/ruoyi-system/src/main/java/com/ruoyi/business/domain/MqDataInfo.java b/ruoyi-system/src/main/java/com/ruoyi/business/domain/MqDataInfo.java index 413b067..ee94014 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/business/domain/MqDataInfo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/business/domain/MqDataInfo.java @@ -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; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/business/mapper/BusReturnVisitInfoMapper.java b/ruoyi-system/src/main/java/com/ruoyi/business/mapper/BusReturnVisitInfoMapper.java index c926b9d..e9a8104 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/business/mapper/BusReturnVisitInfoMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/business/mapper/BusReturnVisitInfoMapper.java @@ -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 returnVisitInfoList(@Param("privcyPhone") String privcyPhone); + int returnVisitInfoList(@Param("privcyPhone") String privcyPhone); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiConsumer.java b/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiConsumer.java index e36c280..0cf607c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiConsumer.java +++ b/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiConsumer.java @@ -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,47 +32,245 @@ 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 { + @Override public void onMessage(MqDataInfo mqDataInfo) { - 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(); - int a = 1; - int reduce = busAgentInfo.getAiDurationBalance() - a; - busAgentInfo.setAiDurationBalance(reduce); - agentInfoService.updateBusAgentInfo(busAgentInfo); + 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 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 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; + } + } - BusIntegralRecord record = new BusIntegralRecord(); - record.setAccount(busAgentInfo.getAgentAccount()); - record.setIntegralUpdateTime(new Date()); - record.setUpdateType("消耗账分"); - record.setIntegralUpdateNum(a); - record.setIntegralBalance(reduce); - record.setRemark(mqDataInfo.getBusOrderInfo().getPrivcyPhone()); - record.setAgentRemark("sms"); - integralRecordService.insertBusIntegralRecord(record); - returnVisitInfo.setIsCharging("sms"); - }else{ - System.out.println("未配置营销渠道====================="); - } - List list2 = busReturnVisitInfoMapper.selectBusReturnVisitInfoList(returnVisitInfo); - if (list2.size() > 0) { - System.out.println("修改营销事件====================="); - returnVisitInfo.setId(list2.get(0).getId()); - returnVisitInfo.setReturnVisitTime(new Date()); - busReturnVisitInfoMapper.updateBusReturnVisitInfo(returnVisitInfo); - } + // 下单次数 + 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 list1 = iBusBanOperateInfoService.selectBusBanOperateInfoList(busBanOperateInfo); + if (list1.size() > 0) { + System.out.println("黑名单拦截成功"); + return; + } + 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 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); + 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("其他"); + }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 list2 = busReturnVisitInfoMapper.selectBusReturnVisitInfoList(returnVisitInfo); + if (list2.size() > 0) { + System.out.println("修改营销事件====================="); + returnVisitInfo.setId(list2.get(0).getId()); + 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")); } } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java index 9a3e49d..5a5755a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/business/service/impl/AiServiceImpl.java @@ -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,251 +217,78 @@ 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 storeInfoList = storeInfoService.selectBusStoreInfoList(storeInfo); for (BusStoreInfo busStoreInfo : storeInfoList) { - if ("2".equals(busStoreInfo.getReturnVisitStatus())) { - System.out.println("未开启营销的跳出"); - continue;// 未开启营销的跳出 - } - // 配置规则 - BusStoreConfigInfo busStoreConfigInfo = new BusStoreConfigInfo(); - busStoreConfigInfo.setStoreCode(busStoreInfo.getStoreCode()); - busStoreConfigInfo = iBusStoreConfigInfoService.selectBusStoreConfigInfoList(busStoreConfigInfo).get(0); + try { + if ("2".equals(busStoreInfo.getReturnVisitStatus())) { + System.out.println("未开启营销的跳出"); + continue;// 未开启营销的跳出 + } + // 配置规则 + BusStoreConfigInfo busStoreConfigInfo = new BusStoreConfigInfo(); + busStoreConfigInfo.setStoreCode(busStoreInfo.getStoreCode()); + busStoreConfigInfo = iBusStoreConfigInfoService.selectBusStoreConfigInfoList(busStoreConfigInfo).get(0); - List list = new ArrayList<>(); - if ("1".equals(busStoreInfo.getSelfDeliveryStatus())) { - System.out.println("自动营销"); - list = orderInfoService.selectBusOrderInfoListToAi(busStoreInfo.getStoreCode(), t1, t2); - } else if ("2".equals(busStoreInfo.getSelfDeliveryStatus())) { - System.out.println("自配送营销"); - 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 agentInfoL = agentInfoService.selectBusAgentInfoList(agentInfo); - if (agentInfoL.size() > 0) { - int cha = agentInfoL.get(0).getAiDurationBalance() - agentInfoL.get(0).getAiRealTimeNum(); + List list = new ArrayList<>(); + if ("1".equals(busStoreInfo.getSelfDeliveryStatus())) { + System.out.println("自动营销"); + list = orderInfoService.selectBusOrderInfoListToAi(busStoreInfo.getStoreCode(), t1, t2); + } else if ("2".equals(busStoreInfo.getSelfDeliveryStatus())) { + System.out.println("自配送营销"); + LocalDateTime tN = now.minusMinutes(busStoreConfigInfo.getSelfDeliveryDuration()); + String time = tN.format(dateTimeFormatter); + // 自配送前推时间处理 + list = orderInfoService.selectBusZpsOrderInfoListToAi(busStoreInfo.getStoreCode(), time); + } + if (list.size() == 0) continue; + + BusAgentInfo agentInfo = agentInfoService.selectBusAgentInfoById(busStoreInfo.getBindId()); + List 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()); - } - agentInfoService.updateBusAgentInfo(agentInfoL.get(0)); - } else continue; - List 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())){ + agentInfo.setAiRealTimeNum(agentInfo.getAiDurationBalance()); + } else if(cha < 0){ 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 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 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 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 { + for (BusOrderInfo busOrderInfo : newList) { 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 { - aiProducer.sendInfo(mqDataInfo); - } catch (Exception e) { - e.printStackTrace(); - } + mqDataInfo.setBusStoreConfigInfo(busStoreConfigInfo); +// mqDataInfo.se + aiProducer.sendInfo(mqDataInfo); } - -// 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 list2 = busReturnVisitInfoMapper.selectBusReturnVisitInfoList(returnVisitInfo); -// if (list2.size() > 0) { -// System.out.println("修改营销事件====================="); -// returnVisitInfo.setId(list2.get(0).getId()); -// returnVisitInfo.setReturnVisitTime(new Date()); -// busReturnVisitInfoMapper.updateBusReturnVisitInfo(returnVisitInfo); -// } + }catch (Exception e){ + e.printStackTrace(); + 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"); diff --git a/ruoyi-system/src/main/resources/mapper/business/BusReturnVisitInfoMapper.xml b/ruoyi-system/src/main/resources/mapper/business/BusReturnVisitInfoMapper.xml index 800c99a..a7f6407 100644 --- a/ruoyi-system/src/main/resources/mapper/business/BusReturnVisitInfoMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/business/BusReturnVisitInfoMapper.xml @@ -128,12 +128,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + 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 - + GROUP BY phone_number + ) a