Browse Source

Merge remote-tracking branch 'origin/master'

liweifan 3 years ago
parent
commit
53e2bf0555

+ 24 - 0
cooleshow-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/OmsCartItem.java

@@ -59,6 +59,30 @@ public class OmsCartItem implements Serializable {
     @ApiModelProperty("是否隐藏(1:是,0:否)")
     private Integer hidden;
 
+    @ApiModelProperty(value = "库存")
+    private Integer stock = 0;
+
+
+    @ApiModelProperty(value = "锁定库存")
+    private Integer lockStock = 0 ;
+
+
+    public Integer getStock() {
+        return stock;
+    }
+
+    public void setStock(Integer stock) {
+        this.stock = stock;
+    }
+
+    public Integer getLockStock() {
+        return lockStock;
+    }
+
+    public void setLockStock(Integer lockStock) {
+        this.lockStock = lockStock;
+    }
+
     private static final long serialVersionUID = 1L;
 
     public Integer getHidden() {

+ 25 - 6
cooleshow-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java

@@ -20,6 +20,7 @@ import org.springframework.util.StringUtils;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -74,7 +75,7 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             cartItem.setProductBrand(pmsProduct.getName());
             cartItem.setProductSn(pmsProduct.getProductSn());
             if (cartItem.getProductSkuId() != null) {
-                if (pmsSkuStock.getStock() < cartItem.getQuantity()) {
+                if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < cartItem.getQuantity()) {
                     throw new BizException("库存不足");
                 }
                 cartItem.setProductSkuCode(pmsSkuStock.getSkuCode());
@@ -86,7 +87,7 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             cartItemMapper.insert(cartItem);
             return cartItem;
         } else {
-            if (pmsSkuStock.getStock() < existCartItem.getQuantity() + cartItem.getQuantity()) {
+            if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < existCartItem.getQuantity() + cartItem.getQuantity()) {
                 throw new BizException("库存不足");
             }
             cartItem.setModifyDate(new Date());
@@ -117,7 +118,24 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
     public List<OmsCartItem> list(Long memberId) {
         OmsCartItemExample example = new OmsCartItemExample();
         example.createCriteria().andDeleteStatusEqualTo(0).andMemberIdEqualTo(memberId).andHiddenEqualTo(0);
-        return cartItemMapper.selectByExample(example);
+        List<OmsCartItem> omsCartItems = cartItemMapper.selectByExample(example);
+        if (CollectionUtils.isEmpty(omsCartItems)) {
+            return omsCartItems;
+        }
+        List<Long> skuIds = omsCartItems.stream().map(OmsCartItem::getProductSkuId).collect(Collectors.toList());
+        PmsSkuStockExample skuExample = new PmsSkuStockExample();
+        skuExample.createCriteria().andIdIn(skuIds);
+        List<PmsSkuStock> pmsSkuStocks = skuStockMapper.selectByExample(skuExample);
+        Map<Long, List<PmsSkuStock>> collect =
+                pmsSkuStocks.stream().collect(Collectors.groupingBy(PmsSkuStock::getId));
+        for (OmsCartItem omsCartItem : omsCartItems) {
+            List<PmsSkuStock> pmsSkuStocks1 = collect.get(omsCartItem.getProductSkuId());
+            if (!CollectionUtils.isEmpty(pmsSkuStocks1)) {
+                omsCartItem.setStock(pmsSkuStocks1.get(0).getStock());
+                omsCartItem.setLockStock(pmsSkuStocks1.get(0).getLockStock());
+            }
+        }
+        return omsCartItems;
     }
 
     @Override
@@ -152,14 +170,15 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
 
         PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(omsCartItem.getProductSkuId());
 
-        if (pmsSkuStock.getStock() < quantity) {
-            throw new BizException("库存不足");
+        if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < quantity) {
+            return pmsSkuStock.getStock() - pmsSkuStock.getLockStock();
         }
 
         OmsCartItemExample example = new OmsCartItemExample();
         example.createCriteria().andDeleteStatusEqualTo(0)
                 .andIdEqualTo(id).andMemberIdEqualTo(memberId);
-        return cartItemMapper.updateByExampleSelective(cartItem, example);
+        cartItemMapper.updateByExampleSelective(cartItem, example);
+        return pmsSkuStock.getStock() - pmsSkuStock.getLockStock();
     }
 
     @Override