Commit dc1347184fba2f5feec1a86fe34c35f48c9b3ee5

Authored by YunaiV
1 parent 20f5834d

code review:拼团、砍价活动

Showing 11 changed files with 15 additions and 64 deletions
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationRecordServiceImpl.java
... ... @@ -102,6 +102,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
102 102 return recordDO;
103 103 }
104 104  
  105 + // TODO @芋艿:在详细预览下;
105 106 @Override
106 107 public void validateCombinationRecord(Long activityId, Long userId, Long skuId, Integer count) {
107 108 // 1.1 校验拼团活动是否存在
... ... @@ -132,12 +133,14 @@ public class CombinationRecordServiceImpl implements CombinationRecordService {
132 133 }
133 134 // 5.1、查询关联的订单是否已经支付
134 135 // 当前 activityId 已经有未支付的订单,不允许在发起新的;要么支付,要么去掉先;
  136 + // TODO 芋艿:看看是不是可以删除掉;
135 137 Integer orderStatus = tradeOrderApi.getOrderStatus(record.getOrderId());
136 138 if (ObjectUtil.equal(orderStatus, TradeOrderStatusEnum.UNPAID.getStatus())) {
137 139 throw exception(COMBINATION_RECORD_FAILED_ORDER_STATUS_UNPAID);
138 140 }
139 141 }
140 142  
  143 + // TODO 芋艿:在详细 review 下;
