From 328fa9d8020d4d93c2346eebb29074f702a35613 Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Fri, 6 Jun 2025 17:52:25 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BE=AE=E4=BF=A1=E5=8F=91=E8=B4=A7=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AF=B9=E6=8E=A5=EF=BC=8C=E9=80=BB=E8=BE=91=E7=BC=96?= =?UTF-8?q?=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/WxOrderShippingServiceImpl.java | 41 ++++++++++++++++++- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java index 4cf40202..bc59fd0a 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/wechat/service/impl/WxOrderShippingServiceImpl.java @@ -12,11 +12,13 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import com.suisung.mall.common.constant.CommonConstant; +import com.suisung.mall.common.modules.store.ShopStoreSfOrder; import com.suisung.mall.common.pojo.dto.WxOrderBaseInfoDTO; import com.suisung.mall.common.utils.DateTimeUtils; import com.suisung.mall.common.utils.RestTemplateHttpUtil; import com.suisung.mall.common.utils.phone.PhoneNumberUtils; import com.suisung.mall.shop.order.service.ShopOrderBaseService; +import com.suisung.mall.shop.store.service.ShopStoreSfOrderService; import com.suisung.mall.shop.wechat.service.WxOrderShippingService; import com.suisung.mall.shop.wechat.utils.WxUtil; import lombok.extern.slf4j.Slf4j; @@ -41,6 +43,10 @@ public class WxOrderShippingServiceImpl implements WxOrderShippingService { @Autowired private ShopOrderBaseService shopOrderBaseService; + @Lazy + @Autowired + private ShopStoreSfOrderService shopStoreSfOrderService; + /** * 上传发货信息到微信 * 参考:https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/business-capabilities/order-shipping/order-shipping.html#%E4%B8%80%E3%80%81%E5%8F%91%E8%B4%A7%E4%BF%A1%E6%81%AF%E5%BD%95%E5%85%A5%E6%8E%A5%E5%8F%A3 @@ -63,6 +69,11 @@ public class WxOrderShippingServiceImpl implements WxOrderShippingService { return Pair.of(false, PARAMETER_ERROR); } + if (logisticsType == null || logisticsType < 1 || logisticsType > 4) { + log.error("物流类型错误,订单ID: {}, 物流类型: {}", orderId, logisticsType); + return Pair.of(false, "物流类型错误"); + } + try { String accessToken = wxUtil.getAccessToken(); if (StrUtil.isBlank(accessToken)) { @@ -82,9 +93,35 @@ public class WxOrderShippingServiceImpl implements WxOrderShippingService { shippingItem.set("item_desc", orderBaseInfo.getSubject()); // 必填项 + String trackingId = ""; + String expressCompany = ""; + String receiverMobile = ""; + if (logisticsType == 1) { + // 实体物流配送 + shippingItem.set("shipping_type", 2); + shippingItem.set("shipping_id", orderBaseInfo.getLkl_merchant_no()); + } else if (logisticsType == 2) { + // 同城配送(顺丰同城) + ShopStoreSfOrder shopStoreSfOrder = shopStoreSfOrderService.getBySfOrderId(orderId); + if (shopStoreSfOrder == null) { + log.error("无法获取顺丰同城订单记录,订单ID: {}", orderId); + return Pair.of(false, "无法获取顺丰同城订单记录"); + } + + trackingId = shopStoreSfOrder.getSf_bill_id(); + expressCompany = "SF"; // 顺丰同城的快递公司代码 + receiverMobile = ""; + } else if (logisticsType == 3) { + // 虚拟商品 + shippingItem.set("shipping_type", 4); + } else { + // 用户自提 + shippingItem.set("shipping_type", 1); + } + // 发物流快递的必填字段 - shippingItem.set("tracking_no", expressNo); - shippingItem.set("express_company", trackingNo); + shippingItem.set("tracking_no", trackingId); + shippingItem.set("express_company", expressCompany); shippingItem.set("contact.receiver_contact", CommonConstant.IDD_ZH_CN + "-" + PhoneNumberUtils.maskPhoneNumber("13128998786")); JSONArray shippingList = new JSONArray().put(shippingItem);