diff --git a/pom.xml b/pom.xml
index 12f8665..646b817 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,11 +83,11 @@
test
-
+
com.github.pagehelper
diff --git a/src/main/java/cn/stock/market/infrastructure/redis/SingleDistributedLockTemplate.java b/src/main/java/cn/stock/market/infrastructure/redis/SingleDistributedLockTemplate.java
index 8469160..36242b6 100644
--- a/src/main/java/cn/stock/market/infrastructure/redis/SingleDistributedLockTemplate.java
+++ b/src/main/java/cn/stock/market/infrastructure/redis/SingleDistributedLockTemplate.java
@@ -1,87 +1,87 @@
-//package cn.stock.market.infrastructure.redis;
-//
-//import java.time.LocalDateTime;
-//import java.time.format.DateTimeFormatter;
-//import java.util.Map;
-//import java.util.Map.Entry;
-//import java.util.concurrent.TimeUnit;
-//
-//import org.redisson.api.RLock;
-//import org.redisson.api.RedissonClient;
-//
-//import com.google.common.base.Stopwatch;
-//import com.google.common.collect.Maps;
-//
-//import cn.qutaojing.common.aop.distributedlock.DistributedLockCallback;
-//import cn.qutaojing.common.aop.distributedlock.DistributedLockInfo;
-//import cn.qutaojing.common.aop.distributedlock.DistributedLockTemplate;
-//import lombok.extern.slf4j.Slf4j;
-//
-///**
-// *
-// * title: SingleDistributedLockTemplate.java
-// *
-// * @author xlfd
-// * @email xlfd@gmail.com
-// * @version 1.0
-// * @created Sep 1, 2020 5:03:20 PM
-// */
-//@Slf4j
-//public class SingleDistributedLockTemplate implements DistributedLockTemplate {
-// private RedissonClient redisson;
-// DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
-//
-// public SingleDistributedLockTemplate() {
-// }
-//
-// public SingleDistributedLockTemplate(RedissonClient redisson) {
-// this.redisson = redisson;
-// }
-//
-// @Override
-// public T lock(DistributedLockCallback callback, DistributedLockInfo... lockInfoList) throws Throwable {
-// Stopwatch stopwatch = Stopwatch.createStarted();
-// Map lockMap = Maps.newConcurrentMap();
-//
-// for (DistributedLockInfo info : lockInfoList) {
-// RLock lock = getLock(info.getLockName(), info.getFairLock());
-// lockMap.put(lock, info);
-// }
-//
-// try {
-// for (Entry entry : lockMap.entrySet()) {
-// RLock lock = entry.getKey();
-// DistributedLockInfo info = entry.getValue();
-// log.info("{}-准备获取{}分布式锁:{}", dateTimeFormatter.format(LocalDateTime.now()), info.getMessage(), info.getLockName());
-// lock.lock(info.getLeaseTime(), info.getTimeUnit());
-// log.info("{}-{}分布式锁:{}获取成功, 耗时:{} ms", dateTimeFormatter.format(LocalDateTime.now()), info.getMessage(), info.getLockName(), stopwatch.elapsed(TimeUnit.MILLISECONDS));
-// }
-//
-// return callback.process();
-// } finally {
-// for (Entry entry : lockMap.entrySet()) {
-// RLock lock = entry.getKey();
-// DistributedLockInfo info = entry.getValue();
-// if (lock != null && lock.isLocked() && lock.isHeldByCurrentThread()) {
-// lock.unlock();
-// log.info("{}-{}分布式锁:{}释放成功, 耗时:{} ms", dateTimeFormatter.format(LocalDateTime.now()), info.getMessage(), info.getLockName(), stopwatch.elapsed(TimeUnit.MILLISECONDS));
-// }
-// }
-//
-// }
-// }
-//
-// private RLock getLock(String lockName, boolean fairLock) {
-// RLock lock;
-// if (fairLock) {
-// lock = redisson.getFairLock(lockName);
-// } else {
-// lock = redisson.getLock(lockName);
-// }
-// return lock;
-// }
-//
-// public void setRedisson(RedissonClient redisson) {
-// this.redisson = redisson;
-// }
-//}
+package cn.stock.market.infrastructure.redis;
+
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.concurrent.TimeUnit;
+
+import org.redisson.api.RLock;
+import org.redisson.api.RedissonClient;
+
+import com.google.common.base.Stopwatch;
+import com.google.common.collect.Maps;
+
+import cn.qutaojing.common.aop.distributedlock.DistributedLockCallback;
+import cn.qutaojing.common.aop.distributedlock.DistributedLockInfo;
+import cn.qutaojing.common.aop.distributedlock.DistributedLockTemplate;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ *
+ * title: SingleDistributedLockTemplate.java
+ *
+ * @author xlfd
+ * @email xlfd@gmail.com
+ * @version 1.0
+ * @created Sep 1, 2020 5:03:20 PM
+ */
+@Slf4j
+public class SingleDistributedLockTemplate implements DistributedLockTemplate {
+ private RedissonClient redisson;
+ DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
+
+ public SingleDistributedLockTemplate() {
+ }
+
+ public SingleDistributedLockTemplate(RedissonClient redisson) {
+ this.redisson = redisson;
+ }
+
+ @Override
+ public T lock(DistributedLockCallback callback, DistributedLockInfo... lockInfoList) throws Throwable {
+ Stopwatch stopwatch = Stopwatch.createStarted();
+ Map lockMap = Maps.newConcurrentMap();
+
+ for (DistributedLockInfo info : lockInfoList) {
+ RLock lock = getLock(info.getLockName(), info.getFairLock());
+ lockMap.put(lock, info);
+ }
+
+ try {
+ for (Entry entry : lockMap.entrySet()) {
+ RLock lock = entry.getKey();
+ DistributedLockInfo info = entry.getValue();
+ log.info("{}-准备获取{}分布式锁:{}", dateTimeFormatter.format(LocalDateTime.now()), info.getMessage(), info.getLockName());
+ lock.lock(info.getLeaseTime(), info.getTimeUnit());
+ log.info("{}-{}分布式锁:{}获取成功, 耗时:{} ms", dateTimeFormatter.format(LocalDateTime.now()), info.getMessage(), info.getLockName(), stopwatch.elapsed(TimeUnit.MILLISECONDS));
+ }
+
+ return callback.process();
+ } finally {
+ for (Entry entry : lockMap.entrySet()) {
+ RLock lock = entry.getKey();
+ DistributedLockInfo info = entry.getValue();
+ if (lock != null && lock.isLocked() && lock.isHeldByCurrentThread()) {
+ lock.unlock();
+ log.info("{}-{}分布式锁:{}释放成功, 耗时:{} ms", dateTimeFormatter.format(LocalDateTime.now()), info.getMessage(), info.getLockName(), stopwatch.elapsed(TimeUnit.MILLISECONDS));
+ }
+ }
+
+ }
+ }
+
+ private RLock getLock(String lockName, boolean fairLock) {
+ RLock lock;
+ if (fairLock) {
+ lock = redisson.getFairLock(lockName);
+ } else {
+ lock = redisson.getLock(lockName);
+ }
+ return lock;
+ }
+
+ public void setRedisson(RedissonClient redisson) {
+ this.redisson = redisson;
+ }
+}
diff --git a/src/main/java/cn/stock/market/infrastructure/redis/config/RedisConfig.java b/src/main/java/cn/stock/market/infrastructure/redis/config/RedisConfig.java
index 2bab268..2630086 100644
--- a/src/main/java/cn/stock/market/infrastructure/redis/config/RedisConfig.java
+++ b/src/main/java/cn/stock/market/infrastructure/redis/config/RedisConfig.java
@@ -1,70 +1,71 @@
-//package cn.stock.market.infrastructure.redis.config;
-//
-//import java.time.Duration;
-//
-//import org.redisson.api.RedissonClient;
-//import org.springframework.cache.CacheManager;
-//import org.springframework.cache.annotation.EnableCaching;
-//import org.springframework.context.annotation.Bean;
-//import org.springframework.context.annotation.Configuration;
-//import org.springframework.data.redis.cache.RedisCacheConfiguration;
-//import org.springframework.data.redis.cache.RedisCacheManager;
-//import org.springframework.data.redis.connection.RedisConnectionFactory;
-//import org.springframework.data.redis.core.RedisTemplate;
-//import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-//import org.springframework.data.redis.serializer.RedisSerializationContext;
-//import org.springframework.data.redis.serializer.StringRedisSerializer;
-//
-//import cn.qutaojing.common.aop.distributedlock.DistributedLockTemplate;
-//import cn.stock.market.infrastructure.redis.SingleDistributedLockTemplate;
-//
-///**
-// *
-// * @author xlfd
-// * @email xlfd@gmail.com
-// * @version 1.0
-// * @created Jun 3, 2021 4:56:28 PM
-// */
-//@Configuration
-//@EnableCaching
-//public class RedisConfig {
-//
-// @Bean
-// public RedisTemplate