141 144 @Override
142 145 @Transactional(rollbackFor = Exception.class)
143 146 public void createCombinationRecord(CombinationRecordCreateReqDTO reqDTO) {
... ...
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/api/order/TradeOrderApi.java
... ... @@ -7,6 +7,7 @@ package cn.iocoder.yudao.module.trade.api.order;
7 7 */
8 8 public interface TradeOrderApi {
9 9  
  10 + // TODO 芋艿:看看是不是可以删除掉;
10 11 /**
11 12 * 获取订单状态
12 13 *
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/vo/AppTradeOrderSettlementReqVO.java
1 1 package cn.iocoder.yudao.module.trade.controller.app.order.vo;
2 2  
  3 +import cn.hutool.core.util.ObjUtil;
3 4 import cn.iocoder.yudao.framework.common.validation.InEnum;
4 5 import cn.iocoder.yudao.framework.common.validation.Mobile;
5 6 import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum;
... ... @@ -67,7 +68,7 @@ public class AppTradeOrderSettlementReqVO {
67 68 @JsonIgnore
68 69 public boolean isValidActivityItems() {
69 70 // 校验是否是活动订单
70   - if (seckillActivityId == null && combinationActivityId == null && combinationHeadId == null) {
  71 + if (ObjUtil.isAllEmpty(seckillActivityId, combinationActivityId, combinationHeadId)) {
71 72 return true;
72 73 }
73 74 // 校验订单项是否超出
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBargainHandler.java
... ... @@ -14,7 +14,7 @@ import javax.annotation.Resource;
14 14 * @author HUIHUI
15 15 */
16 16 @Component
17   -public class TradeBargainHandler extends TradeOrderDefaultHandler {
  17 +public class TradeBargainHandler implements TradeOrderHandler {
18 18  
19 19 @Resource
20 20 private BargainActivityApi bargainActivityApi;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeCombinationHandler.java
... ... @@ -17,7 +17,7 @@ import javax.annotation.Resource;
17 17 * @author HUIHUI
18 18 */
19 19 @Component
20   -public class TradeCombinationHandler extends TradeOrderDefaultHandler {
  20 +public class TradeCombinationHandler implements TradeOrderHandler {
21 21  
22 22 @Resource
23 23 private CombinationRecordApi combinationRecordApi;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeOrderDefaultHandler.java deleted
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
... ... @@ -17,25 +17,25 @@ public interface TradeOrderHandler {
17 17 *
18 18 * @param reqBO 请求
19 19 */
20   - void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO);
  20 + default void beforeOrderCreate(TradeBeforeOrderCreateReqBO reqBO) {}
21 21  
22 22 /**
23 23 * 订单创建后
24 24 *
25 25 * @param reqBO 请求
26 26 */
27   - void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO);
  27 + default void afterOrderCreate(TradeAfterOrderCreateReqBO reqBO) {}
28 28  
29 29 /**
30 30 * 支付订单后
31 31 *
32 32 * @param reqBO 请求
33 33 */
34   - void afterPayOrder(TradeAfterPayOrderReqBO reqBO);
  34 + default void afterPayOrder(TradeAfterPayOrderReqBO reqBO) {}
35 35  
36 36 /**
37 37 * 订单取消
38 38 */
39   - void cancelOrder();
  39 + default void cancelOrder() {}
40 40  
41 41 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeSeckillHandler.java
... ... @@ -14,7 +14,7 @@ import javax.annotation.Resource;
14 14 * @author HUIHUI
15 15 */
16 16 @Component
17   -public class TradeSeckillHandler extends TradeOrderDefaultHandler {
  17 +public class TradeSeckillHandler implements TradeOrderHandler {
18 18  
19 19 @Resource
20 20 private SeckillActivityApi seckillActivityApi;
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/bo/TradePriceCalculateRespBO.java
... ... @@ -99,18 +99,8 @@ public class TradePriceCalculateRespBO {
99 99 */
100 100 private Integer vipPrice;
101 101 /**
102   - * 秒杀、拼团、砍价活动商品的总金额,单位:分
103   - *
104   - * 基于 {@link OrderItem#getActivityPrice()} ()} * {@link OrderItem#getCount()} 求和
105   - */
106   - private Integer activityPrice;
107   - /**
108 102 * 最终购买金额(总),单位:分
109 103 *
110   - * ==========活动情况===========
111   - * = {@link #activityPrice}
112   - * + {@link #deliveryPrice}
113   - * ==========正常情况===========
114 104 * = {@link #totalPrice}
115 105 * - {@link #couponPrice}
116 106 * - {@link #pointPrice}
... ... @@ -187,15 +177,8 @@ public class TradePriceCalculateRespBO {
187 177 */
188 178 private Integer vipPrice;
189 179 /**
190   - * 秒杀、拼团、砍价活动商品的金额,单位:分
191   - */
192   - private Integer activityPrice;
193   - /**
194 180 * 应付金额(总),单位:分
195   - * ==========活动情况===========
196   - * = {@link #activityPrice} * {@link #count}
197   - * + {@link #deliveryPrice}
198   - * ==========正常情况===========
  181 + *
199 182 * = {@link #price} * {@link #count}
200 183 * - {@link #couponPrice}
201 184 * - {@link #pointPrice}
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradePriceCalculatorHelper.java
... ... @@ -105,9 +105,6 @@ public class TradePriceCalculatorHelper {
105 105 if (!item.getSelected()) {
106 106 return;
107 107 }
108   - // TODO puhui: 需要在这里计算活动的价格
109   - // ========== 一、活动情况 ==========
110   - // ========== 二、正常情况 ==========
111 108 price.setTotalPrice(price.getTotalPrice() + item.getPrice() * item.getCount());
112 109 price.setDiscountPrice(price.getDiscountPrice() + item.getDiscountPrice());
113 110 price.setDeliveryPrice(price.getDeliveryPrice() + item.getDeliveryPrice());
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeSeckillActivityPriceCalculator.java
... ... @@ -46,7 +46,7 @@ public class TradeSeckillActivityPriceCalculator implements TradePriceCalculator
46 46 orderItem.getSkuId(), orderItem.getCount());
47 47  
48 48 // 3.1 记录优惠明细
49   - Integer discountPrice = orderItem.getPayPrice() - seckillActivity.getSeckillPrice();
  49 + Integer discountPrice = orderItem.getPayPrice() - seckillActivity.getSeckillPrice() * orderItem.getCount();
50 50 TradePriceCalculatorHelper.addPromotion(result, orderItem,
51 51 param.getSeckillActivityId(), seckillActivity.getName(), PromotionTypeEnum.SECKILL_ACTIVITY.getType(),
52 52 StrUtil.format("秒杀活动:省 {} 元", TradePriceCalculatorHelper.formatPrice(discountPrice)),
... ...