|
@@ -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>
|