wangxy 4 дней назад
Родитель
Сommit
93824661e5

+ 1 - 0
fs-company/src/main/java/com/fs/company/controller/store/FsExternalOrderController.java

@@ -49,6 +49,7 @@ public class FsExternalOrderController extends BaseController {
     }
 
     @GetMapping(value = "/{orderId}")
+    @PreAuthorize("@ss.hasPermi('store:externalOrder:query')")
     public AjaxResult getInfo(@PathVariable("orderId") Long orderId) {
         return AjaxResult.success(fsExternalOrderService.selectExternalOrderDetailVO(orderId));
     }

+ 35 - 8
fs-service/src/main/java/com/fs/his/service/impl/FsExternalOrderServiceImpl.java

@@ -642,22 +642,49 @@ public class FsExternalOrderServiceImpl implements IFsExternalOrderService {
         updateOrder.setStatus(3);
         updateOrder.setDeliverySn(delivery.getMail_no());
 
-        if (StringUtils.isNotBlank(delivery.getExpress_code())) {
-            FsExpress express = expressService.selectFsExpressByOmsCode(delivery.getExpress_code());
+        String deliveryCode = delivery.getExpress_code();
+        String deliveryName = delivery.getExpress_name();
+        if (StringUtils.isNotBlank(deliveryCode)) {
+            FsExpress express = expressService.selectFsExpressByOmsCode(deliveryCode);
+            if (express == null) {
+                express = expressService.selectFsExpressByCode(deliveryCode);
+            }
+            if (express == null && StringUtils.isNotBlank(deliveryName)) {
+                express = expressService.selectFsExpressByName(deliveryName);
+            }
             if (express != null) {
-                updateOrder.setDeliveryName(express.getName());
-                updateOrder.setDeliveryCode(express.getCode());
+                deliveryName = express.getName();
+                deliveryCode = express.getCode();
+                updateOrder.setDeliveryName(deliveryName);
+                updateOrder.setDeliveryCode(deliveryCode);
             } else {
-                updateOrder.setDeliveryCode(delivery.getExpress_code());
-                if (StringUtils.isNotBlank(delivery.getExpress_name())) {
-                    updateOrder.setDeliveryName(delivery.getExpress_name());
+                updateOrder.setDeliveryCode(deliveryCode);
+                if (StringUtils.isNotBlank(deliveryName)) {
+                    updateOrder.setDeliveryName(deliveryName);
                 }
             }
         }
 
         updateOrder.setDeliveryTime(new Date());
         fsExternalOrderMapper.updateFsExternalOrder(updateOrder);
-        log.info("外部订单已发货: {}, 快递: {}, 单号: {}", localOrder.getOrderCode(), delivery.getExpress_code(), delivery.getMail_no());
+        subscribeExternalOrderExpress(localOrder, deliveryCode, delivery.getMail_no());
+        log.info("外部订单已发货: {}, 快递: {}, 单号: {}", localOrder.getOrderCode(), deliveryCode, delivery.getMail_no());
+    }
+
+    private void subscribeExternalOrderExpress(FsExternalOrder order, String deliveryCode, String deliverySn) {
+        if (order == null || StringUtils.isBlank(deliveryCode) || StringUtils.isBlank(deliverySn)) {
+            return;
+        }
+
+        try {
+            String userPhone = order.getUserPhone();
+            String lastFourNumber = StringUtils.isNotBlank(userPhone) && userPhone.length() >= 4
+                    ? userPhone.substring(userPhone.length() - 4)
+                    : userPhone;
+            expressService.subscribeEspress(order.getOrderCode(), deliveryCode, deliverySn, lastFourNumber);
+        } catch (Exception e) {
+            log.error("外部订单订阅快递鸟物流失败: {}, 快递: {}, 单号: {}", order.getOrderCode(), deliveryCode, deliverySn, e);
+        }
     }
 
     @Override