guomengjiao 1 месяц назад
Родитель
Сommit
200c375690

+ 2 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/domain/SeckillActivityProduct.java

@@ -18,6 +18,7 @@ import lombok.Data;
 
 import java.math.BigDecimal;
 import java.util.List;
+import java.util.Optional;
 
 /**
  * 秒杀活动商品对象 tb_seckill_activity_product
@@ -121,9 +122,9 @@ public class SeckillActivityProduct extends BaseEntity {
      */
     public void computeResultSaleAndResidueStock() {
         //输出销量 = 初始化销量+真实销量
+        this.realSaleNum = Optional.ofNullable(this.realSaleNum).orElse(0);
         this.resultSaleNum = this.initSaleNum + this.realSaleNum;
         this.realStockTotal = this.residueStockTotal + this.realSaleNum;
-
     }
 
     @FilePathValue

+ 17 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/domain/vo/SeckillActivityProductVo.java

@@ -1,11 +1,15 @@
 package com.ruoyi.shop.marketing.seckill.domain.vo;
 
+import cn.hutool.extra.spring.SpringUtil;
 import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
 import com.alibaba.excel.annotation.ExcelProperty;
+import com.ruoyi.common.enums.order.MarketingType;
 import com.ruoyi.common.filepathsplicing.FilePathValue;
 import com.ruoyi.common.utils.MathUtils;
 import com.ruoyi.shop.enums.PriceType;
+import com.ruoyi.shop.product.domain.vo.ProductSkuSetVo;
 import com.ruoyi.shop.product.domain.vo.SkuTableItem;
+import com.ruoyi.shop.product.service.IProductSkuSetService;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
@@ -211,5 +215,18 @@ public class SeckillActivityProductVo {
     @ApiModelProperty("最大销售价")
     private BigDecimal maxSalePrice;
 
+    @FilePathValue
+    @ApiModelProperty("商品规格")
+    private List<ProductSkuSetVo> productSkuSetList;
+
+    /**
+     * 加载商品规格信息
+     */
+    public void loadProductSkuSetList() {
+        IProductSkuSetService service = SpringUtil.getBean("productSkuSetServiceImpl", IProductSkuSetService.class);
+        this.productSkuSetList = service.loadVoByBusinessIdAndProductIdAndActivityProductId(this.businessId, this.productId, this.id, MarketingType.GROUP);
+        this.residueStockTotal = this.productSkuSetList.stream().mapToInt(ProductSkuSetVo::getStock).sum();
+    }
+
 
 }

+ 1 - 4
ruoyi-shop/src/main/java/com/ruoyi/shop/marketing/seckill/service/impl/SeckillActivityProductServiceImpl.java

@@ -207,10 +207,6 @@ public class SeckillActivityProductServiceImpl implements ISeckillActivityProduc
                 throw new ServiceException(SeckillActivityProductExceptionEnum.FIXPRICE_OUT_OF_RANGE);
             }
         }
-        if(bo.getRealStockTotal()<=bo.getInitSaleNum())
-        {
-            throw new ServiceException(SeckillActivityProductExceptionEnum.REAL_STOCK_TOTAL_LT_INIT_SALE_NUM);
-        }
         //4、校验活动价格
         List<ProductSkuSetBo> productSkuSetList = bo.getProductSkuSetList();
         if (CollUtil.isNotEmpty(productSkuSetList)) {
@@ -303,6 +299,7 @@ public class SeckillActivityProductServiceImpl implements ISeckillActivityProduc
             }
         } else {
             vo.loadDiscount();
+            vo.loadProductSkuSetList();
         }
         return vo;
     }

+ 1 - 0
ruoyi-shop/src/main/java/com/ruoyi/shop/product/domain/bo/ProductSkuSetBo.java

@@ -153,6 +153,7 @@ public class ProductSkuSetBo extends BaseTimeEntity {
      * 库存
      */
     @ApiModelProperty(value = "库存")
+    @NotNull(message = "库存不能为空", groups = { AddGroup.class, EditGroup.class })
     private Integer stock;
 
 

+ 1 - 1
ruoyi-shop/src/main/java/com/ruoyi/shop/product/domain/vo/ProductVo.java

@@ -414,7 +414,7 @@ public class ProductVo extends BaseVo {
     public void loadProductSkuSetList() {
         IProductSkuSetService service = SpringUtil.getBean("productSkuSetServiceImpl", IProductSkuSetService.class);
         this.productSkuSetList = service.loadVoByBusinessIdAndProductId(this.businessId,this.productId);
-        this.stock = this.productSkuSetList.stream().mapToInt(ProductSkuSetVo::getStock).sum();
+        this.stock = this.productSkuSetList.stream().filter(p -> p.getStock() != null).mapToInt(ProductSkuSetVo::getStock).sum();
     }
 
     @ApiModelProperty("是否参与活动")