Browse Source

Merge branch 'dev/2024/0506/update-admin-Y' of feifan/mall-backend-admin into master

接通快递100查询物流信息
Yangzw 10 months ago
parent
commit
a627901063

+ 5 - 0
feifan-module-mall/feifan-module-trade-biz/pom.xml

@@ -124,6 +124,11 @@
             <scope>compile</scope>
         </dependency>
 
+        <dependency>
+            <groupId>com.github.kuaidi100-api</groupId>
+            <artifactId>sdk</artifactId>
+            <version>1.0.12</version>
+        </dependency>
     </dependencies>
 
 </project>

+ 1 - 2
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/framework/delivery/config/TradeExpressProperties.java

@@ -23,10 +23,9 @@ public class TradeExpressProperties {
 
     /**
      * 快递客户端
-     *
      * 默认不提供,需要提醒用户配置一个快递服务商。
      */
-    private ExpressClientEnum client = ExpressClientEnum.NOT_PROVIDE;
+    private ExpressClientEnum client = ExpressClientEnum.KD_100;
 
     /**
      * 快递鸟配置

+ 49 - 0
feifan-module-mall/feifan-module-trade-biz/src/main/java/cn/newfeifan/mall/module/trade/service/order/TradeOrderUpdateServiceImpl.java

@@ -49,8 +49,16 @@ import cn.newfeifan.mall.module.trade.service.price.TradePriceService;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateReqBO;
 import cn.newfeifan.mall.module.trade.service.price.bo.TradePriceCalculateRespBO;
 import cn.newfeifan.mall.module.trade.service.price.calculator.TradePriceCalculatorHelper;
+import com.google.gson.Gson;
+import com.kuaidi100.sdk.api.Subscribe;
+import com.kuaidi100.sdk.contant.ApiInfoConstant;
+import com.kuaidi100.sdk.core.IBaseClient;
+import com.kuaidi100.sdk.request.SubscribeParam;
+import com.kuaidi100.sdk.request.SubscribeParameters;
+import com.kuaidi100.sdk.request.SubscribeReq;
 import lombok.extern.slf4j.Slf4j;
 import org.jetbrains.annotations.NotNull;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -107,6 +115,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
     @Resource
     private TradeOrderProperties tradeOrderProperties;
 
+    @Value("${feifan:trade:express:kd100:key}")
+    private String key;
+
     // =================== Order ===================
 
     @Override
@@ -359,6 +370,13 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
             throw exception(ORDER_DELIVERY_FAIL_STATUS_NOT_UNDELIVERED);
         }
 
+        try {
+            //发送订单订阅
+            testSubscribe(order);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
         // 3. 记录订单日志
         TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.DELIVERED.getStatus(),
                 MapUtil.<String, Object>builder().put("deliveryName", express != null ? express.getName() : "")
@@ -369,6 +387,37 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
                 .setOrderId(order.getId()).setUserId(order.getUserId()).setMessage(null));
     }
 
+    /**
+     * 测试订阅物流信息
+     * @param order 交易订单对象,包含物流信息和接收人手机号
+     * @throws Exception 抛出异常,可能由于外部服务调用失败等原因
+     */
+    private void testSubscribe(TradeOrderDO order) throws Exception{
+        // 根据物流ID获取配送信息
+        DeliveryExpressDO deliveryExpress = deliveryExpressService.getDeliveryExpress(order.getLogisticsId());
+
+        // 设置订阅参数,包括回调URL和手机号
+        SubscribeParameters subscribeParameters = new SubscribeParameters();
+        subscribeParameters.setCallbackurl("http://www.baidu.com");
+        subscribeParameters.setPhone(order.getReceiverMobile());
+
+        // 创建订阅参数实例,并设置相关公司代码、物流单号和密钥
+        SubscribeParam subscribeParam = new SubscribeParam();
+        subscribeParam.setParameters(subscribeParameters);
+        subscribeParam.setCompany(deliveryExpress.getCode());
+        subscribeParam.setNumber(order.getLogisticsNo());
+        subscribeParam.setKey(key);
+
+        // 构建订阅请求对象,设置请求模式和参数
+        SubscribeReq subscribeReq = new SubscribeReq();
+        subscribeReq.setSchema(ApiInfoConstant.SUBSCRIBE_SCHEMA);
+        subscribeReq.setParam(new Gson().toJson(subscribeParam));
+
+        // 调用订阅服务,并打印执行结果
+        IBaseClient subscribe = new Subscribe();
+        System.out.println(subscribe.execute(subscribeReq));
+    }
+
     /**
      * 校验交易订单满足被发货的条件
      * <p>