From 1d214f4ac03a18d472c1a83a3587f783d0dfd03f Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Mon, 15 Jun 2020 14:31:55 +0800 Subject: [PATCH] fix bug --- .../com/iformall/controller/WxCouponController.java | 11 +++++++++++ .../src/main/java/com/iformall/utils/RedisLock.java | 5 ++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java index 01ba206ce..f4aa19427 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxCouponController.java @@ -31,6 +31,7 @@ import com.iformall.service.WxCouponChannelService; import com.iformall.service.WxCouponService; import com.iformall.service.WxMerchantService; import com.iformall.utils.Constant; +import com.iformall.utils.RedisLock; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; @@ -53,6 +54,9 @@ public class WxCouponController extends BaseController { @Autowired @Qualifier("couponDetailRedisTemplate") RedisTemplate cdRedisTemplate; + + @Autowired + RedisLock redisLock; @ApiOperation("根据id(couponChannel)查询接口") @GetMapping("/detail") @@ -103,6 +107,13 @@ public class WxCouponController extends BaseController { } // end of 更新状态 updateActivityStatus(wxCouponCVo); + + //此处判断是否存在绝对保证库存不超卖的缓存,如果没有,则把当前的库存设置为最大值。如果有,则是后台设置的时候保存的,以那个为准。 + boolean hascache = redisLock.hasCouponStockCache(wxCouponCVo.getCouponId()); + if (!hascache) { + redisLock.setCouponStock(wxCouponCVo.getCouponId(), wxCouponCVo.getRemainInventory()); + } + return new ResultData(wxCouponCVo); } diff --git a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java index 07a05aff5..ce12af555 100644 --- a/mallinkService/src/main/java/com/iformall/utils/RedisLock.java +++ b/mallinkService/src/main/java/com/iformall/utils/RedisLock.java @@ -147,6 +147,9 @@ public class RedisLock { }catch(Exception e) { logger.error("[Redis分布式锁] setCouponStock error,{}",e); } - + } + + public boolean hasCouponStockCache(long couponId) { + return stringRedisTemplate.hasKey(EnumCacheKey.COUPON_STOCK.getMessage()+String.valueOf(couponId)); } }