Browse Source

feat: 修复支持中通快递

xdd 5 days ago
parent
commit
69529fb931

+ 42 - 11
fs-company/src/main/java/com/fs/company/controller/store/FsStoreOrderController.java

@@ -438,34 +438,68 @@ public class FsStoreOrderController extends BaseController
     @GetMapping(value = "/getExpress/{id}")
     public R getExpress(@PathVariable("id") Long id)
     {
-        FsStoreOrder order=fsStoreOrderService.selectFsStoreOrderByOrderId(id);
-        ExpressInfoDTO expressInfoDTO=null;
+        logger.info("开始查询快递信息,订单ID: {}", id);
+        // 查询订单信息
+        FsStoreOrder order = fsStoreOrderService.selectFsStoreOrderByOrderId(id);
+        logger.info("查询到订单信息,订单号: {}, 快递公司代码: {}, 快递单号: {}",
+                order.getOrderCode(), order.getDeliveryCode(), order.getDeliverySn());
+
+        ExpressInfoDTO expressInfoDTO = null;
         if(StringUtils.isNotEmpty(order.getDeliverySn())){
+            logger.info("订单存在快递单号,开始查询快递信息,订单号: {}", order.getOrderCode());
             String lastFourNumber = "";
-            if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
+            if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue()) ||
+                    order.getDeliveryCode().equals(ShipperCodeEnum.ZTO.getValue())) {
 
                 lastFourNumber = order.getUserPhone();
+                logger.info("顺丰或中通快递需要手机号后四位,原始手机号长度: {}", lastFourNumber.length());
+
                 if (lastFourNumber.length() == 11) {
                     lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
+                    logger.info("截取手机号后四位: {}", lastFourNumber);
                 }else if (lastFourNumber.length()>11){
                     String jm = decryptPhone(lastFourNumber);
                     lastFourNumber = StrUtil.sub(jm, jm.length(), -4);
+                    logger.info("手机号解密后截取后四位: {}", lastFourNumber);
                 }
             }
-            expressInfoDTO=expressService.getExpressInfo(order.getOrderCode(),order.getDeliveryCode(),order.getDeliverySn(),lastFourNumber);
-            if((expressInfoDTO.getStateEx()!=null&&expressInfoDTO.getStateEx().equals("0"))&&(expressInfoDTO.getState()!=null&&expressInfoDTO.getState().equals("0"))){
+
+            logger.info("调用快递查询接口,订单号: {}, 快递公司代码: {}, 快递单号: {}, 手机号后四位: {}",
+                    order.getOrderCode(), order.getDeliveryCode(), order.getDeliverySn(), lastFourNumber);
+
+            expressInfoDTO = expressService.getExpressInfo(order.getOrderCode(), order.getDeliveryCode(),
+                    order.getDeliverySn(), lastFourNumber);
+
+            logger.info("快递查询接口返回结果,状态码: {}, 扩展状态码: {}",
+                    expressInfoDTO.getState(), expressInfoDTO.getStateEx());
+
+            if((expressInfoDTO.getStateEx()!=null && expressInfoDTO.getStateEx().equals("0")) &&
+                    (expressInfoDTO.getState()!=null && expressInfoDTO.getState().equals("0"))){
+                logger.info("首次查询快递信息失败,尝试使用默认手机号重新查询");
+
                 lastFourNumber = "19923690275";
-                if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
+                if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue()) ||
+                        order.getDeliveryCode().equals(ShipperCodeEnum.ZTO.getValue())) {
                     if (lastFourNumber.length() == 11) {
                         lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
+                        logger.info("使用默认手机号后四位重新查询: {}", lastFourNumber);
                     }
                 }
+                logger.info("再次调用快递查询接口,订单号: {}, 快递公司代码: {}, 快递单号: {}, 默认手机号后四位: {}",
+                        order.getOrderCode(), order.getDeliveryCode(), order.getDeliverySn(), lastFourNumber);
 
-                expressInfoDTO=expressService.getExpressInfo(order.getOrderCode(),order.getDeliveryCode(),order.getDeliverySn(),lastFourNumber);
+                expressInfoDTO = expressService.getExpressInfo(order.getOrderCode(), order.getDeliveryCode(),
+                        order.getDeliverySn(), lastFourNumber);
 
+                logger.info("重新查询快递信息结果,状态码: {}, 扩展状态码: {}",
+                        expressInfoDTO.getState(), expressInfoDTO.getStateEx());
             }
+        } else {
+            logger.info("订单不存在快递单号,无法查询快递信息,订单号: {}", order.getOrderCode());
         }
-        return R.ok().put("data",expressInfoDTO);
+
+        logger.info("查询快递信息完成,订单ID: {}, 订单号: {}", id, order.getOrderCode());
+        return R.ok().put("data", expressInfoDTO);
     }
     @Autowired
     IErpOrderService erpOrderService;
@@ -543,9 +577,6 @@ public class FsStoreOrderController extends BaseController
     @Qualifier("hzOMSErpOrderServiceImpl")
     private IErpOrderService hzOMSErpOrderService;
 
-    @Autowired
-    @Qualifier("hzOMSErpOrderServiceImpl")
-    private IErpOrderService hzOMSErpOrderService;
     @Autowired
     @Qualifier("dfOrderServiceImpl")
     private IErpOrderService dfOrderService;

+ 4 - 0
fs-company/src/main/resources/application.yml

@@ -12,3 +12,7 @@ spring:
 #    active: druid-myhk
 #    active: druid-sft
     active: dev
+
+
+erp:
+  hzOmsErpShopCode: 8080

