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,6 +102,7 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { | ||
| 102 | return recordDO; | 102 | return recordDO; |
| 103 | } | 103 | } |
| 104 | 104 | ||
| 105 | + // TODO @芋艿:在详细预览下; | ||
| 105 | @Override | 106 | @Override |
| 106 | public void validateCombinationRecord(Long activityId, Long userId, Long skuId, Integer count) { | 107 | public void validateCombinationRecord(Long activityId, Long userId, Long skuId, Integer count) { |
| 107 | // 1.1 校验拼团活动是否存在 | 108 | // 1.1 校验拼团活动是否存在 |
| @@ -132,12 +133,14 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { | @@ -132,12 +133,14 @@ public class CombinationRecordServiceImpl implements CombinationRecordService { | ||
| 132 | } | 133 | } |
| 133 | // 5.1、查询关联的订单是否已经支付 | 134 | // 5.1、查询关联的订单是否已经支付 |
| 134 | // 当前 activityId 已经有未支付的订单,不允许在发起新的;要么支付,要么去掉先; | 135 | // 当前 activityId 已经有未支付的订单,不允许在发起新的;要么支付,要么去掉先; |
| 136 | + // TODO 芋艿:看看是不是可以删除掉; | ||
| 135 | Integer orderStatus = tradeOrderApi.getOrderStatus(record.getOrderId()); | 137 | Integer orderStatus = tradeOrderApi.getOrderStatus(record.getOrderId()); |
| 136 | if (ObjectUtil.equal(orderStatus, TradeOrderStatusEnum.UNPAID.getStatus())) { | 138 | if (ObjectUtil.equal(orderStatus, TradeOrderStatusEnum.UNPAID.getStatus())) { |
| 137 | throw exception(COMBINATION_RECORD_FAILED_ORDER_STATUS_UNPAID); | 139 | throw exception(COMBINATION_RECORD_FAILED_ORDER_STATUS_UNPAID); |
| 138 | } | 140 | } |
| 139 | } | 141 | } |
| 140 | 142 | ||
| 143 | + // TODO 芋艿:在详细 review 下; | ||
| 141 | @Override | 144 | @Override |
| 142 | @Transactional(rollbackFor = Exception.class) | 145 | @Transactional(rollbackFor = Exception.class) |
| 143 | public void createCombinationRecord(CombinationRecordCreateReqDTO reqDTO) { | 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 | package cn.iocoder.yudao.module.trade.controller.app.order.vo; | 1 | package cn.iocoder.yudao.module.trade.controller.app.order.vo; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.ObjUtil; | ||
| 3 | import cn.iocoder.yudao.framework.common.validation.InEnum; | 4 | import cn.iocoder.yudao.framework.common.validation.InEnum; |
| 4 | import cn.iocoder.yudao.framework.common.validation.Mobile; | 5 | import cn.iocoder.yudao.framework.common.validation.Mobile; |
| 5 | import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum; | 6 | import cn.iocoder.yudao.module.trade.enums.delivery.DeliveryTypeEnum; |
| @@ -67,7 +68,7 @@ public class AppTradeOrderSettlementReqVO { | @@ -67,7 +68,7 @@ public class AppTradeOrderSettlementReqVO { | ||
| 67 | @JsonIgnore | 68 | @JsonIgnore |
| 68 | public boolean isValidActivityItems() { | 69 | public boolean isValidActivityItems() { |
| 69 | // 校验是否是活动订单 | 70 | // 校验是否是活动订单 |
| 70 | - if (seckillActivityId == null && combinationActivityId == null && combinationHeadId == null) { | 71 | + if (ObjUtil.isAllEmpty(seckillActivityId, combinationActivityId, combinationHeadId)) { |
| 71 | return true; | 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,7 +14,7 @@ import javax.annotation.Resource; | ||
| 14 | * @author HUIHUI | 14 | * @author HUIHUI |
| 15 | */ | 15 | */ |
| 16 | @Component | 16 | @Component |
| 17 | -public class TradeBargainHandler extends TradeOrderDefaultHandler { | 17 | +public class TradeBargainHandler implements TradeOrderHandler { |
| 18 | 18 | ||
| 19 | @Resource | 19 | @Resource |
| 20 | private BargainActivityApi bargainActivityApi; | 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,7 +17,7 @@ import javax.annotation.Resource; | ||
| 17 | * @author HUIHUI | 17 | * @author HUIHUI |
| 18 | */ | 18 | */ |
| 19 | @Component | 19 | @Component |
| 20 | -public class TradeCombinationHandler extends TradeOrderDefaultHandler { | 20 | +public class TradeCombinationHandler implements TradeOrderHandler { |
| 21 | 21 | ||
| 22 | @Resource | 22 | @Resource |
| 23 | private CombinationRecordApi combinationRecordApi; | 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,25 +17,25 @@ public interface TradeOrderHandler { | ||
| 17 | * | 17 | * |
| 18 | * @param reqBO 请求 | 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 | * @param reqBO 请求 | 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 | * @param reqBO 请求 | 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,7 +14,7 @@ import javax.annotation.Resource; | ||
| 14 | * @author HUIHUI | 14 | * @author HUIHUI |
| 15 | */ | 15 | */ |
| 16 | @Component | 16 | @Component |
| 17 | -public class TradeSeckillHandler extends TradeOrderDefaultHandler { | 17 | +public class TradeSeckillHandler implements TradeOrderHandler { |
| 18 | 18 | ||
| 19 | @Resource | 19 | @Resource |
| 20 | private SeckillActivityApi seckillActivityApi; | 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,18 +99,8 @@ public class TradePriceCalculateRespBO { | ||
| 99 | */ | 99 | */ |
| 100 | private Integer vipPrice; | 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 | * = {@link #totalPrice} | 104 | * = {@link #totalPrice} |
| 115 | * - {@link #couponPrice} | 105 | * - {@link #couponPrice} |
| 116 | * - {@link #pointPrice} | 106 | * - {@link #pointPrice} |
| @@ -187,15 +177,8 @@ public class TradePriceCalculateRespBO { | @@ -187,15 +177,8 @@ public class TradePriceCalculateRespBO { | ||
| 187 | */ | 177 | */ |
| 188 | private Integer vipPrice; | 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 | * = {@link #price} * {@link #count} | 182 | * = {@link #price} * {@link #count} |
| 200 | * - {@link #couponPrice} | 183 | * - {@link #couponPrice} |
| 201 | * - {@link #pointPrice} | 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,9 +105,6 @@ public class TradePriceCalculatorHelper { | ||
| 105 | if (!item.getSelected()) { | 105 | if (!item.getSelected()) { |
| 106 | return; | 106 | return; |
| 107 | } | 107 | } |
| 108 | - // TODO puhui: 需要在这里计算活动的价格 | ||
| 109 | - // ========== 一、活动情况 ========== | ||
| 110 | - // ========== 二、正常情况 ========== | ||
| 111 | price.setTotalPrice(price.getTotalPrice() + item.getPrice() * item.getCount()); | 108 | price.setTotalPrice(price.getTotalPrice() + item.getPrice() * item.getCount()); |
| 112 | price.setDiscountPrice(price.getDiscountPrice() + item.getDiscountPrice()); | 109 | price.setDiscountPrice(price.getDiscountPrice() + item.getDiscountPrice()); |
| 113 | price.setDeliveryPrice(price.getDeliveryPrice() + item.getDeliveryPrice()); | 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,7 +46,7 @@ public class TradeSeckillActivityPriceCalculator implements TradePriceCalculator | ||
| 46 | orderItem.getSkuId(), orderItem.getCount()); | 46 | orderItem.getSkuId(), orderItem.getCount()); |
| 47 | 47 | ||
| 48 | // 3.1 记录优惠明细 | 48 | // 3.1 记录优惠明细 |
| 49 | - Integer discountPrice = orderItem.getPayPrice() - seckillActivity.getSeckillPrice(); | 49 | + Integer discountPrice = orderItem.getPayPrice() - seckillActivity.getSeckillPrice() * orderItem.getCount(); |
| 50 | TradePriceCalculatorHelper.addPromotion(result, orderItem, | 50 | TradePriceCalculatorHelper.addPromotion(result, orderItem, |
| 51 | param.getSeckillActivityId(), seckillActivity.getName(), PromotionTypeEnum.SECKILL_ACTIVITY.getType(), | 51 | param.getSeckillActivityId(), seckillActivity.getName(), PromotionTypeEnum.SECKILL_ACTIVITY.getType(), |
| 52 | StrUtil.format("秒杀活动:省 {} 元", TradePriceCalculatorHelper.formatPrice(discountPrice)), | 52 | StrUtil.format("秒杀活动:省 {} 元", TradePriceCalculatorHelper.formatPrice(discountPrice)), |