This commit is contained in:
雷欧(林平凡)
2025-05-30 11:38:14 +08:00
parent 949bc163af
commit 9ffc04d496

View File

@@ -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<JDOrder> todayOrders = jdOrderRepository.findByOrderTimeBetween(startDate, endDate);
List<JDOrder> 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<String, Map<String, List<JDOrder>>> groupedOrders = todayOrders.stream()
.collect(Collectors.groupingBy(JDOrder::getDistributionMark,
Collectors.groupingBy(JDOrder::getModelNumber)));
// 遍历每个 distributionMark 分组,生成独立的消息内容并发送
for (Map.Entry<String, Map<String, List<JDOrder>>> entry : groupedOrders.entrySet()) {
String distributionMark = entry.getKey();
Map<String, List<JDOrder>> modelGroups = entry.getValue();
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append("").append(distributionMark).append("").append("\n");
for (Map.Entry<String, List<JDOrder>> modelEntry : modelGroups.entrySet()) {
String modelNumber = modelEntry.getKey();
List<JDOrder> 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<String, Map<String, List<JDOrder>>> groupedOrders = todayOrders.stream()
.collect(Collectors.groupingBy(JDOrder::getDistributionMark,
Collectors.groupingBy(JDOrder::getModelNumber)));
// 遍历每个 distributionMark 分组,生成独立的消息内容并发送
for (Map.Entry<String, Map<String, List<JDOrder>>> entry : groupedOrders.entrySet()) {
String distributionMark = entry.getKey();
Map<String, List<JDOrder>> modelGroups = entry.getValue();
StringBuilder resultBuilder = new StringBuilder();
resultBuilder.append("").append(distributionMark).append("").append("\n");
for (Map.Entry<String, List<JDOrder>> modelEntry : modelGroups.entrySet()) {
String modelNumber = modelEntry.getKey();
List<JDOrder> 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) {
// 清理多余的空白字符