|
@@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.trade.service.order.handler;
|
|
|
|
|
|
import cn.hutool.core.lang.Assert;
|
|
import cn.hutool.core.lang.Assert;
|
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
|
import cn.iocoder.yudao.framework.common.core.KeyValue;
|
|
-import cn.iocoder.yudao.framework.common.core.KeyValue;
|
|
|
|
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.dal.dataobject.order.TradeOrderDO;
|
|
import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
|
|
@@ -17,11 +16,9 @@ import org.springframework.stereotype.Component;
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
-import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
|
|
-import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_DELIVERY_FAIL_COMBINATION_RECORD_STATUS_NOT_SUCCESS;
|
|
|
|
-
|
|
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
|
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_CREATE_FAIL_EXIST_UNPAID;
|
|
import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_CREATE_FAIL_EXIST_UNPAID;
|
|
|
|
+import static cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants.ORDER_DELIVERY_FAIL_COMBINATION_RECORD_STATUS_NOT_SUCCESS;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 拼团订单的 {@link TradeOrderHandler} 实现类
|
|
* 拼团订单的 {@link TradeOrderHandler} 实现类
|
|
@@ -50,11 +47,11 @@ public class TradeCombinationOrderHandler implements TradeOrderHandler {
|
|
}
|
|
}
|
|
Assert.isTrue(orderItems.size() == 1, "拼团时,只允许选择一个商品");
|
|
Assert.isTrue(orderItems.size() == 1, "拼团时,只允许选择一个商品");
|
|
|
|
|
|
- // 校验是否满足拼团活动相关限制
|
|
|
|
|
|
+ // 1. 校验是否满足拼团活动相关限制
|
|
TradeOrderItemDO item = orderItems.get(0);
|
|
TradeOrderItemDO item = orderItems.get(0);
|
|
combinationRecordApi.validateCombinationRecord(order.getUserId(), order.getCombinationActivityId(),
|
|
combinationRecordApi.validateCombinationRecord(order.getUserId(), order.getCombinationActivityId(),
|
|
order.getCombinationHeadId(), item.getSkuId(), item.getCount());
|
|
order.getCombinationHeadId(), item.getSkuId(), item.getCount());
|
|
- // 校验该用户是否存在未支付的拼团活动订单;就是还没支付的时候,重复下单了;需要校验下;不然的话,一个拼团可以下多个单子了;
|
|
|
|
|
|
+ // 2. 校验该用户是否存在未支付的拼团活动订单;就是还没支付的时候,重复下单了;需要校验下;不然的话,一个拼团可以下多个单子了;
|
|
TradeOrderDO activityOrder = orderQueryService.getActivityOrderByUserIdAndActivityIdAndStatus(
|
|
TradeOrderDO activityOrder = orderQueryService.getActivityOrderByUserIdAndActivityIdAndStatus(
|
|
order.getUserId(), order.getCombinationActivityId(), TradeOrderStatusEnum.UNPAID.getStatus());
|
|
order.getUserId(), order.getCombinationActivityId(), TradeOrderStatusEnum.UNPAID.getStatus());
|
|
if (activityOrder != null) {
|
|
if (activityOrder != null) {
|
|
@@ -65,17 +62,18 @@ public class TradeCombinationOrderHandler implements TradeOrderHandler {
|
|
@Override
|
|
@Override
|
|
public void afterPayOrder(TradeOrderDO order, List<TradeOrderItemDO> orderItems) {
|
|
public void afterPayOrder(TradeOrderDO order, List<TradeOrderItemDO> orderItems) {
|
|
// 1.如果不是拼团订单则结束
|
|
// 1.如果不是拼团订单则结束
|
|
- if (TradeOrderTypeEnum.isCombination(order.getType())) {
|
|
|
|
|
|
+ if (!TradeOrderTypeEnum.isCombination(order.getType())) {
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
Assert.isTrue(orderItems.size() == 1, "拼团时,只允许选择一个商品");
|
|
Assert.isTrue(orderItems.size() == 1, "拼团时,只允许选择一个商品");
|
|
|
|
|
|
- // 2.获取商品信息
|
|
|
|
|
|
+ // 2. 创建拼团记录
|
|
TradeOrderItemDO item = orderItems.get(0);
|
|
TradeOrderItemDO item = orderItems.get(0);
|
|
- // 2.1.创建拼团记录
|
|
|
|
KeyValue<Long, Long> recordIdAndHeadId = combinationRecordApi.createCombinationRecord(
|
|
KeyValue<Long, Long> recordIdAndHeadId = combinationRecordApi.createCombinationRecord(
|
|
TradeOrderConvert.INSTANCE.convert(order, item));
|
|
TradeOrderConvert.INSTANCE.convert(order, item));
|
|
- // 3.更新拼团相关信息到订单
|
|
|
|
|
|
+
|
|
|
|
+ // 3. 更新拼团相关信息到订单
|
|
|
|
+ // TODO 芋艿,只需要更新 record
|
|
orderUpdateService.updateOrderCombinationInfo(order.getId(), order.getCombinationActivityId(),
|
|
orderUpdateService.updateOrderCombinationInfo(order.getId(), order.getCombinationActivityId(),
|
|
recordIdAndHeadId.getKey(), recordIdAndHeadId.getValue());
|
|
recordIdAndHeadId.getKey(), recordIdAndHeadId.getValue());
|
|
}
|
|
}
|