| @@ -123,7 +123,22 @@ public class WxOrderController extends BaseController { | |||||
| //此处判断是否存在绝对保证库存不超卖的缓存,如果没有,则把当前的库存设置为最大值。如果有,则是后台设置的时候保存的,以那个为准。 | //此处判断是否存在绝对保证库存不超卖的缓存,如果没有,则把当前的库存设置为最大值。如果有,则是后台设置的时候保存的,以那个为准。 | ||||
| boolean hascache = redisLock.hasCouponStockCache(wxCouponCVo.getCouponId()); | boolean hascache = redisLock.hasCouponStockCache(wxCouponCVo.getCouponId()); | ||||
| if (!hascache) { | 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); | resultData = couponUserCheck(user, wxCouponCVo); | ||||