mall icon indicating copy to clipboard operation
mall copied to clipboard

锁定下单商品的所有库存

Open lurenha opened this issue 2 years ago • 1 comments

/** * 锁定下单商品的所有库存 */ private void lockStock(List<CartPromotionItem> cartPromotionItemList) { for (CartPromotionItem cartPromotionItem : cartPromotionItemList) { PmsSkuStock skuStock = skuStockMapper.selectByPrimaryKey(cartPromotionItem.getProductSkuId()); skuStock.setLockStock(skuStock.getLockStock() + cartPromotionItem.getQuantity()); skuStockMapper.updateByPrimaryKeySelective(skuStock); } } 并发下单时 可能导致锁定库存数量小于预期值 (两个线程同时读取到某个sku的库存 第二次save覆盖第一次)

lurenha avatar Nov 13 '21 06:11 lurenha

锁定库存肯定是有问题的, 我觉得不如用乐观锁, 先update pms_sku_stock set lock_stock = lock_stock + {quality} where id = {id}; 然后回查一次pms_sku_stock,如果stock - lock_stock < 0, 就回滚事务

vearne avatar Jun 09 '22 01:06 vearne