From 5ecd0d94eb47aa7a81575a1b9405210bdda25497 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Sat, 30 Sep 2023 11:24:52 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=EF=BC=9A=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=20order=20handler=20=E9=BB=98=E8=AE=A4=E6=8A=BD=E8=B1=A1?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E7=B1=BB=EF=BC=8C=E5=AD=90=E7=B1=BB=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E9=80=89=E6=8B=A9=E6=80=A7=E5=9C=B0=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=8A=BD=E8=B1=A1=E6=96=B9=E6=B3=95=EF=BC=8C=E8=80=8C=E4=B8=8D?= =?UTF-8?q?=E5=BF=85=E5=AE=9E=E7=8E=B0=E6=89=80=E6=9C=89=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/handler/TradeBargainHandler.java | 13 +------ .../handler/TradeCombinationHandler.java | 21 +++++++----- .../handler/TradeOrderDefaultHandler.java | 34 +++++++++++++++++++ .../order/handler/TradeOrderHandler.java | 14 +++++--- .../order/handler/TradeSeckillHandler.java | 13 +------ 5 files changed, 58 insertions(+), 37 deletions(-) create mode 100644 yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderDefaultHandler.java diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBargainHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBargainHandler.java index 18a276fde..aafd826b9 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBargainHandler.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBargainHandler.java @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.trade.service.order.handler; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.module.promotion.api.bargain.BargainActivityApi; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum; -import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO; import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO; import org.springframework.stereotype.Component; @@ -15,7 +14,7 @@ import javax.annotation.Resource; * @author HUIHUI */ @Component -public class TradeBargainHandler implements TradeOrderHandler { +public class TradeBargainHandler extends TradeOrderDefaultHandler { @Resource private BargainActivityApi bargainActivityApi; @@ -34,14 +33,4 @@ public class TradeBargainHandler implements TradeOrderHandler { bargainActivityApi.updateBargainActivityStock(reqBO.getBargainActivityId(), reqBO.getCount()); } - @Override - public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) { - - } - - @Override - public void rollback() { - - } - } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java index 42a2f8139..91c99d2e8 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java @@ -1,11 +1,11 @@ package cn.iocoder.yudao.module.trade.service.order.handler; import cn.hutool.core.util.ObjectUtil; -import cn.iocoder.yudao.module.promotion.api.combination.CombinationActivityApi; import cn.iocoder.yudao.module.promotion.api.combination.CombinationRecordApi; import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum; import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO; +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO; import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO; import org.springframework.stereotype.Component; @@ -17,28 +17,25 @@ import javax.annotation.Resource; * @author HUIHUI */ @Component -public class TradeCombinationHandler implements TradeOrderHandler { +public class TradeCombinationHandler extends TradeOrderDefaultHandler { - @Resource - private CombinationActivityApi combinationActivityApi; @Resource private CombinationRecordApi combinationRecordApi; @Override public void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) { - // 如果是拼团订单; + // 如果不是拼团订单则结束 if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) { return; } // 校验是否满足拼团活动相关限制 - combinationActivityApi.validateCombination(reqBO.getCombinationActivityId(), reqBO.getUserId(), reqBO.getSkuId(), reqBO.getCount()); + combinationRecordApi.validateCombinationRecord(reqBO.getCombinationActivityId(), reqBO.getUserId(), reqBO.getSkuId(), reqBO.getCount()); } @Override public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) { - // TODO @puhui999:需要判断下; - if (true) { + if (reqBO.getCombinationActivityId() == null) { return; } @@ -47,8 +44,14 @@ public class TradeCombinationHandler implements TradeOrderHandler { } @Override - public void rollback() { + public void afterPayOrder(TradeAfterPayOrderReqBO reqBO) { + // 如果不是拼团订单则结束 + if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) { + return; + } + // 更新拼团状态 TODO puhui999:订单支付失败或订单支付过期删除这条拼团记录 + combinationRecordApi.updateRecordStatusToInProgress(reqBO.getUserId(), reqBO.getOrderId(), reqBO.getPayTime()); } } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderDefaultHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderDefaultHandler.java new file mode 100644 index 000000000..824ad803c --- /dev/null +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderDefaultHandler.java @@ -0,0 +1,34 @@ +package cn.iocoder.yudao.module.trade.service.order.handler; + +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO; +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO; +import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO; + +/** + * 订单活动特殊逻辑处理器 handler 默认抽象实现类 + * + * @author HUIHUI + */ +public abstract class TradeOrderDefaultHandler implements TradeOrderHandler { + + @Override + public void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) { + + } + + @Override + public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) { + + } + + @Override + public void afterPayOrder(TradeAfterPayOrderReqBO reqBO) { + + } + + @Override + public void cancelOrder() { + + } + +} diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderHandler.java index 47426dd9b..5429b1add 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderHandler.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderHandler.java @@ -1,10 +1,12 @@ package cn.iocoder.yudao.module.trade.service.order.handler; import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO; +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO; import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO; /** * 订单活动特殊逻辑处理器 handler 接口 + * 提供订单生命周期钩子接口;订单创建前、订单创建后、订单支付后、订单取消 * * @author HUIHUI */ @@ -24,12 +26,16 @@ public interface TradeOrderHandler { */ void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO); - // TODO @puhui999:这个搞成订单取消 /** - * 回滚 + * 支付订单后 + * + * @param reqBO 请求 */ - void rollback(); + void afterPayOrder(TradeAfterPayOrderReqBO reqBO); - // TODO @puhui999:再搞个订单项取消哈 + /** + * 订单取消 + */ + void cancelOrder(); } diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeSeckillHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeSeckillHandler.java index 652717b77..cef790cf8 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeSeckillHandler.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeSeckillHandler.java @@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.trade.service.order.handler; import cn.hutool.core.util.ObjectUtil; import cn.iocoder.yudao.module.promotion.api.seckill.SeckillActivityApi; import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum; -import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO; import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO; import org.springframework.stereotype.Component; @@ -15,7 +14,7 @@ import javax.annotation.Resource; * @author HUIHUI */ @Component -public class TradeSeckillHandler implements TradeOrderHandler { +public class TradeSeckillHandler extends TradeOrderDefaultHandler { @Resource private SeckillActivityApi seckillActivityApi; @@ -34,14 +33,4 @@ public class TradeSeckillHandler implements TradeOrderHandler { seckillActivityApi.updateSeckillStock(reqBO.getSeckillActivityId(), reqBO.getSkuId(), reqBO.getCount()); } - @Override - public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) { - - } - - @Override - public void rollback() { - - } - }