|
|
|
@@ -123,7 +123,22 @@ public class WxOrderController extends BaseController { |
|
|
|
//此处判断是否存在绝对保证库存不超卖的缓存,如果没有,则把当前的库存设置为最大值。如果有,则是后台设置的时候保存的,以那个为准。 |
|
|
|
boolean hascache = redisLock.hasCouponStockCache(wxCouponCVo.getCouponId()); |
|
|
|
if (!hascache) { |
|
|
|
redisLock.setCouponStock(wxCouponCVo.getCouponId(), coupon.getRemainInventory()); |
|
|
|
long time = System.currentTimeMillis() + RedisLock.TIMEOUT; |
|
|
|
String timeStr = String.valueOf(time); |
|
|
|
boolean stocksetlock = redisLock.lock("couponLockStockSetByOrder_"+coupon.getId(), timeStr); |
|
|
|
if (stocksetlock) { |
|
|
|
try { |
|
|
|
if (!redisLock.hasCouponStockCache(wxCouponCVo.getCouponId())) { |
|
|
|
redisLock.setCouponStock(wxCouponCVo.getCouponId(), coupon.getRemainInventory()); |
|
|
|
} |
|
|
|
}catch(Exception e) { |
|
|
|
logger.error("save order stock cache error.",e); |
|
|
|
}finally { |
|
|
|
redisLock.unlock("couponLockStockSetByOrder_"+coupon.getId(), timeStr); |
|
|
|
} |
|
|
|
}else { |
|
|
|
redisLock.unlock("couponLockStockSetByOrder_"+coupon.getId(), timeStr); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
resultData = couponUserCheck(user, wxCouponCVo); |
|
|
|
|