From 9ffc04d496eefd8480a118b10ce96bae9dc087ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=B7=E6=AC=A7=EF=BC=88=E6=9E=97=E5=B9=B3=E5=87=A1?= =?UTF-8?q?=EF=BC=89?= Date: Fri, 30 May 2025 11:38:14 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BD=95=E5=8D=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/van/business/util/JDUtil.java | 224 +++++++++--------- 1 file changed, 110 insertions(+), 114 deletions(-) diff --git a/src/main/java/cn/van/business/util/JDUtil.java b/src/main/java/cn/van/business/util/JDUtil.java index 9198ba1..05d5620 100644 --- a/src/main/java/cn/van/business/util/JDUtil.java +++ b/src/main/java/cn/van/business/util/JDUtil.java @@ -1338,7 +1338,7 @@ public class JDUtil { /*直接生成闲鱼的商品文案*/ StringBuilder sb1 = new StringBuilder(); - sb1.append("(无偿教你买) ").append(title).append(replaceAll).append("\n").append(WENAN_FANAN_LQD.replaceAll("更新", format + "更新")); + sb1.append("(教你买) ").append(title).append(replaceAll).append("\n").append(WENAN_FANAN_LQD.replaceAll("更新", format + "更新")); //textList.add("闲鱼方案的文案:\n"); textList.add(String.valueOf(sb1)); StringBuilder sb2 = new StringBuilder(); @@ -1346,7 +1346,7 @@ public class JDUtil { //textList.add("闲鱼正常销售:\n"); textList.add(String.valueOf(sb2)); StringBuilder sb3 = new StringBuilder(); - sb3.append("(无偿教你买) ").append(title).append(replaceAll).append("\n").append(WENAN_FANAN_HG.replaceAll("更新", format + "更新")); + sb3.append("(教你买) ").append(title).append(replaceAll).append("\n").append(WENAN_FANAN_HG.replaceAll("更新", format + "更新")); textList.add(String.valueOf(sb3)); StringBuilder sb4 = new StringBuilder(); @@ -1917,125 +1917,121 @@ public class JDUtil { } public void LD(String input, String fromWxid) { - if (input.equals("单")) { - // 查找今天所有订单出来,按Remark升序,并且拼接成长文本,并且先根据distributionMark分组,再根据 ModelNumber 分组,最后再进行统计 paymentAmount 和 rebateAmount - // 获取今天的日期 - 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; - } - - // 按 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 分组,生成独立的消息内容并发送 - for (Map.Entry>> entry : groupedOrders.entrySet()) { - String distributionMark = entry.getKey(); - Map> modelGroups = entry.getValue(); - - StringBuilder resultBuilder = new StringBuilder(); - - resultBuilder.append("【").append(distributionMark).append("】").append("\n"); - - for (Map.Entry> modelEntry : modelGroups.entrySet()) { - String modelNumber = modelEntry.getKey(); - List orders = modelEntry.getValue(); - - int count = orders.size(); - double totalPaymentAmount = orders.stream() - .mapToDouble(order -> order.getPaymentAmount() != null ? order.getPaymentAmount() : 0.0) - .sum(); - double totalRebateAmount = orders.stream() - .mapToDouble(order -> order.getRebateAmount() != null ? order.getRebateAmount() : 0.0) - .sum(); - - resultBuilder.append("型号:").append(modelNumber != null ? modelNumber : "未知") - .append("\n数量:").append(count) - .append("\n总支付金额:").append(String.format("%.2f", totalPaymentAmount)) - .append(" 元") - .append("\n总后返金额:").append(String.format("%.2f", totalRebateAmount)) - .append(" 元") - .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 { - // 生成当前日期 2025-02-05 - 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(); - //单号 下单日期 型号 内部订单号 地址 物流 外派给谁 后返金额 谁的单 下单价格 - // 从jdOrder中获取转化 - 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").append("\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); + if (todayOrders.isEmpty()) { + wxUtil.sendTextMessage(fromWxid, "今天没有订单。", 1, fromWxid, false); + return; } + // 按 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 分组,生成独立的消息内容并发送 + for (Map.Entry>> entry : groupedOrders.entrySet()) { + String distributionMark = entry.getKey(); + Map> modelGroups = entry.getValue(); + + StringBuilder resultBuilder = new StringBuilder(); + + resultBuilder.append("【").append(distributionMark).append("】").append("\n"); + + for (Map.Entry> modelEntry : modelGroups.entrySet()) { + String modelNumber = modelEntry.getKey(); + List orders = modelEntry.getValue(); + + 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() : "无") + .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); + + 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) { // 清理多余的空白字符