Commit 3395a3d86bd4e3795b4fbcc48bad2ef6bf744d0f
1 parent
03e510ad
feat:【MALL】商城订单取消时,额外校验支付单的状态,进一步兜底回调情况
Showing
1 changed file
with
18 additions
and
2 deletions
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 { |
| 545 | 545 | if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.UNPAID.getStatus())) { |
| 546 | 546 | throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); |
| 547 | 547 | } |
| 548 | + // 1.3 校验是否支持延迟(不允许取消) | |
| 549 | + if (TradeOrderStatusEnum.isUnpaid(order.getStatus())) { | |
| 550 | + PayOrderRespDTO payOrder = payOrderApi.getOrder(order.getPayOrderId()); | |
| 551 | + if (payOrder != null && PayOrderStatusEnum.isSuccess(payOrder.getStatus())) { | |
| 552 | + log.warn("[cancelOrderByMember][order({}) 支付单已支付(支付回调延迟),不支持取消]", order.getId()); | |
| 553 | + throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); | |
| 554 | + } | |
| 555 | + } | |
| 548 | 556 | |
| 549 | 557 | // 2. 取消订单 |
| 550 | 558 | cancelOrder0(order, TradeOrderCancelTypeEnum.MEMBER_CANCEL); |
| ... | ... | @@ -581,6 +589,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 581 | 589 | @Transactional(rollbackFor = Exception.class) |
| 582 | 590 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.SYSTEM_CANCEL) |
| 583 | 591 | public void cancelOrderBySystem(TradeOrderDO order) { |
| 592 | + // 校验是否支持延迟(不允许取消) | |
| 593 | + if (TradeOrderStatusEnum.isUnpaid(order.getStatus())) { | |
| 594 | + PayOrderRespDTO payOrder = payOrderApi.getOrder(order.getPayOrderId()); | |
| 595 | + if (payOrder != null && PayOrderStatusEnum.isSuccess(payOrder.getStatus())) { | |
| 596 | + log.warn("[cancelOrderBySystem][order({}) 支付单已支付(支付回调延迟),不支持取消]", order.getId()); | |
| 597 | + return; | |
| 598 | + } | |
| 599 | + } | |
| 600 | + | |
| 584 | 601 | cancelOrder0(order, TradeOrderCancelTypeEnum.PAY_TIMEOUT); |
| 585 | 602 | } |
| 586 | 603 | |
| ... | ... | @@ -895,12 +912,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 895 | 912 | if (order == null) { |
| 896 | 913 | throw exception(ORDER_NOT_FOUND); |
| 897 | 914 | } |
| 898 | - | |
| 899 | 915 | // 1.3 校验订单是否支付 |
| 900 | 916 | if (!order.getPayStatus()) { |
| 901 | 917 | throw exception(ORDER_CANCEL_PAID_FAIL, "已支付"); |
| 902 | 918 | } |
| 903 | - // 1.3 校验订单是否未退款 | |
| 919 | + // 1.4 校验订单是否未退款 | |
| 904 | 920 | if (ObjUtil.notEqual(TradeOrderRefundStatusEnum.NONE.getStatus(), order.getRefundStatus())) { |
| 905 | 921 | throw exception(ORDER_CANCEL_PAID_FAIL, "未退款"); |
| 906 | 922 | } | ... | ... |