From 1a14830dac50b2cdcf93acd8f1114dbc3732d361 Mon Sep 17 00:00:00 2001 From: Leo Date: Sun, 14 Dec 2025 15:39:26 +0800 Subject: [PATCH] 1 --- .../service/impl/InstructionServiceImpl.java | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java index ea1fc60..6951ae3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/InstructionServiceImpl.java @@ -1427,6 +1427,70 @@ public class InstructionServiceImpl implements IInstructionService { * @param originalInput 原始输入文本,用于提取完整的物流链接 */ private String formatOrderForm(JDOrder order, String originalInput) { + // 检测是否是新格式(包含分隔线"—————————"或新格式字段标签) + boolean isNewFormat = originalInput != null && ( + originalInput.contains("—————————") || + originalInput.contains("下单链接(必须用这个):") || + originalInput.contains("下单地址(注意带分机):") || + originalInput.contains("下单人(需填):") || + originalInput.contains("下单付款(注意核对):") || + originalInput.contains("后返金额(注意核对):") || + originalInput.contains("订单号(需填):") || + originalInput.contains("物流链接(需填):") || + originalInput.contains("备注(下单号码有变动/没法带分机号的写这里):") + ); + + if (isNewFormat) { + return formatOrderFormNew(order, originalInput); + } else { + return formatOrderFormOld(order, originalInput); + } + } + + /** + * 格式化订单为新模板格式 + */ + private String formatOrderFormNew(JDOrder order, String originalInput) { + StringBuilder sb = new StringBuilder(); + + // 从原始输入中提取完整的物流链接 + String originalLogisticsLink = extractOriginalLogisticsLinkNew(originalInput); + + sb.append("单:\n"); + sb.append(order.getRemark() != null ? order.getRemark() : "").append(" \n"); + sb.append("分销标记:").append(order.getDistributionMark() != null ? order.getDistributionMark() : "").append("\n"); + sb.append("第三方单号:").append(order.getThirdPartyOrderNo() != null ? order.getThirdPartyOrderNo() : "").append("\n"); + sb.append("—————————\n"); + sb.append("下单链接(必须用这个):\n"); + sb.append(order.getLink() != null ? order.getLink() : "").append("\n"); + sb.append("下单地址(注意带分机):\n"); + sb.append(order.getAddress() != null ? order.getAddress() : "").append("\n"); + sb.append("—————————\n"); + sb.append("型号:").append(order.getModelNumber() != null ? order.getModelNumber() : "").append("\n"); + sb.append("\n"); + sb.append("下单人(需填):\n"); + sb.append(order.getBuyer() != null ? order.getBuyer() : "").append("\n"); + sb.append("下单付款(注意核对):\n"); + sb.append(order.getPaymentAmount() != null ? order.getPaymentAmount().toString() : "").append("\n"); + sb.append("后返金额(注意核对):\n"); + sb.append(order.getRebateAmount() != null ? order.getRebateAmount().toString() : "").append("\n"); + sb.append("订单号(需填):\n"); + sb.append(order.getOrderId() != null ? order.getOrderId() : "").append("\n"); + sb.append("物流链接(需填):\n"); + // 使用原始输入的完整物流链接,如果没有则使用数据库中的值 + sb.append(originalLogisticsLink != null ? originalLogisticsLink : (order.getLogisticsLink() != null ? order.getLogisticsLink() : "")).append("\n"); + sb.append("备注(下单号码有变动/没法带分机号的写这里):\n"); + sb.append(order.getStatus() != null ? order.getStatus() : "").append("\n"); + sb.append("—————————\n"); + sb.append("京粉实际价格:不用填"); + + return sb.toString(); + } + + /** + * 格式化订单为旧模板格式(保持向后兼容) + */ + private String formatOrderFormOld(JDOrder order, String originalInput) { StringBuilder sb = new StringBuilder(); // 从原始输入中提取完整的物流链接 @@ -1459,6 +1523,24 @@ public class InstructionServiceImpl implements IInstructionService { return sb.toString(); } + + /** + * 从原始输入中提取完整的物流链接文本(新格式) + */ + private String extractOriginalLogisticsLinkNew(String input) { + if (input == null || input.isEmpty()) { + return null; + } + // 提取"物流链接(需填):"到"备注(下单号码有变动/没法带分机号的写这里):"之间的完整内容 + java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("物流链接(需填):\\s*(.*?)\\s*(?=备注(下单号码有变动/没法带分机号的写这里):|\\Z)", java.util.regex.Pattern.DOTALL); + java.util.regex.Matcher matcher = pattern.matcher(input); + if (matcher.find()) { + String logisticsLink = matcher.group(1).trim(); + // 如果为空,返回null + return logisticsLink.isEmpty() ? null : logisticsLink; + } + return null; + } /** * 从原始输入中提取完整的物流链接文本(不做清理)