不再调用快递取消/拦截接口

pull/1121/head
梁宇奇 2025-08-26 13:05:50 +08:00
parent 7fbfb06c36
commit 8bb26814c1
2 changed files with 72 additions and 75 deletions

View File

@ -370,28 +370,27 @@ public class StoreOrderController extends XktBaseController {
//创建售后订单
AfterSaleApplyResultDTO afterSaleApplyResult = storeOrderService.createAfterSaleOrder(dto);
//取消/拦截物流
//TODO 调用失败如何补偿?
Set<ExpressSimpleDTO> stopExpresses = afterSaleApplyResult.getNeedStopExpresses();
for (ExpressSimpleDTO express : stopExpresses) {
boolean cancelSuccess = true;
ExpressManager expressManager = expressService.getExpressManager(express.getExpressId());
if (EExpressStatus.PLACING.getValue().equals(express.getExpressStatus())
|| EExpressStatus.PLACED.getValue().equals(express.getExpressStatus())) {
cancelSuccess = expressManager.cancelShip(new ExpressCancelReqDTO(
express.getExpressReqNo(),
express.getExpressWaybillNo()
));
logger.info("物流订单取消waybillNo={},result={}", express.getExpressWaybillNo(), cancelSuccess);
}
if (!cancelSuccess ||
EExpressStatus.PICKED_UP.getValue().equals(express.getExpressStatus())) {
boolean interceptSuccess = expressManager.interceptShip(new ExpressInterceptReqDTO(
express.getExpressReqNo(),
express.getExpressWaybillNo()
));
logger.info("物流订单拦截waybillNo={},result={}", express.getExpressWaybillNo(), interceptSuccess);
}
}
// Set<ExpressSimpleDTO> stopExpresses = afterSaleApplyResult.getNeedStopExpresses();
// for (ExpressSimpleDTO express : stopExpresses) {
// boolean cancelSuccess = true;
// ExpressManager expressManager = expressService.getExpressManager(express.getExpressId());
// if (EExpressStatus.PLACING.getValue().equals(express.getExpressStatus())
// || EExpressStatus.PLACED.getValue().equals(express.getExpressStatus())) {
// cancelSuccess = expressManager.cancelShip(new ExpressCancelReqDTO(
// express.getExpressReqNo(),
// express.getExpressWaybillNo()
// ));
// logger.info("物流订单取消waybillNo={},result={}", express.getExpressWaybillNo(), cancelSuccess);
// }
// if (!cancelSuccess ||
// EExpressStatus.PICKED_UP.getValue().equals(express.getExpressStatus())) {
// boolean interceptSuccess = expressManager.interceptShip(new ExpressInterceptReqDTO(
// express.getExpressReqNo(),
// express.getExpressWaybillNo()
// ));
// logger.info("物流订单拦截waybillNo={},result={}", express.getExpressWaybillNo(), interceptSuccess);
// }
// }
return success(afterSaleApplyResult.getStoreOrderId());
}

View File

