From 1219e317f9eacf40de38990f421f372c0b49e7f7 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Sun, 26 Jul 2020 16:21:49 +0800 Subject: [PATCH] fix bug --- .../iformall/controller/WxOrderController.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java index 5c324e947..eb93c78fa 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxOrderController.java @@ -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);