From 7cd7440f1fdb104599a47dc023f962555b98af6e Mon Sep 17 00:00:00 2001 From: van Date: Thu, 23 Apr 2026 16:00:44 +0800 Subject: [PATCH] 1 --- .../service/impl/LogisticsServiceImpl.java | 101 +++++++----------- 1 file changed, 38 insertions(+), 63 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/LogisticsServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/LogisticsServiceImpl.java index ad273d9..58fd41f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/LogisticsServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/LogisticsServiceImpl.java @@ -9,7 +9,6 @@ import com.ruoyi.jarvis.mapper.WeComShareLinkLogisticsJobMapper; import com.ruoyi.jarvis.service.IErpGoofishOrderService; import com.ruoyi.jarvis.service.ILogisticsService; import com.ruoyi.jarvis.service.IJDOrderService; -import com.ruoyi.jarvis.wecom.WxSendGoofishNotifyClient; import com.ruoyi.system.service.ISysConfigService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -87,9 +86,6 @@ public class LogisticsServiceImpl implements ILogisticsService { @Resource private IErpGoofishOrderService erpGoofishOrderService; - @Resource - private WxSendGoofishNotifyClient wxSendGoofishNotifyClient; - @PostConstruct public void init() { externalApiUrlTemplate = logisticsBaseUrl + logisticsFetchPath + "?tracking_url="; @@ -443,9 +439,14 @@ public class LogisticsServiceImpl implements ILogisticsService { // 更新过期时间,确保记录不会过期 stringRedisTemplate.opsForValue().set(redisKey, waybillNo, 30, TimeUnit.DAYS); } - safeNotifyGoofishShip(orderId, waybillNo, - "企微货主推送成功;" + (logisticsLinkUpdated ? "物流链接已更新;" : "物流链接未变;") - + "Redis 已写入;随后触发闲鱼同步"); + String mark = order.getDistributionMark(); + boolean skipGoofishJdWexin = erpGoofishOrderService.hasLinkedGoofishOrder(orderId) + || (mark != null && mark.contains("\u95f2\u9c7c")); + String traceTail = (logisticsLinkUpdated ? "物流链接已更新;" : "物流链接未变;") + "Redis 已写入;随后触发闲鱼同步"; + String traceSummary = (skipGoofishJdWexin + ? "闲鱼单本环节未发京东物流企微,真发货见 SHIP 日志;" + : "企微货主推送成功;") + traceTail; + safeNotifyGoofishShip(orderId, waybillNo, traceSummary); // 记录最终处理结果 if (logisticsLinkUpdated) { @@ -821,67 +822,41 @@ public class LogisticsServiceImpl implements ILogisticsService { */ private boolean sendEnterprisePushNotification(JDOrder order, String waybillNo, boolean logisticsLinkUpdated, String oldLogisticsLink, String newLogisticsLink) { try { - String distributionMark = order.getDistributionMark() != null ? order.getDistributionMark() : "未知"; + String distributionMark = order.getDistributionMark() != null ? order.getDistributionMark() : "\u672a\u77e5"; String thirdPartyOrderNo = order.getThirdPartyOrderNo(); - String modelStr = order.getModelNumber() != null ? order.getModelNumber() : "无"; - String addressStr = order.getAddress() != null ? order.getAddress() : "无"; - String goofishOrderNo; + String modelStr = order.getModelNumber() != null ? order.getModelNumber() : "\u65e0"; + String addressStr = order.getAddress() != null ? order.getAddress() : "\u65e0"; + + boolean goofishLinked = erpGoofishOrderService.hasLinkedGoofishOrder(order.getId()) + || (distributionMark != null && distributionMark.contains("\u95f2\u9c7c")); + + if (goofishLinked) { + // 闲鱼单:不在京东扫到运单环节发企微;仅写 Redis 并 notifyJdWaybillReady / tryAutoShip。 + // 真发货成功后由 GoofishOrderChangeLogger SHIP 事件发 wx。 + logger.info("闲鱼关联/分销:跳过本环节企微直推 - 订单ID: {}, 订单号: {}, waybill_no: {}", + order.getId(), order.getOrderId(), waybillNo); + return true; + } + + // 非闲鱼:PDD 企微,完整 JD 物流版式 + StringBuilder std = new StringBuilder(); + std.append("JD物流信息推送").append("\n"); + std.append(distributionMark).append("\n"); if (thirdPartyOrderNo != null && !thirdPartyOrderNo.trim().isEmpty()) { - goofishOrderNo = thirdPartyOrderNo.trim(); - } else if (order.getOrderId() != null && !order.getOrderId().trim().isEmpty()) { - goofishOrderNo = order.getOrderId().trim(); - } else { - goofishOrderNo = "无"; + std.append("第三方单号:").append(thirdPartyOrderNo.trim()).append("\n"); } - - boolean useGoofishWecom = erpGoofishOrderService.hasLinkedGoofishOrder(order.getId()) - || (distributionMark != null && distributionMark.contains("闲鱼")); - - String fullText; - if (useGoofishWecom) { - // 闲鱼:仅「闲鱼自动发货」块,便于复制到平台 - StringBuilder goofish = new StringBuilder(); - goofish.append("闲鱼自动发货:").append("\n"); - goofish.append("单号:").append(goofishOrderNo).append("\n"); - goofish.append("型号:").append(modelStr).append("\n"); - goofish.append("收货地址:").append(addressStr).append("\n"); - goofish.append("运单号:").append(waybillNo).append("\n"); - fullText = goofish.toString(); - } else { - // 非闲鱼:沿用京东物流信息完整版式(与历史 PDD 通道一致),不出现「闲鱼自动发货」 - StringBuilder std = new StringBuilder(); - std.append("JD物流信息推送").append("\n"); - std.append(distributionMark).append("\n"); - if (thirdPartyOrderNo != null && !thirdPartyOrderNo.trim().isEmpty()) { - std.append("第三方单号:").append(thirdPartyOrderNo.trim()).append("\n"); + std.append("型号:").append(modelStr).append("\n"); + std.append("收货地址:").append(addressStr).append("\n"); + if (logisticsLinkUpdated && newLogisticsLink != null && !newLogisticsLink.trim().isEmpty()) { + std.append("【物流链接已更新】").append("\n"); + std.append("新物流链接:").append(newLogisticsLink.trim()).append("\n"); + if (oldLogisticsLink != null && !oldLogisticsLink.trim().isEmpty()) { + std.append("旧物流链接:").append(oldLogisticsLink.trim()).append("\n"); } - std.append("型号:").append(modelStr).append("\n"); - std.append("收货地址:").append(addressStr).append("\n"); - if (logisticsLinkUpdated && newLogisticsLink != null && !newLogisticsLink.trim().isEmpty()) { - std.append("【物流链接已更新】").append("\n"); - std.append("新物流链接:").append(newLogisticsLink.trim()).append("\n"); - if (oldLogisticsLink != null && !oldLogisticsLink.trim().isEmpty()) { - std.append("旧物流链接:").append(oldLogisticsLink.trim()).append("\n"); - } - std.append("\n"); - } - std.append("运单号:").append("\n").append("\n").append("\n").append("\n").append(waybillNo).append("\n"); - fullText = std.toString(); - } - - if (useGoofishWecom) { - String touserGoofish = getTouserByDistributionMark(distributionMark); - logger.info("闲鱼关联或分销含「闲鱼」:尝试企微闲鱼自建应用 - 订单ID: {}, 分销标识: {}, 接收人: {}", - order.getId(), distributionMark, - StringUtils.hasText(touserGoofish) ? touserGoofish : "(jarvis.wecom.goofish-notify-touser)"); - if (wxSendGoofishNotifyClient.pushGoofishAgentText(touserGoofish, "", fullText)) { - logger.info("企微闲鱼应用推送成功 - 订单ID: {}, 订单号: {}, waybill_no: {}", - order.getId(), order.getOrderId(), waybillNo); - return true; - } - logger.warn("企微闲鱼应用推送失败或未配置 wxSend,不再走 PDD 通道 - 订单ID: {}", order.getId()); - return false; + std.append("\n"); } + std.append("运单号:").append("\n").append("\n").append("\n").append("\n").append(waybillNo).append("\n"); + String fullText = std.toString(); // 调用企业微信推送接口(PDD 自建应用) JSONObject pushParam = new JSONObject();