Commit 636ab521 authored by gaoyingwei's avatar gaoyingwei

修改 订单定时关闭

parent e8b9ce13
...@@ -2,6 +2,7 @@ package org.rcisoft.business.cmsActivity.service.impl; ...@@ -2,6 +2,7 @@ package org.rcisoft.business.cmsActivity.service.impl;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.rcisoft.core.service.CyRedisService;
import org.rcisoft.core.util.IStockCallback; import org.rcisoft.core.util.IStockCallback;
import org.redisson.api.RLock; import org.redisson.api.RLock;
import org.redisson.api.RedissonClient; import org.redisson.api.RedissonClient;
...@@ -42,6 +43,9 @@ public class StockService { ...@@ -42,6 +43,9 @@ public class StockService {
@Autowired @Autowired
private RedisTemplate<String, Object> redisTemplate; private RedisTemplate<String, Object> redisTemplate;
@Autowired(required = false)
private CyRedisService cyRedisServiceImpl;
/** /**
* 执行扣库存的脚本 * 执行扣库存的脚本
*/ */
...@@ -152,29 +156,31 @@ public class StockService { ...@@ -152,29 +156,31 @@ public class StockService {
* @return * @return
*/ */
public long addStock(String key, Long expire, int num) { public long addStock(String key, Long expire, int num) {
boolean hasKey = redisTemplate.hasKey(key); Object value = cyRedisServiceImpl.get(key);
// 判断key是否存在,存在就直接更新 // 判断key是否存在,存在就直接更新
if (hasKey) { if (value != null) {
redisTemplate.opsForValue().increment(key, num); redisTemplate.opsForValue().increment(key, num);
return num; return num;
} }
//
Assert.notNull(expire,"初始化库存失败,库存过期时间不能为null"); // if (expire != null) {
RLock redisLock = redissonClient.getLock(key); // Assert.notNull(expire, "初始化库存失败,库存过期时间不能为null");
try { // RLock redisLock = redissonClient.getLock(key);
if (redisLock.tryLock()) { // try {
// 获取到锁后再次判断一下是否有key // if (redisLock.tryLock()) {
hasKey = redisTemplate.hasKey(key); // // 获取到锁后再次判断一下是否有key
if (!hasKey) { // value = cyRedisServiceImpl.get(key)
// 初始化库存 // if (hasKey == null) {
redisTemplate.opsForValue().set(key, num, expire, TimeUnit.SECONDS); // // 初始化库存
} // redisTemplate.opsForValue().set(key, num, expire, TimeUnit.SECONDS);
} // }
} catch (Exception e) { // }
logger.error(e.getMessage(), e); // } catch (Exception e) {
} finally { // logger.error(e.getMessage(), e);
redisLock.unlock(); // } finally {
} // redisLock.unlock();
// }
// }
return num; return num;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment