Commit 5ecd0d94eb47aa7a81575a1b9405210bdda25497

Authored by puhui999
1 parent bce96b29

订单:添加 order handler 默认抽象实现类,子类可以选择性地实现抽象方法,而不必实现所有方法

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;
3 3 import cn.hutool.core.util.ObjectUtil;
4 4 import cn.iocoder.yudao.module.promotion.api.bargain.BargainActivityApi;
5 5 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
6   -import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO;
7 6 import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
8 7 import org.springframework.stereotype.Component;
9 8  
... ... @@ -15,7 +14,7 @@ import javax.annotation.Resource;
15 14 * @author HUIHUI
16 15 */
17 16 @Component
18   -public class TradeBargainHandler implements TradeOrderHandler {
  17 +public class TradeBargainHandler extends TradeOrderDefaultHandler {
19 18  
20 19 @Resource
21 20 private BargainActivityApi bargainActivityApi;
... ... @@ -34,14 +33,4 @@ public class TradeBargainHandler implements TradeOrderHandler {
34 33 bargainActivityApi.updateBargainActivityStock(reqBO.getBargainActivityId(), reqBO.getCount());
35 34 }
36 35  
37   - @Override
38   - public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
39   -
40   - }
41   -
42   - @Override
43   - public void rollback() {
44   -
45   - }
46   -
47 36 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java
1 1 package cn.iocoder.yudao.module.trade.service.order.handler;
2 2  
3 3 import cn.hutool.core.util.ObjectUtil;
4   -import cn.iocoder.yudao.module.promotion.api.combination.CombinationActivityApi;
5 4 import cn.iocoder.yudao.module.promotion.api.combination.CombinationRecordApi;
6 5 import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
7 6 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
8 7 import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO;
  8 +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO;
9 9 import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
10 10 import org.springframework.stereotype.Component;
11 11  
... ... @@ -17,28 +17,25 @@ import javax.annotation.Resource;
17 17 * @author HUIHUI
18 18 */
19 19 @Component
20   -public class TradeCombinationHandler implements TradeOrderHandler {
  20 +public class TradeCombinationHandler extends TradeOrderDefaultHandler {
21 21  
22 22 @Resource
23   - private CombinationActivityApi combinationActivityApi;
24   - @Resource
25 23 private CombinationRecordApi combinationRecordApi;
26 24  
27 25 @Override
28 26 public void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) {
29   - // 如果是拼团订单;
  27 + // 如果不是拼团订单则结束
30 28 if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) {
31 29 return;
32 30 }
33 31  
34 32 // 校验是否满足拼团活动相关限制
35   - combinationActivityApi.validateCombination(reqBO.getCombinationActivityId(), reqBO.getUserId(), reqBO.getSkuId(), reqBO.getCount());
  33 + combinationRecordApi.validateCombinationRecord(reqBO.getCombinationActivityId(), reqBO.getUserId(), reqBO.getSkuId(), reqBO.getCount());
36 34 }
37 35  
38 36 @Override
39 37 public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
40   - // TODO @puhui999:需要判断下;
41   - if (true) {
  38 + if (reqBO.getCombinationActivityId() == null) {
42 39 return;
43 40 }
44 41  
... ... @@ -47,8 +44,14 @@ public class TradeCombinationHandler implements TradeOrderHandler {
47 44 }
48 45  
49 46 @Override
50   - public void rollback() {
  47 + public void afterPayOrder(TradeAfterPayOrderReqBO reqBO) {
  48 + // 如果不是拼团订单则结束
  49 + if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) {
  50 + return;
  51 + }
51 52  
  53 + // 更新拼团状态 TODO puhui999:订单支付失败或订单支付过期删除这条拼团记录
  54 + combinationRecordApi.updateRecordStatusToInProgress(reqBO.getUserId(), reqBO.getOrderId(), reqBO.getPayTime());
52 55 }
53 56  
54 57 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderDefaultHandler.java 0 → 100644
  1 +package cn.iocoder.yudao.module.trade.service.order.handler;
  2 +
  3 +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO;
  4 +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO;
  5 +import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
  6 +
  7 +/**
  8 + * 订单活动特殊逻辑处理器 handler 默认抽象实现类
  9 + *
  10 + * @author HUIHUI
  11 + */
  12 +public abstract class TradeOrderDefaultHandler implements TradeOrderHandler {
  13 +
  14 + @Override
  15 + public void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) {
  16 +
  17 + }
  18 +
  19 + @Override
  20 + public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
  21 +
  22 + }
  23 +
  24 + @Override
  25 + public void afterPayOrder(TradeAfterPayOrderReqBO reqBO) {
  26 +
  27 + }
  28 +
  29 + @Override
  30 + public void cancelOrder() {
  31 +
  32 + }
  33 +
  34 +}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderHandler.java
1 1 package cn.iocoder.yudao.module.trade.service.order.handler;
2 2  
3 3 import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO;
  4 +import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO;
4 5 import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
5 6  
6 7 /**
7 8 * 订单活动特殊逻辑处理器 handler 接口
  9 + * 提供订单生命周期钩子接口;订单创建前、订单创建后、订单支付后、订单取消
8 10 *
9 11 * @author HUIHUI
10 12 */
... ... @@ -24,12 +26,16 @@ public interface TradeOrderHandler {
24 26 */
25 27 void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO);
26 28  
27   - // TODO @puhui999:这个搞成订单取消
28 29 /**
29   - * 回滚
  30 + * 支付订单后
  31 + *
  32 + * @param reqBO 请求
30 33 */
31   - void rollback();
  34 + void afterPayOrder(TradeAfterPayOrderReqBO reqBO);
32 35  
33   - // TODO @puhui999:再搞个订单项取消哈
  36 + /**
  37 + * 订单取消
  38 + */
  39 + void cancelOrder();
34 40  
35 41 }
... ...
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;
3 3 import cn.hutool.core.util.ObjectUtil;
4 4 import cn.iocoder.yudao.module.promotion.api.seckill.SeckillActivityApi;
5 5 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
6   -import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterOrderCreateReqBO;
7 6 import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
8 7 import org.springframework.stereotype.Component;
9 8  
... ... @@ -15,7 +14,7 @@ import javax.annotation.Resource;
15 14 * @author HUIHUI
16 15 */
17 16 @Component
18   -public class TradeSeckillHandler implements TradeOrderHandler {
  17 +public class TradeSeckillHandler extends TradeOrderDefaultHandler {
19 18  
20 19 @Resource
21 20 private SeckillActivityApi seckillActivityApi;
... ... @@ -34,14 +33,4 @@ public class TradeSeckillHandler implements TradeOrderHandler {
34 33 seckillActivityApi.updateSeckillStock(reqBO.getSeckillActivityId(), reqBO.getSkuId(), reqBO.getCount());
35 34 }
36 35  
37   - @Override
38   - public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
39   -
40   - }
41   -
42   - @Override
43   - public void rollback() {
44   -
45   - }
46   -
47 36 }
... ...