Commit dc1347184fba2f5feec1a86fe34c35f48c9b3ee5
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
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)), | ... | ... |