| | |
| | | String goodsLock = "goods_lock:" + skus.getId(); |
| | | RLock redissonLock = redissonClient.getLock(goodsLock); |
| | | try { |
| | | redissonLock.lock(100, TimeUnit.SECONDS); |
| | | redissonLock.lock(30, TimeUnit.SECONDS); |
| | | Integer auctionStock = stockMap.get(skus.getId()); |
| | | if (StringUtils.isNotNull(auctionStock) && auctionStock > 0) { |
| | | // 更新商品库存,更新五次失败抛出异常 |
| | |
| | | |
| | | private boolean updateGoodsStock(GoodsSku skus, Integer auctionStock) { |
| | | return this.lambdaUpdate() |
| | | .set(GoodsSku::getStock, skus.getStock() + auctionStock) |
| | | .set(skus.getStock() + auctionStock > 0, GoodsSku::getStock, |
| | | skus.getStock() + auctionStock) |
| | | .eq(GoodsSku::getId, skus.getId()) |
| | | .eq(GoodsSku::getStock, skus.getStock()) |
| | | .update(); |