订单:添加 order handler 默认抽象实现类,子类可以选择性地实现抽象方法,而不必实现所有方法
This commit is contained in:
parent
bce96b29a6
commit
5ecd0d94eb
|
@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.trade.service.order.handler;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.iocoder.yudao.module.promotion.api.bargain.BargainActivityApi;
|
import cn.iocoder.yudao.module.promotion.api.bargain.BargainActivityApi;
|
||||||
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
|
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 cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -15,7 +14,7 @@ import javax.annotation.Resource;
|
||||||
* @author HUIHUI
|
* @author HUIHUI
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class TradeBargainHandler implements TradeOrderHandler {
|
public class TradeBargainHandler extends TradeOrderDefaultHandler {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private BargainActivityApi bargainActivityApi;
|
private BargainActivityApi bargainActivityApi;
|
||||||
|
@ -34,14 +33,4 @@ public class TradeBargainHandler implements TradeOrderHandler {
|
||||||
bargainActivityApi.updateBargainActivityStock(reqBO.getBargainActivityId(), reqBO.getCount());
|
bargainActivityApi.updateBargainActivityStock(reqBO.getBargainActivityId(), reqBO.getCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void rollback() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
package cn.iocoder.yudao.module.trade.service.order.handler;
|
package cn.iocoder.yudao.module.trade.service.order.handler;
|
||||||
|
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
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.promotion.api.combination.CombinationRecordApi;
|
||||||
import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
|
import cn.iocoder.yudao.module.trade.convert.order.TradeOrderConvert;
|
||||||
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
|
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.TradeAfterOrderCreateReqBO;
|
||||||
|
import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO;
|
||||||
import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
|
import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -17,28 +17,25 @@ import javax.annotation.Resource;
|
||||||
* @author HUIHUI
|
* @author HUIHUI
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class TradeCombinationHandler implements TradeOrderHandler {
|
public class TradeCombinationHandler extends TradeOrderDefaultHandler {
|
||||||
|
|
||||||
@Resource
|
|
||||||
private CombinationActivityApi combinationActivityApi;
|
|
||||||
@Resource
|
@Resource
|
||||||
private CombinationRecordApi combinationRecordApi;
|
private CombinationRecordApi combinationRecordApi;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) {
|
public void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) {
|
||||||
// 如果是拼团订单;
|
// 如果不是拼团订单则结束
|
||||||
if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) {
|
if (ObjectUtil.notEqual(TradeOrderTypeEnum.COMBINATION.getType(), reqBO.getOrderType())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 校验是否满足拼团活动相关限制
|
// 校验是否满足拼团活动相关限制
|
||||||
combinationActivityApi.validateCombination(reqBO.getCombinationActivityId(), reqBO.getUserId(), reqBO.getSkuId(), reqBO.getCount());
|
combinationRecordApi.validateCombinationRecord(reqBO.getCombinationActivityId(), reqBO.getUserId(), reqBO.getSkuId(), reqBO.getCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
|
public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
|
||||||
// TODO @puhui999:需要判断下;
|
if (reqBO.getCombinationActivityId() == null) {
|
||||||
if (true) {
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,8 +44,14 @@ public class TradeCombinationHandler implements TradeOrderHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@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());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,10 +1,12 @@
|
||||||
package cn.iocoder.yudao.module.trade.service.order.handler;
|
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.TradeAfterOrderCreateReqBO;
|
||||||
|
import cn.iocoder.yudao.module.trade.service.order.bo.TradeAfterPayOrderReqBO;
|
||||||
import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
|
import cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单活动特殊逻辑处理器 handler 接口
|
* 订单活动特殊逻辑处理器 handler 接口
|
||||||
|
* 提供订单生命周期钩子接口;订单创建前、订单创建后、订单支付后、订单取消
|
||||||
*
|
*
|
||||||
* @author HUIHUI
|
* @author HUIHUI
|
||||||
*/
|
*/
|
||||||
|
@ -24,12 +26,16 @@ public interface TradeOrderHandler {
|
||||||
*/
|
*/
|
||||||
void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO);
|
void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO);
|
||||||
|
|
||||||
// TODO @puhui999:这个搞成订单取消
|
|
||||||
/**
|
/**
|
||||||
* 回滚
|
* 支付订单后
|
||||||
|
*
|
||||||
|
* @param reqBO 请求
|
||||||
*/
|
*/
|
||||||
void rollback();
|
void afterPayOrder(TradeAfterPayOrderReqBO reqBO);
|
||||||
|
|
||||||
// TODO @puhui999:再搞个订单项取消哈
|
/**
|
||||||
|
* 订单取消
|
||||||
|
*/
|
||||||
|
void cancelOrder();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.trade.service.order.handler;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import cn.iocoder.yudao.module.promotion.api.seckill.SeckillActivityApi;
|
import cn.iocoder.yudao.module.promotion.api.seckill.SeckillActivityApi;
|
||||||
import cn.iocoder.yudao.module.trade.enums.order.TradeOrderTypeEnum;
|
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 cn.iocoder.yudao.module.trade.service.order.bo.TradeBeforeOrderCreateReqBO;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
@ -15,7 +14,7 @@ import javax.annotation.Resource;
|
||||||
* @author HUIHUI
|
* @author HUIHUI
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
public class TradeSeckillHandler implements TradeOrderHandler {
|
public class TradeSeckillHandler extends TradeOrderDefaultHandler {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SeckillActivityApi seckillActivityApi;
|
private SeckillActivityApi seckillActivityApi;
|
||||||
|
@ -34,14 +33,4 @@ public class TradeSeckillHandler implements TradeOrderHandler {
|
||||||
seckillActivityApi.updateSeckillStock(reqBO.getSeckillActivityId(), reqBO.getSkuId(), reqBO.getCount());
|
seckillActivityApi.updateSeckillStock(reqBO.getSeckillActivityId(), reqBO.getSkuId(), reqBO.getCount());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void rollback() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue