|
@@ -990,33 +990,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
|
|
|
}
|
|
}
|
|
|
fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
|
|
fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
|
|
|
|
|
|
|
|
- // ===================== 溯源码核心逻辑 ==================
|
|
|
|
|
- Integer buyCount = vo.getCartNum();
|
|
|
|
|
- Long productId = vo.getProductId();
|
|
|
|
|
- String productName = vo.getProductName();
|
|
|
|
|
-
|
|
|
|
|
- if (buyCount <= 0) {
|
|
|
|
|
- throw new ServiceException("商品[" + productName + "]购买数量不能为0");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if(checkProductCater(vo.getProductId())){
|
|
|
|
|
+ // ===================== 溯源码核心逻辑 ==================
|
|
|
|
|
+ Integer buyCount = vo.getCartNum();
|
|
|
|
|
+ Long productId = vo.getProductId();
|
|
|
|
|
+ String productName = vo.getProductName();
|
|
|
|
|
+
|
|
|
|
|
+ if (buyCount <= 0) {
|
|
|
|
|
+ throw new ServiceException("商品[" + productName + "]购买数量不能为0");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- //查询并锁定未出库溯源码带行锁
|
|
|
|
|
- List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
|
|
|
|
|
- if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
|
|
|
|
|
- String errorMsg = String.format("商品[%s]库存不足,需%s个,仅剩余%s个",
|
|
|
|
|
- productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
|
|
|
|
|
- throw new ServiceException(errorMsg);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //查询并锁定未出库溯源码带行锁
|
|
|
|
|
+ List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
|
|
|
|
|
+ if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
|
|
|
|
|
+ String errorMsg = String.format("商品[%s]库存不足,需%s个,仅剩余%s个",
|
|
|
|
|
+ productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
|
|
|
|
|
+ throw new ServiceException(errorMsg);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
|
|
|
|
|
- code.setOutboundStatus(1L);
|
|
|
|
|
- code.setOrderId(storeOrder.getId());
|
|
|
|
|
- code.setOrderItemId(item.getItemId());
|
|
|
|
|
- code.setUpdateTime(new Date());
|
|
|
|
|
- }
|
|
|
|
|
- if (!availableVerifyCodes.isEmpty()) {
|
|
|
|
|
- verifyCodeService.updateBatchById(availableVerifyCodes);
|
|
|
|
|
|
|
+ for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
|
|
|
|
|
+ code.setOutboundStatus(1L);
|
|
|
|
|
+ code.setOrderId(storeOrder.getId());
|
|
|
|
|
+ code.setOrderItemId(item.getItemId());
|
|
|
|
|
+ code.setUpdateTime(new Date());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!availableVerifyCodes.isEmpty()) {
|
|
|
|
|
+ verifyCodeService.updateBatchById(availableVerifyCodes);
|
|
|
|
|
+ }
|
|
|
|
|
+ // ===================== 溯源码逻辑END =====================
|
|
|
}
|
|
}
|
|
|
- // ===================== 溯源码逻辑END =====================
|
|
|
|
|
listOrderItem.add(item);
|
|
listOrderItem.add(item);
|
|
|
}
|
|
}
|
|
|
if (listOrderItem.size() > 0) {
|
|
if (listOrderItem.size() > 0) {
|
|
@@ -1185,33 +1187,36 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
|
|
|
item.setOrderId(order.getId());
|
|
item.setOrderId(order.getId());
|
|
|
fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
|
|
fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
|
|
|
|
|
|
|
|
- // ===================== 溯源码核心逻辑 ==================
|
|
|
|
|
- Integer buyCount = item.getNum();
|
|
|
|
|
- Long productId = item.getProductId();
|
|
|
|
|
- String productName = productMap.get(productId) == null ? "商品" : productMap.get(productId);
|
|
|
|
|
|
|
+ if(checkProductCater(item.getProductId())){
|
|
|
|
|
+ // ===================== 溯源码核心逻辑 ==================
|
|
|
|
|
+ Integer buyCount = item.getNum();
|
|
|
|
|
+ Long productId = item.getProductId();
|
|
|
|
|
+ String productName = productMap.get(productId) == null ? "商品" : productMap.get(productId);
|
|
|
|
|
|
|
|
- if (buyCount <= 0) {
|
|
|
|
|
- throw new ServiceException("商品[" + productName + "]购买数量不能为0");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (buyCount <= 0) {
|
|
|
|
|
+ throw new ServiceException("商品[" + productName + "]购买数量不能为0");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- //查询并锁定未出库溯源码带行锁
|
|
|
|
|
- List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
|
|
|
|
|
- if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
|
|
|
|
|
- String errorMsg = String.format("商品[%s]库存不足",
|
|
|
|
|
- productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
|
|
|
|
|
- throw new ServiceException(errorMsg);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //查询并锁定未出库溯源码带行锁
|
|
|
|
|
+ List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
|
|
|
|
|
+ if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
|
|
|
|
|
+ String errorMsg = String.format("商品[%s]库存不足",
|
|
|
|
|
+ productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
|
|
|
|
|
+ throw new ServiceException(errorMsg);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
|
|
|
|
|
- code.setOutboundStatus(1L);
|
|
|
|
|
- code.setOrderId(order.getId());
|
|
|
|
|
- code.setOrderItemId(item.getItemId());
|
|
|
|
|
- code.setUpdateTime(new Date());
|
|
|
|
|
- }
|
|
|
|
|
- if (!availableVerifyCodes.isEmpty()) {
|
|
|
|
|
- verifyCodeService.updateBatchById(availableVerifyCodes);
|
|
|
|
|
|
|
+ for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
|
|
|
|
|
+ code.setOutboundStatus(1L);
|
|
|
|
|
+ code.setOrderId(order.getId());
|
|
|
|
|
+ code.setOrderItemId(item.getItemId());
|
|
|
|
|
+ code.setUpdateTime(new Date());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!availableVerifyCodes.isEmpty()) {
|
|
|
|
|
+ verifyCodeService.updateBatchById(availableVerifyCodes);
|
|
|
|
|
+ }
|
|
|
|
|
+ // ===================== 溯源码逻辑END =====================
|
|
|
}
|
|
}
|
|
|
- // ===================== 溯源码逻辑END =====================
|
|
|
|
|
|
|
+
|
|
|
}
|
|
}
|
|
|
fsStoreOrderLogsService.create(order.getId(), FsStoreOrderLogEnum.CREATE_ORDER.getValue(),
|
|
fsStoreOrderLogsService.create(order.getId(), FsStoreOrderLogEnum.CREATE_ORDER.getValue(),
|
|
|
FsStoreOrderLogEnum.CREATE_ORDER.getDesc());
|
|
FsStoreOrderLogEnum.CREATE_ORDER.getDesc());
|
|
@@ -4960,9 +4965,14 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
|
|
|
//检测库存
|
|
//检测库存
|
|
|
//如果是美乳产品,发武汉仓库
|
|
//如果是美乳产品,发武汉仓库
|
|
|
Integer meiruCount = 0;
|
|
Integer meiruCount = 0;
|
|
|
-
|
|
|
|
|
|
|
+ Map<Long,Boolean> checkMap = new HashMap<>();
|
|
|
for (FsStoreCartScrmQueryVO cart : carts) {
|
|
for (FsStoreCartScrmQueryVO cart : carts) {
|
|
|
- cartService.checkProductStocks(cart.getProductId(), cart.getProductAttrValueId(), cart.getCartNum());
|
|
|
|
|
|
|
+ if(checkProductCater(cart.getProductId())){
|
|
|
|
|
+ checkMap.put(cart.getProductId(),true);
|
|
|
|
|
+ }else {
|
|
|
|
|
+ checkMap.put(cart.getProductId(),false);
|
|
|
|
|
+ cartService.checkProductStocks(cart.getProductId(), cart.getProductAttrValueId(), cart.getCartNum());
|
|
|
|
|
+ }
|
|
|
totalNum += cart.getCartNum();
|
|
totalNum += cart.getCartNum();
|
|
|
integral = NumberUtil.add(integral,
|
|
integral = NumberUtil.add(integral,
|
|
|
NumberUtil.mul(cart.getCartNum(), cart.getIntegral()));
|
|
NumberUtil.mul(cart.getCartNum(), cart.getIntegral()));
|
|
@@ -5125,33 +5135,35 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
|
|
|
}
|
|
}
|
|
|
fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
|
|
fsStoreOrderItemMapper.insertFsStoreOrderItem(item);
|
|
|
|
|
|
|
|
- // ===================== 溯源码核心逻辑 ==================
|
|
|
|
|
- Integer buyCount = vo.getCartNum();
|
|
|
|
|
- Long productId = vo.getProductId();
|
|
|
|
|
- String productName = vo.getProductName();
|
|
|
|
|
|
|
+ if(checkMap.get(vo.getProductId())){
|
|
|
|
|
+ // ===================== 溯源码核心逻辑 ==================
|
|
|
|
|
+ Integer buyCount = vo.getCartNum();
|
|
|
|
|
+ Long productId = vo.getProductId();
|
|
|
|
|
+ String productName = vo.getProductName();
|
|
|
|
|
|
|
|
- if (buyCount <= 0) {
|
|
|
|
|
- throw new ServiceException("商品[" + productName + "]购买数量不能为0");
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (buyCount <= 0) {
|
|
|
|
|
+ throw new ServiceException("商品[" + productName + "]购买数量不能为0");
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- //查询并锁定未出库溯源码带行锁
|
|
|
|
|
- List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
|
|
|
|
|
- if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
|
|
|
|
|
- String errorMsg = String.format("商品[%s]库存不足",
|
|
|
|
|
- productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
|
|
|
|
|
- throw new ServiceException(errorMsg);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ //查询并锁定未出库溯源码带行锁
|
|
|
|
|
+ List<FsStoreVerifyCodeScrm> availableVerifyCodes = verifyCodeMapper.selectUnOutboundVerifyCodesWithLock(productId, buyCount);
|
|
|
|
|
+ if (availableVerifyCodes == null || availableVerifyCodes.size() < buyCount) {
|
|
|
|
|
+ String errorMsg = String.format("商品[%s]库存不足",
|
|
|
|
|
+ productName, buyCount, (availableVerifyCodes == null ? 0 : availableVerifyCodes.size()));
|
|
|
|
|
+ throw new ServiceException(errorMsg);
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
- for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
|
|
|
|
|
- code.setOutboundStatus(1L);
|
|
|
|
|
- code.setOrderId(storeOrder.getId());
|
|
|
|
|
- code.setOrderItemId(item.getItemId());
|
|
|
|
|
- code.setUpdateTime(new Date());
|
|
|
|
|
- }
|
|
|
|
|
- if (!availableVerifyCodes.isEmpty()) {
|
|
|
|
|
- verifyCodeService.updateBatchById(availableVerifyCodes);
|
|
|
|
|
|
|
+ for (FsStoreVerifyCodeScrm code : availableVerifyCodes) {
|
|
|
|
|
+ code.setOutboundStatus(1L);
|
|
|
|
|
+ code.setOrderId(storeOrder.getId());
|
|
|
|
|
+ code.setOrderItemId(item.getItemId());
|
|
|
|
|
+ code.setUpdateTime(new Date());
|
|
|
|
|
+ }
|
|
|
|
|
+ if (!availableVerifyCodes.isEmpty()) {
|
|
|
|
|
+ verifyCodeService.updateBatchById(availableVerifyCodes);
|
|
|
|
|
+ }
|
|
|
|
|
+ // ===================== 溯源码逻辑END =====================
|
|
|
}
|
|
}
|
|
|
- // ===================== 溯源码逻辑END =====================
|
|
|
|
|
listOrderItem.add(item);
|
|
listOrderItem.add(item);
|
|
|
}
|
|
}
|
|
|
if (listOrderItem.size() > 0) {
|
|
if (listOrderItem.size() > 0) {
|
|
@@ -5858,4 +5870,13 @@ public class FsStoreOrderScrmServiceImpl implements IFsStoreOrderScrmService {
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ //校验商品类型
|
|
|
|
|
+ public boolean checkProductCater(Long productId){
|
|
|
|
|
+ FsStoreProductScrm product = fsStoreProductMapper.selectFsStoreProductById(productId);
|
|
|
|
|
+ if(product.getCateId().equals(202L) || product.getCateId().equals(232L) || product.getCateId().equals(201L) || product.getCateId().equals(233L)){
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ return true;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|