From 3395a3d86bd4e3795b4fbcc48bad2ef6bf744d0f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 27 Apr 2025 08:58:54 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9A=E3=80=90MALL=E3=80=91=E5=95=86?= =?UTF-8?q?=E5=9F=8E=E8=AE=A2=E5=8D=95=E5=8F=96=E6=B6=88=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E9=A2=9D=E5=A4=96=E6=A0=A1=E9=AA=8C=E6=94=AF=E4=BB=98=E5=8D=95?= =?UTF-8?q?=E7=9A=84=E7=8A=B6=E6=80=81=EF=BC=8C=E8=BF=9B=E4=B8=80=E6=AD=A5?= =?UTF-8?q?=E5=85=9C=E5=BA=95=E5=9B=9E=E8=B0=83=E6=83=85=E5=86=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/TradeOrderUpdateServiceImpl.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java index 92036fa7e7..d47da484e2 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java @@ -545,6 +545,14 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.UNPAID.getStatus())) { throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); } + // 1.3 校验是否支持延迟(不允许取消) + if (TradeOrderStatusEnum.isUnpaid(order.getStatus())) { + PayOrderRespDTO payOrder = payOrderApi.getOrder(order.getPayOrderId()); + if (payOrder != null && PayOrderStatusEnum.isSuccess(payOrder.getStatus())) { + log.warn("[cancelOrderByMember][order({}) 支付单已支付(支付回调延迟),不支持取消]", order.getId()); + throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); + } + } // 2. 取消订单 cancelOrder0(order, TradeOrderCancelTypeEnum.MEMBER_CANCEL); @@ -581,6 +589,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @Transactional(rollbackFor = Exception.class) @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.SYSTEM_CANCEL) public void cancelOrderBySystem(TradeOrderDO order) { + // 校验是否支持延迟(不允许取消) + if (TradeOrderStatusEnum.isUnpaid(order.getStatus())) { + PayOrderRespDTO payOrder = payOrderApi.getOrder(order.getPayOrderId()); + if (payOrder != null && PayOrderStatusEnum.isSuccess(payOrder.getStatus())) { + log.warn("[cancelOrderBySystem][order({}) 支付单已支付(支付回调延迟),不支持取消]", order.getId()); + return; + } + } + cancelOrder0(order, TradeOrderCancelTypeEnum.PAY_TIMEOUT); } @@ -895,12 +912,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { if (order == null) { throw exception(ORDER_NOT_FOUND); } - // 1.3 校验订单是否支付 if (!order.getPayStatus()) { throw exception(ORDER_CANCEL_PAID_FAIL, "已支付"); } - // 1.3 校验订单是否未退款 + // 1.4 校验订单是否未退款 if (ObjUtil.notEqual(TradeOrderRefundStatusEnum.NONE.getStatus(), order.getRefundStatus())) { throw exception(ORDER_CANCEL_PAID_FAIL, "未退款"); }