|
@@ -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;
|
|
|
|
|
|
/**
|
|
@@ -55,6 +56,11 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
|
|
|
} else if (cartItem.getHidden() == 1) {
|
|
|
existCartItem = null;
|
|
|
}
|
|
|
+
|
|
|
+ PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(cartItem.getProductSkuId());
|
|
|
+ if (pmsSkuStock == null) {
|
|
|
+ throw new BizException("商品规格不存在");
|
|
|
+ }
|
|
|
if (existCartItem == null) {
|
|
|
PmsProduct pmsProduct = pmsProductMapper.selectByPrimaryKey(cartItem.getProductId());
|
|
|
|
|
@@ -69,10 +75,8 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
|
|
|
cartItem.setProductBrand(pmsProduct.getName());
|
|
|
cartItem.setProductSn(pmsProduct.getProductSn());
|
|
|
if (cartItem.getProductSkuId() != null) {
|
|
|
- PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(cartItem.getProductSkuId());
|
|
|
-
|
|
|
- if (pmsSkuStock == null) {
|
|
|
- throw new BizException("商品规格不存在");
|
|
|
+ if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < cartItem.getQuantity()) {
|
|
|
+ throw new BizException("库存不足");
|
|
|
}
|
|
|
cartItem.setProductSkuCode(pmsSkuStock.getSkuCode());
|
|
|
cartItem.setProductAttr(pmsSkuStock.getSpData());
|
|
@@ -83,6 +87,9 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
|
|
|
cartItemMapper.insert(cartItem);
|
|
|
return cartItem;
|
|
|
} else {
|
|
|
+ if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < existCartItem.getQuantity() + cartItem.getQuantity()) {
|
|
|
+ throw new BizException("库存不足");
|
|
|
+ }
|
|
|
cartItem.setModifyDate(new Date());
|
|
|
existCartItem.setQuantity(existCartItem.getQuantity() + cartItem.getQuantity());
|
|
|
cartItemMapper.updateByPrimaryKey(existCartItem);
|
|
@@ -111,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
|
|
@@ -138,10 +162,23 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
|
|
|
public int updateQuantity(Long id, Long memberId, Integer quantity) {
|
|
|
OmsCartItem cartItem = new OmsCartItem();
|
|
|
cartItem.setQuantity(quantity);
|
|
|
+ OmsCartItem omsCartItem = cartItemMapper.selectByPrimaryKey(id);
|
|
|
+
|
|
|
+ if (omsCartItem.getProductSkuId() == null) {
|
|
|
+ throw new BizException("商品已售空");
|
|
|
+ }
|
|
|
+
|
|
|
+ PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(omsCartItem.getProductSkuId());
|
|
|
+
|
|
|
+ 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
|
|
@@ -179,4 +216,9 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
|
|
|
example.createCriteria().andMemberIdEqualTo(memberId);
|
|
|
return cartItemMapper.updateByExampleSelective(record,example);
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public OmsCartItem get(Long id) {
|
|
|
+ return cartItemMapper.selectByPrimaryKey(id);
|
|
|
+ }
|
|
|
}
|