@ -99,64 +99,62 @@ public class YtoExpressManagerImpl implements ExpressManager {
@Override
public boolean cancelShip(ExpressCancelReqDTO cancelReqDTO) {
//取消订单,直接不发货不取件
// Assert.notNull(cancelReqDTO);
// Assert.notEmpty(cancelReqDTO.getExpressReqNo());
// YtoCancelOrderParam cancelOrderParam = new YtoCancelOrderParam();
// cancelOrderParam.setLogisticsNo(cancelReqDTO.getExpressReqNo());
// cancelOrderParam.setCancelDesc("订单取消");
// try {
// String param = JSONUtil.toJsonStr(cancelOrderParam);
// String sign = YtoSignUtil.sign("korder_cancel_adapter", "v1", param, appSecret);
// YtoPublicRequest request = YtoPublicRequest.builder()
// .timestamp(System.currentTimeMillis())
// .param(param)
// .format(YtoPublicRequest.EFormat.JSON)
// .sign(sign).build();
// String rtnStr = HttpUtil.post(gatewayUrl + "open/korder_cancel_adapter/v1/av7bfQ/" + appKey,
// JSONUtil.toJsonStr(request));
// log.info("圆通订单取消返回信息: {}", rtnStr);
// JSONObject rtnJson = JSONUtil.parseObj(rtnStr);
// String logisticsNo = rtnJson.getStr("logisticsNo");
// if (StrUtil.isNotEmpty(logisticsNo)
// && logisticsNo.equals(cancelOrderParam.getLogisticsNo())) {
// return true;
// }
// } catch (Exception e) {
// log.error("圆通订单取消异常", e);
// }
// log.warn("圆通订单取消失败: {}", cancelReqDTO);
Assert.notNull(cancelReqDTO);
Assert.notEmpty(cancelReqDTO.getExpressReqNo());
YtoCancelOrderParam cancelOrderParam = new YtoCancelOrderParam();
cancelOrderParam.setLogisticsNo(cancelReqDTO.getExpressReqNo());
cancelOrderParam.setCancelDesc("订单取消");
try {
String param = JSONUtil.toJsonStr(cancelOrderParam);
String sign = YtoSignUtil.sign("korder_cancel_adapter", "v1", param, appSecret);
YtoPublicRequest request = YtoPublicRequest.builder()
.timestamp(System.currentTimeMillis())
.param(param)
.format(YtoPublicRequest.EFormat.JSON)
.sign(sign).build();
String rtnStr = HttpUtil.post(gatewayUrl + "open/korder_cancel_adapter/v1/av7bfQ/" + appKey,
JSONUtil.toJsonStr(request));
log.info("圆通订单取消返回信息: {}", rtnStr);
JSONObject rtnJson = JSONUtil.parseObj(rtnStr);
String logisticsNo = rtnJson.getStr("logisticsNo");
if (StrUtil.isNotEmpty(logisticsNo)
&& logisticsNo.equals(cancelOrderParam.getLogisticsNo())) {
return true;
}
} catch (Exception e) {
log.error("圆通订单取消异常", e);
}
log.warn("圆通订单取消失败: {}", cancelReqDTO);
return false;
}
@Override
public boolean interceptShip(ExpressInterceptReqDTO interceptReqDTO) {
//TODO 未对接
// Assert.notNull(interceptReqDTO);
// Assert.notEmpty(interceptReqDTO.getExpressWaybillNo());
// YtoInterceptReturnParam interceptReturnParam = new YtoInterceptReturnParam();
// interceptReturnParam.setWaybillNo(interceptReqDTO.getExpressWaybillNo());
// interceptReturnParam.setWantedDesc("拦截退回");
// try {
// String param = JSONUtil.toJsonStr(interceptReturnParam);
// String sign = YtoSignUtil.sign("wanted_report_adapter", "v1", param, appSecret);
// YtoPublicRequest request = YtoPublicRequest.builder()
// .timestamp(System.currentTimeMillis())
// .param(param)
// .format(YtoPublicRequest.EFormat.JSON)
// .sign(sign).build();
// String rtnStr = HttpUtil.post(gatewayUrl + "open/wanted_report_adapter/v1/av7bfQ/" + appKey,
// JSONUtil.toJsonStr(request));
// log.info("圆通订单拦截返回信息: {}", rtnStr);
// JSONObject rtnJson = JSONUtil.parseObj(rtnStr);
// Integer statusCode = rtnJson.getInt("statusCode");
// if (statusCode != null && statusCode == 0) {
// return true;
// }
// } catch (Exception e) {
// log.error("圆通订单拦截异常", e);
// }
// log.warn("圆通订单拦截失败: {}", interceptReqDTO);
Assert.notNull(interceptReqDTO);
Assert.notEmpty(interceptReqDTO.getExpressWaybillNo());
YtoInterceptReturnParam interceptReturnParam = new YtoInterceptReturnParam();
interceptReturnParam.setWaybillNo(interceptReqDTO.getExpressWaybillNo());
interceptReturnParam.setWantedDesc("拦截退回");
try {
String param = JSONUtil.toJsonStr(interceptReturnParam);
String sign = YtoSignUtil.sign("wanted_report_adapter", "v1", param, appSecret);
YtoPublicRequest request = YtoPublicRequest.builder()
.timestamp(System.currentTimeMillis())
.param(param)
.format(YtoPublicRequest.EFormat.JSON)
.sign(sign).build();
String rtnStr = HttpUtil.post(gatewayUrl + "open/wanted_report_adapter/v1/av7bfQ/" + appKey,
JSONUtil.toJsonStr(request));
log.info("圆通订单拦截返回信息: {}", rtnStr);
JSONObject rtnJson = JSONUtil.parseObj(rtnStr);
Integer statusCode = rtnJson.getInt("statusCode");
if (statusCode != null && statusCode == 0) {
return true;
}
} catch (Exception e) {
log.error("圆通订单拦截异常", e);
}
log.warn("圆通订单拦截失败: {}", interceptReqDTO);
return false;
}