Forráskód Böngészése

【代码评审】商城:积分商城的下单流程

YunaiV 8 hónapja
szülő
commit
e604cba3bf

+ 4 - 5
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/point/AppPointActivityController.java

@@ -73,12 +73,11 @@ public class AppPointActivityController {
 
         // 2. 拼接数据
         List<PointProductDO> products = pointActivityService.getPointProductListByActivityIds(Collections.singletonList(id));
-        AppPointActivityDetailRespVO respVO = BeanUtils.toBean(activity, AppPointActivityDetailRespVO.class);
-        // 设置 product 信息
-        respVO.setProducts(BeanUtils.toBean(products, AppPointActivityDetailRespVO.Product.class));
-        PointProductDO minProduct = getMinPropertyObj(products, PointProductDO::getPoint);
+        PointProductDO minProduct = getMinObject(products, PointProductDO::getPoint);
         assert minProduct != null;
-        respVO.setPoint(minProduct.getPoint()).setPrice(minProduct.getPrice());
+        AppPointActivityDetailRespVO respVO = BeanUtils.toBean(activity, AppPointActivityDetailRespVO.class)
+                .setProducts(BeanUtils.toBean(products, AppPointActivityDetailRespVO.Product.class))
+                .setPoint(minProduct.getPoint()).setPrice(minProduct.getPrice());
         return success(respVO);
     }
 

+ 1 - 1
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/point/vo/AppPointActivityDetailRespVO.java

@@ -30,7 +30,7 @@ public class AppPointActivityDetailRespVO {
     @Schema(description = "商品信息数组", requiredMode = Schema.RequiredMode.REQUIRED)
     private List<Product> products;
 
-    //======================= 显示所需兑换积分最少的 sku 信息 =======================
+    //======================= 显示所需兑换积分最少的 SKU 信息 =======================
 
     @Schema(description = "兑换积分", requiredMode = Schema.RequiredMode.REQUIRED)
     private Integer point;

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderQueryService.java

@@ -116,7 +116,7 @@ public interface TradeOrderQueryService {
      * @param activityId 活动编号
      * @return 秒杀商品数量
      */
-    int getActivityProductCount(Long userId, Long activityId);
+    int getSeckillProductCount(Long userId, Long activityId);
 
     // =================== Order Item ===================
 

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderQueryServiceImpl.java

@@ -174,7 +174,7 @@ public class TradeOrderQueryServiceImpl implements TradeOrderQueryService {
     }
 
     @Override
-    public int getActivityProductCount(Long userId, Long activityId) {
+    public int getSeckillProductCount(Long userId, Long activityId) {
         // 获得订单列表
         List<TradeOrderDO> orders = tradeOrderMapper.selectListByUserIdAndSeckillActivityId(userId, activityId);
         orders.removeIf(order -> TradeOrderStatusEnum.isCanceled(order.getStatus())); // 过滤掉【已取消】的订单

+ 2 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/TradePriceServiceImpl.java

@@ -69,7 +69,8 @@ public class TradePriceServiceImpl implements TradePriceService {
                 .buildCalculateResp(calculateReqBO, spuList, skuList);
         priceCalculators.forEach(calculator -> calculator.calculate(calculateReqBO, calculateRespBO));
         // 2.2  如果最终支付金额小于等于 0,则抛出业务异常
-        if (calculateReqBO.getPointActivityId() == null && calculateRespBO.getPrice().getPayPrice() <= 0) {
+        if (calculateReqBO.getPointActivityId() == null // 积分订单,允许支付金额为 0
+                && calculateRespBO.getPrice().getPayPrice() <= 0) {
             log.error("[calculatePrice][价格计算不正确,请求 calculateReqDTO({}),结果 priceCalculate({})]",
                     calculateReqBO, calculateRespBO);
             throw exception(PRICE_CALCULATE_PAY_PRICE_ILLEGAL);

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradePointActivityPriceCalculator.java

@@ -84,7 +84,7 @@ public class TradePointActivityPriceCalculator implements TradePriceCalculator {
         // 1. 校验是否可以参与积分商城活动
         PointValidateJoinRespDTO pointValidateJoinRespDTO = pointActivityApi.validateJoinPointActivity(activityId, skuId, count);
         // 2. 校验总限购数量,目前只有 trade 有具体下单的数据,需要交给 trade 价格计算使用
-        int activityProductCount = tradeOrderQueryService.getActivityProductCount(userId, activityId);
+        int activityProductCount = tradeOrderQueryService.getSeckillProductCount(userId, activityId);
         if (activityProductCount + count > pointValidateJoinRespDTO.getCount()) {
             throw exception(PRICE_CALCULATE_POINT_TOTAL_LIMIT_COUNT);
         }

+ 1 - 1
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/price/calculator/TradeSeckillActivityPriceCalculator.java

@@ -60,7 +60,7 @@ public class TradeSeckillActivityPriceCalculator implements TradePriceCalculator
         // 1. 校验是否可以参与秒杀
         SeckillValidateJoinRespDTO seckillActivity = seckillActivityApi.validateJoinSeckill(activityId, skuId, count);
         // 2. 校验总限购数量,目前只有 trade 有具体下单的数据,需要交给 trade 价格计算使用
-        int seckillProductCount = tradeOrderQueryService.getActivityProductCount(userId, activityId);
+        int seckillProductCount = tradeOrderQueryService.getSeckillProductCount(userId, activityId);
         if (seckillProductCount + count > seckillActivity.getTotalLimitCount()) {
             throw exception(PRICE_CALCULATE_SECKILL_TOTAL_LIMIT_COUNT);
         }