diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index 05d5620..893f69a 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -28,7 +28,6 @@ import com.jd.open.api.sdk.request.kplunion.UnionOpenPromotionBysubunionidGetReq import com.jd.open.api.sdk.response.kplunion.UnionOpenCouponGiftGetResponse; import com.jd.open.api.sdk.response.kplunion.UnionOpenGoodsQueryResponse; import com.jd.open.api.sdk.response.kplunion.UnionOpenPromotionBysubunionidGetResponse; -import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import org.slf4j.Logger; @@ -286,12 +285,32 @@ public class JDUtil { List todayOrders = filterOrdersByDate(orderRows, 0); OrderStats stats = calculateStats(todayOrders); contents.add(buildStatsContent("今日统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(todayOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } case "昨日统计": { List yesterdayOrders = filterOrdersByDate(orderRows, 1); OrderStats stats = calculateStats(yesterdayOrders); contents.add(buildStatsContent("昨日统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(yesterdayOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } @@ -299,30 +318,82 @@ public class JDUtil { List last3DaysOrders = filterOrdersByDate(orderRows, 3); OrderStats stats = calculateStats(last3DaysOrders); contents.add(buildStatsContent("三日统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(last3DaysOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); + break; } case "七日统计": { List last7DaysOrders = filterOrdersByDate(orderRows, 7); OrderStats stats = calculateStats(last7DaysOrders); contents.add(buildStatsContent("七日统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(last7DaysOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); + break; } case "一个月统计": { List last30DaysOrders = filterOrdersByDate(orderRows, 30); OrderStats stats = calculateStats(last30DaysOrders); contents.add(buildStatsContent("一个月统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(last30DaysOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } case "两个月统计": { List last60DaysOrders = filterOrdersByDate(orderRows, 60); OrderStats stats = calculateStats(last60DaysOrders); contents.add(buildStatsContent("两个月统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(last60DaysOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } case "三个月统计": { List last90DaysOrders = filterOrdersByDate(orderRows, 90); OrderStats stats = calculateStats(last90DaysOrders); contents.add(buildStatsContent("三个月统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(last90DaysOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } case "这个月统计": { @@ -331,6 +402,16 @@ public class JDUtil { List thisMonthOrders = filterOrdersByDate(orderRows, days); OrderStats stats = calculateStats(thisMonthOrders); contents.add(buildStatsContent("这个月统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(thisMonthOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } case "上个月统计": { @@ -343,6 +424,16 @@ public class JDUtil { OrderStats stats = calculateStats(lastMonthOrders); contents.add(buildStatsContent("上个月统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(lastMonthOrders); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } @@ -351,6 +442,16 @@ public class JDUtil { case "总统计": { OrderStats stats = calculateStats(orderRows); contents.add(buildStatsContent("总统计", stats)); + Map statsByUnionId = OrderStatsUtil.groupByUnionIdAndCalculateStats(orderRows); + StringBuilder stringBuilder = new StringBuilder().append("详:"); + if (statsByUnionId != null) { + for (Map.Entry entry : statsByUnionId.entrySet()) { + OrderStats statsDetail = entry.getValue(); + String remarkFromJdid = getRemarkFromJdid(String.valueOf(entry.getKey())); + stringBuilder.append(buildStatsContent("\n粉:" + remarkFromJdid + "\n", statsDetail)); + } + } + contents.add(stringBuilder); break; } @@ -1899,138 +2000,121 @@ public class JDUtil { } - // 统计指标DTO - @Getter - @AllArgsConstructor - class OrderStats { - private long totalOrders; // 总订单数 - private long validOrders; // 有效订单数(不含取消) - private long paidOrders; // 已付款订单 - private double paidCommission; // 已付款佣金 - private long pendingOrders; // 待付款订单 - private double pendingCommission; // 待付款佣金 - private long canceledOrders; // 已取消订单 - private long completedOrders; // 已完成订单 - private double completedCommission;// 已完成佣金 - private long violations; // 违规订单数 - private double violationCommission;// 违规佣金 - } - public void LD(String input, String fromWxid) { - if (input.equals("单")) { - // 获取今天的日期 - LocalDate today = LocalDate.now(); - LocalDateTime startOfDay = today.atStartOfDay(); - LocalDateTime endOfDay = today.atTime(23, 59, 59); + if (input.equals("慢单")) { + // 获取今天的日期 + LocalDate today = LocalDate.now(); + LocalDateTime startOfDay = today.atStartOfDay(); + LocalDateTime endOfDay = today.atTime(23, 59, 59); - // 将 LocalDateTime 转换为 Date - Date startDate = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); - Date endDate = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()); + // 将 LocalDateTime 转换为 Date + Date startDate = Date.from(startOfDay.atZone(ZoneId.systemDefault()).toInstant()); + Date endDate = Date.from(endOfDay.atZone(ZoneId.systemDefault()).toInstant()); - List todayOrders = jdOrderRepository.findByOrderTimeBetween(startDate, endDate); + List todayOrders = jdOrderRepository.findByOrderTimeBetween(startDate, endDate); - if (todayOrders.isEmpty()) { - wxUtil.sendTextMessage(fromWxid, "今天没有订单。", 1, fromWxid, false); - return; - } + if (todayOrders.isEmpty()) { + wxUtil.sendTextMessage(fromWxid, "今天没有订单。", 1, fromWxid, false); + return; + } - // 按 remark 升序排序(null 值排最后) - todayOrders.sort(Comparator.comparing( - JDOrder::getRemark, - Comparator.nullsLast(String::compareTo) - )); + // 按 remark 升序排序(null 值排最后) + todayOrders.sort(Comparator.comparing( + JDOrder::getRemark, + Comparator.nullsLast(String::compareTo) + )); - // 先按 distributionMark 分组,再按 modelNumber 分组 - Map>> groupedOrders = todayOrders.stream() - .collect(Collectors.groupingBy(JDOrder::getDistributionMark, - Collectors.groupingBy(JDOrder::getModelNumber))); + // 先按 distributionMark 分组,再按 modelNumber 分组 + Map>> groupedOrders = todayOrders.stream() + .collect(Collectors.groupingBy(JDOrder::getDistributionMark, + Collectors.groupingBy(JDOrder::getModelNumber))); - // 遍历每个 distributionMark 分组,生成独立的消息内容并发送 - for (Map.Entry>> entry : groupedOrders.entrySet()) { - String distributionMark = entry.getKey(); - Map> modelGroups = entry.getValue(); + // 遍历每个 distributionMark 分组,生成独立的消息内容并发送 + for (Map.Entry>> entry : groupedOrders.entrySet()) { + String distributionMark = entry.getKey(); + Map> modelGroups = entry.getValue(); - StringBuilder resultBuilder = new StringBuilder(); + StringBuilder resultBuilder = new StringBuilder(); - resultBuilder.append("【").append(distributionMark).append("】").append("\n"); + resultBuilder.append("【").append(distributionMark).append("】").append("\n"); - for (Map.Entry> modelEntry : modelGroups.entrySet()) { - String modelNumber = modelEntry.getKey(); - List orders = modelEntry.getValue(); + for (Map.Entry> modelEntry : modelGroups.entrySet()) { + String modelNumber = modelEntry.getKey(); + List orders = modelEntry.getValue(); - int count = orders.size(); + int count = orders.size(); - resultBuilder.append("型号:").append(modelNumber != null ? modelNumber : "未知") - .append("\n数量:").append(count) - .append("\n────────────\n"); - - for (JDOrder order : orders) { - resultBuilder.append("单:").append(order.getRemark() != null ? order.getRemark() : "未提供") - .append("\n型号:").append(order.getModelNumber() != null ? order.getModelNumber() : "未提供") - .append("\n下单付款:").append(order.getPaymentAmount() != null ? String.format("%.2f", order.getPaymentAmount()) : "0.00") - .append(" 元") - .append("\n后返金额:").append(order.getRebateAmount() != null ? String.format("%.2f", order.getRebateAmount()) : "0.00") - .append(" 元") - .append("\n地址:").append(order.getAddress() != null ? order.getAddress() : "未提供") - .append("\n物流链接:").append(order.getLogisticsLink() != null ? order.getLogisticsLink() : "无") + resultBuilder.append("型号:").append(modelNumber != null ? modelNumber : "未知") + .append("\n数量:").append(count) .append("\n────────────\n"); + + for (JDOrder order : orders) { + resultBuilder.append("单:").append(order.getRemark() != null ? order.getRemark() : "未提供") + .append("\n型号:").append(order.getModelNumber() != null ? order.getModelNumber() : "未提供") + .append("\n下单付款:").append(order.getPaymentAmount() != null ? String.format("%.2f", order.getPaymentAmount()) : "0.00") + .append(" 元") + .append("\n后返金额:").append(order.getRebateAmount() != null ? String.format("%.2f", order.getRebateAmount()) : "0.00") + .append(" 元") + .append("\n地址:").append(order.getAddress() != null ? order.getAddress() : "未提供") + .append("\n物流链接:").append(order.getLogisticsLink() != null ? order.getLogisticsLink() : "无") + .append("\n────────────\n"); + } + } + + // 发送每条分组的消息到微信 + wxUtil.sendTextMessage(fromWxid, resultBuilder.toString(), 1, fromWxid, true); + } + } else { + // 生成当前日期 + String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); + JDOrder jdOrder = parseOrderFromText(input.trim().replace("元", "")); + if (jdOrder.getOrderId() == null) { + return; + } + if (Util.isAnyEmpty(jdOrder.getOrderId(), jdOrder.getBuyer(), jdOrder.getOrderTime(), jdOrder.getPaymentAmount(), jdOrder.getRebateAmount(), jdOrder.getAddress(), jdOrder.getLogisticsLink(), jdOrder.getModelNumber(), jdOrder.getLink(), jdOrder.getOrderId(), jdOrder.getBuyer())) { + return; + } + JDOrder byOrderId = jdOrderRepository.findByOrderId(jdOrder.getOrderId()); + String info = ""; + if (byOrderId != null) { + logger.info("订单已存在:{}", byOrderId); + info = "更新成功"; + jdOrder.setId(byOrderId.getId()); + } else { + info = "新增成功"; + logger.info("订单不存在,新增:{}", jdOrder); + } + jdOrderRepository.save(jdOrder); + + StringBuilder sb = new StringBuilder(); + // 单号 下单日期 型号 内部订单号 地址 物流 外派给谁 后返金额 谁的单 下单价格 + String distributionMark = jdOrder.getDistributionMark(); + String distributionMark2 = ""; + if (distributionMark != null) { + if (distributionMark.startsWith("H")) { + distributionMark2 = "鸿"; + } else if (distributionMark.startsWith("F")) { + distributionMark2 = "凡"; } } + sb.append(jdOrder.getRemark()).append("\t") + .append(jdOrder.getOrderId()).append("\t") + .append(date).append("\t") + .append(jdOrder.getModelNumber()).append("\t") + .append(jdOrder.getAddress()).append("\t") + .append(jdOrder.getLogisticsLink()).append("\t\t") + .append(jdOrder.getBuyer()).append("\t") + .append(jdOrder.getPaymentAmount()).append("\t") + .append(distributionMark2); - // 发送每条分组的消息到微信 - wxUtil.sendTextMessage(fromWxid, resultBuilder.toString(), 1, fromWxid, true); - } - } else { - // 生成当前日期 - String date = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); - JDOrder jdOrder = parseOrderFromText(input.trim().replace("元", "")); - if (jdOrder.getOrderId() == null) { - return; - } - if (Util.isAnyEmpty(jdOrder.getOrderId(), jdOrder.getBuyer(), jdOrder.getOrderTime(), jdOrder.getPaymentAmount(), jdOrder.getRebateAmount(), jdOrder.getAddress(), jdOrder.getLogisticsLink(), jdOrder.getModelNumber(), jdOrder.getLink(), jdOrder.getOrderId(), jdOrder.getBuyer())) { - return; - } - JDOrder byOrderId = jdOrderRepository.findByOrderId(jdOrder.getOrderId()); - String info = ""; - if (byOrderId != null) { - logger.info("订单已存在:{}", byOrderId); - info = "更新成功"; - jdOrder.setId(byOrderId.getId()); - } else { - info = "新增成功"; - logger.info("订单不存在,新增:{}", jdOrder); - } - jdOrderRepository.save(jdOrder); - - StringBuilder sb = new StringBuilder(); - // 单号 下单日期 型号 内部订单号 地址 物流 外派给谁 后返金额 谁的单 下单价格 - String distributionMark = jdOrder.getDistributionMark(); - String distributionMark2 = ""; - if (distributionMark != null) { - if (distributionMark.startsWith("H")) { - distributionMark2 = "鸿"; - } else if (distributionMark.startsWith("F")) { - distributionMark2 = "凡"; + logger.info("订单信息:{}", sb); + if (fromWxid.isEmpty()) { + return; } + wxUtil.sendTextMessage(fromWxid, info, 1, null, true); + wxUtil.sendTextMessage(fromWxid, sb.toString(), 1, null, true); } - sb.append(jdOrder.getRemark()).append("\t") - .append(jdOrder.getOrderId()).append("\t") - .append(date).append("\t") - .append(jdOrder.getModelNumber()).append("\t") - .append(jdOrder.getAddress()).append("\t") - .append(jdOrder.getLogisticsLink()).append("\t\t") - .append(jdOrder.getBuyer()).append("\t") - .append(jdOrder.getPaymentAmount()).append("\t") - .append(distributionMark2); - - logger.info("订单信息:{}", sb); - if (fromWxid.isEmpty()) { - return; - } - wxUtil.sendTextMessage(fromWxid, info, 1, null, true); - wxUtil.sendTextMessage(fromWxid, sb.toString(), 1, null, true); } -} public JDOrder parseOrderFromText(String input) { diff --git a/src/main/java/cn/van/business/util/OrderStats.java b/src/main/java/cn/van/business/util/OrderStats.java new file mode 100644 index 0000000..0cade7d --- /dev/null +++ b/src/main/java/cn/van/business/util/OrderStats.java @@ -0,0 +1,26 @@ +package cn.van.business.util; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @author Leo + * @version 1.0 + * @create 2025/5/30 13:43 + * @description: + */ // 统计指标DTO +@Getter +@AllArgsConstructor +class OrderStats { + private long totalOrders; // 总订单数 + private long validOrders; // 有效订单数(不含取消) + private long paidOrders; // 已付款订单 + private double paidCommission; // 已付款佣金 + private long pendingOrders; // 待付款订单 + private double pendingCommission; // 待付款佣金 + private long canceledOrders; // 已取消订单 + private long completedOrders; // 已完成订单 + private double completedCommission;// 已完成佣金 + private long violations; // 违规订单数 + private double violationCommission;// 违规佣金 +} diff --git a/src/main/java/cn/van/business/util/OrderStatsUtil.java b/src/main/java/cn/van/business/util/OrderStatsUtil.java new file mode 100644 index 0000000..8caa7cf --- /dev/null +++ b/src/main/java/cn/van/business/util/OrderStatsUtil.java @@ -0,0 +1,75 @@ +package cn.van.business.util; + +import cn.van.business.model.jd.OrderRow; + +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class OrderStatsUtil { + + public static Map groupByUnionIdAndCalculateStats(List orderRows) { + // 按 unionId 分组并统计 + return orderRows.stream() + .collect(Collectors.groupingBy(OrderRow::getUnionId, + Collectors.collectingAndThen(Collectors.toList(), OrderStatsUtil::calculateStats))); + } + + // 统计逻辑 + private static OrderStats calculateStats(List orders) { + long totalOrders = orders.size(); + long validOrders = (int) orders.stream().filter(o -> o.getValidCode() != -1).count(); + + long paidOrders = orders.stream().filter(o -> o.getValidCode() == 16).count(); + double paidCommission = orders.stream() + .filter(o -> o.getValidCode() == 16) + .mapToDouble(OrderRow::getEstimateFee) + .sum(); + + long pendingOrders = orders.stream().filter(o -> o.getValidCode() == 15).count(); + double pendingCommission = orders.stream() + .filter(o -> o.getValidCode() == 15) + .mapToDouble(OrderRow::getEstimateFee) + .sum(); + + long canceledOrders = orders.stream() + .filter(o -> o.getValidCode() != 16 && o.getValidCode() != 17) + .count(); + + long completedOrders = orders.stream().filter(o -> o.getValidCode() == 17).count(); + double completedCommission = orders.stream() + .filter(o -> o.getValidCode() == 17) + .mapToDouble(OrderRow::getEstimateFee) + .sum(); + + long violations = getStreamForWeiGui(orders).count(); + double violationCommission = getStreamForWeiGui(orders) + .mapToDouble(o -> o.getEstimateCosPrice() * o.getCommissionRate() * 0.01) + .sum(); + + return new OrderStats( + totalOrders, + validOrders, + paidOrders, + paidCommission, + pendingOrders, + pendingCommission, + canceledOrders, + completedOrders, + completedCommission, + violations, + violationCommission + ); + } + + // 获取违规订单流 + private static Stream getStreamForWeiGui(List orderRows) { + return orderRows.stream().filter(orderRow -> + orderRow.getValidCode() == 13 || + orderRow.getValidCode() == 25 || + orderRow.getValidCode() == 26 || + orderRow.getValidCode() == 27 || + orderRow.getValidCode() == 28 || + orderRow.getValidCode() == 29); + } +} diff --git a/src/main/java/cn/van/business/util/WXUtil.java b/src/main/java/cn/van/business/util/WXUtil.java index 806fcf3..00d3cd8 100644 --- a/src/main/java/cn/van/business/util/WXUtil.java +++ b/src/main/java/cn/van/business/util/WXUtil.java @@ -38,6 +38,7 @@ public class WXUtil { public static Map super_admins = new HashMap<>(); public static Map jdidToWxidMap = new HashMap<>(); public static Map jdidToRemarkMap = new HashMap<>(); + public static List notify_wx = new ArrayList<>(); // 群聊管理白名单 public static List chatRoom_admin = new ArrayList<>(); @@ -226,12 +227,15 @@ public class WXUtil { String messageContent = "Jarvis 更新完成 [亲亲][亲亲][亲亲] "; String fromWxid = default_bot_wxid; // 来源为机器人自身 for (SuperAdmin admin : super_admins.values()) { - try { - // 异步发送,不影响启动流程 - CompletableFuture.runAsync(() -> sendTextMessage(admin.getWxid(), messageContent, 1, fromWxid, false)); - } catch (Exception e) { - logger.warn("发送重启通知失败,目标 wxid: {}", admin.getWxid(), e); + if (!notify_wx.contains(admin.getWxid())){ + try { + sendTextMessage(admin.getWxid(), messageContent, 1, fromWxid, false); + notify_wx.add(admin.getWxid()); + } catch (Exception e) { + logger.warn("发送重启通知失败,目标 wxid: {}", admin.getWxid(), e); + } } + } restartNoticeSent = true; diff --git a/src/main/java/cn/van/business/util/WxMessageConsumer.java b/src/main/java/cn/van/business/util/WxMessageConsumer.java index 96eece7..f81a011 100644 --- a/src/main/java/cn/van/business/util/WxMessageConsumer.java +++ b/src/main/java/cn/van/business/util/WxMessageConsumer.java @@ -112,7 +112,7 @@ public class WxMessageConsumer { } // 录单群 if (fromWxid.equals(chatRoom_JD_Order)){ - if (msg.startsWith("单")) { + if (msg.startsWith("单") || msg.equals("慢单")) { //logger.info("录单"); jdUtils.LD(msg, fromWxid); return;