+ 2 - 1
fs-service/src/main/java/com/fs/his/enums/ShipperCodeEnum.java

@@ -6,7 +6,8 @@ import lombok.Getter;
 @Getter
 @AllArgsConstructor
 public enum ShipperCodeEnum {
-    SF("SF","顺丰速运");
+    SF("SF","顺丰速运"),
+    ZTO("ZTO","中通快递");
 
     private String value;
     private String desc;

+ 16 - 8
fs-service/src/main/java/com/fs/his/service/impl/FsExpressServiceImpl.java

@@ -128,34 +128,42 @@ public class FsExpressServiceImpl implements IFsExpressService
 
     @Override
     public ExpressInfoDTO getExpressInfo(String OrderCode, String ShipperCode, String LogisticCode, String lastFourNumber)     {
+        // 添加Logger
+        Logger logger = LoggerFactory.getLogger(this.getClass());
 
+        // 方法入口日志
+        logger.info("开始查询物流信息,单号: {}, 物流公司编码: {}, 物流单号: {}", OrderCode, ShipperCode, LogisticCode);
         //处理顺丰查询轨迹需手机号码后4位
         String requestData;
-        if (ShipperCode.equals(ShipperCodeEnum.SF.getValue())) {
+        if (ShipperCode.equals(ShipperCodeEnum.SF.getValue()) || ShipperCode.equals(ShipperCodeEnum.ZTO.getValue())) {
             requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "','CustomerName':'" + lastFourNumber + "'}";
+            logger.info("顺丰快递查询,添加了手机尾号: {}", lastFourNumber);
         } else {
             requestData = "{'OrderCode':'" + OrderCode + "','ShipperCode':'" + ShipperCode + "','LogisticCode':'" + LogisticCode + "'}";
         }
-
+        logger.info("构建的请求数据: {}", requestData);
         Map<String, Object> params = new HashMap<>();
         try {
             FsSysConfig sysConfig = configUtil.getSysConfig();
             params.put("RequestData", URLEncoder.encode(requestData, "UTF-8"));
-            params.put("EBusinessID",sysConfig.getKdnId().trim());
+            params.put("EBusinessID", sysConfig.getKdnId().trim());
             params.put("RequestType", "8001");
             String dataSign = encrypt(requestData, sysConfig.getKdnKeyId().trim(), "UTF-8");
             params.put("DataSign", URLEncoder.encode(dataSign, "UTF-8"));
             params.put("DataType", "2");
 
-            String result = HttpUtil.post(sysConfig.getKdnAddressUrl().trim(), params);
+            logger.info("准备调用快递鸟接口,URL: {}, 请求参数: {}", sysConfig.getKdnAddressUrl().trim(), params);
 
+            String result = HttpUtil.post(sysConfig.getKdnAddressUrl().trim(), params);
+            logger.info("快递鸟接口返回结果: {}", result);
             //根据公司业务处理返回的信息......
-            ExpressInfoDTO dto=JSONUtil.toBean(result,ExpressInfoDTO.class);
+            ExpressInfoDTO dto = JSONUtil.toBean(result, ExpressInfoDTO.class);
             return dto;
         } catch (Exception e) {
-            throw  new CustomException(e.getMessage());
+            logger.error("查询物流信息异常,单号: {}, 物流公司: {}, 物流单号: {}, 异常信息: {}",
+                    OrderCode, ShipperCode, LogisticCode, e.getMessage(), e);
+            throw new CustomException(e.getMessage());
         }
-
     }
 
     @Override
@@ -177,7 +185,7 @@ public class FsExpressServiceImpl implements IFsExpressService
     public void subscribeEspress(String orderCode, String deliverySn, String deliveryId, String userPhone) {
         //处理顺丰查询轨迹需手机号码后4位
         String requestData;
-        if (deliverySn.equals(ShipperCodeEnum.SF.getValue())) {
+        if (deliverySn.equals(ShipperCodeEnum.SF.getValue()) || deliverySn.equals(ShipperCodeEnum.ZTO.getValue())) {
             requestData = "{'OrderCode':'" + orderCode + "','ShipperCode':'" + deliverySn + "','LogisticCode':'" + deliveryId + "','CustomerName':'" + userPhone + "'}";
         } else {
             requestData = "{'OrderCode':'" + orderCode + "','ShipperCode':'" + deliverySn + "','LogisticCode':'" + deliveryId + "'}";

+ 2 - 2
fs-service/src/main/java/com/fs/his/service/impl/FsStoreOrderServiceImpl.java

@@ -1988,7 +1988,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
 
         FsStoreOrder order = fsStoreOrderMapper.selectFsStoreOrderByOrderId(id);
         String lastFourNumber = "";
-        if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
+        if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue()) || order.getDeliveryCode().equals(ShipperCodeEnum.ZTO.getValue())) {
             lastFourNumber = order.getUserPhone();
             if (lastFourNumber.length() == 11) {
                 lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);
@@ -2004,7 +2004,7 @@ public class FsStoreOrderServiceImpl implements IFsStoreOrderService {
         }
         if ("0".equals(dto.getStateEx()) && "0".equals(dto.getState())) {
             lastFourNumber = "19923690275";
-            if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue())) {
+            if (order.getDeliveryCode().equals(ShipperCodeEnum.SF.getValue()) || order.getDeliveryCode().equals(ShipperCodeEnum.ZTO.getValue())) {
                 lastFourNumber = order.getUserPhone();
                 if (lastFourNumber.length() == 11) {
                     lastFourNumber = StrUtil.sub(lastFourNumber, lastFourNumber.length(), -4);