Explorar el Código

feat:
编码租户化

18339543638 hace 2 años
padre
commit
f1f78ab98b

+ 3 - 3
tr-plugins/tr-spring-boot-starter-plugin-numbering-strategy/src/main/java/cn/tr/plugin/numbering/strategy/TrNumberingStrategyAutoConfiguration.java

@@ -3,7 +3,7 @@ package cn.tr.plugin.numbering.strategy;
 import cn.tr.plugin.numbering.strategy.core.DefaultNumberingStrategyClientFactory;
 import cn.tr.plugin.numbering.strategy.core.NumberingStrategyClientFactory;
 import cn.tr.plugin.numbering.strategy.mybatis.NumberingStrategyInterceptor;
-import org.redisson.api.RedissonClient;
+import org.springframework.cache.CacheManager;
 import org.springframework.context.annotation.Bean;
 
 /**
@@ -14,8 +14,8 @@ import org.springframework.context.annotation.Bean;
  */
 public class TrNumberingStrategyAutoConfiguration {
     @Bean
-    public NumberingStrategyClientFactory serialStrategyClientFactory(RedissonClient redissonClient){
-        return new DefaultNumberingStrategyClientFactory(redissonClient);
+    public NumberingStrategyClientFactory serialStrategyClientFactory(CacheManager cacheManager){
+        return new DefaultNumberingStrategyClientFactory(cacheManager);
     }
 
     @Bean

+ 16 - 10
tr-plugins/tr-spring-boot-starter-plugin-numbering-strategy/src/main/java/cn/tr/plugin/numbering/strategy/core/DefaultNumberingStrategyClient.java

@@ -8,10 +8,13 @@ import lombok.Data;
 import org.redisson.api.RMap;
 import org.redisson.api.RedissonClient;
 import org.redisson.client.codec.IntegerCodec;
+import org.springframework.cache.Cache;
+import org.springframework.cache.CacheManager;
 import org.springframework.util.Assert;
 
 import java.util.Date;
 import java.util.Objects;
+import java.util.Optional;
 
 /**
  * @ClassName : DefaultSerialStrategyClient
@@ -26,31 +29,34 @@ public class DefaultNumberingStrategyClient implements NumberingStrategyClient {
      */
     private static final String CURRENT_NUM="currentNum";
     private NumberingStrategyProperties properties;
-    private RMap<String, Integer> operation;
     private NumberingStrategyEnum strategyEnum;
+    private Cache cache;
 
-    DefaultNumberingStrategyClient(NumberingStrategyProperties properties, RedissonClient redissonClient) {
-        operation = redissonClient.getMap("global:serialStrategy:"+properties.getClientId(),new IntegerCodec());
+    DefaultNumberingStrategyClient(NumberingStrategyProperties properties,CacheManager cacheManager) {
+        Cache cache = cacheManager.getCache("serialStrategy" + properties.getClientId());
+//        operation = redissonClient.getMap("global:serialStrategy:"+properties.getClientId(),new IntegerCodec());
         doInit(properties);
     }
 
     @Override
     public String getAndIncrementSerialNum() {
-        Integer nextNum = this.operation.addAndGet(CURRENT_NUM, 1);
+        Integer current = Optional.ofNullable(cache.get(CURRENT_NUM, Integer.class)).orElse(0);
+        Integer nextNum=current+1;
+        cache.put(CURRENT_NUM,nextNum);
         return formatSerialNo(nextNum);
     }
 
     @Override
     public String getNextFormatNum() {
-        Integer currentNum = this.operation.get(CURRENT_NUM);
-        Integer nextNum=currentNum+1;
+        Integer current = Optional.ofNullable(cache.get(CURRENT_NUM, Integer.class)).orElse(0);
+        Integer nextNum=current+1;
         return formatSerialNo(nextNum);
     }
 
     @Override
     public Integer getNextNum() {
-        Integer currentNum = this.operation.get(CURRENT_NUM);
-        return currentNum+1;
+        Integer current = Optional.ofNullable(cache.get(CURRENT_NUM, Integer.class)).orElse(0);
+        return current+1;
     }
 
     @Override
@@ -99,13 +105,13 @@ public class DefaultNumberingStrategyClient implements NumberingStrategyClient {
         Integer nextNum = properties.getNextNum();
         if (Objects.isNull(nextNum)) {
             //更新值为null,缓存值不为null,则不进行更新操作
-            nextNum = this.operation.get(CURRENT_NUM);
+            nextNum = cache.get(CURRENT_NUM, Integer.class);
             if(nextNum!=null){
                 return;
             }
         }
         //当nextNum为空或者小于0时,将currentNum设置为0
         Integer currentNum=( Objects.isNull(nextNum)||nextNum<=0)?0:nextNum-1;
-        this.operation.put(CURRENT_NUM,currentNum);
+        cache.put(CURRENT_NUM,currentNum);
     }
 }

+ 5 - 5
tr-plugins/tr-spring-boot-starter-plugin-numbering-strategy/src/main/java/cn/tr/plugin/numbering/strategy/core/DefaultNumberingStrategyClientFactory.java

@@ -1,7 +1,7 @@
 package cn.tr.plugin.numbering.strategy.core;
 
 import cn.tr.plugin.numbering.strategy.core.properties.NumberingStrategyProperties;
-import org.redisson.api.RedissonClient;
+import org.springframework.cache.CacheManager;
 
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ConcurrentMap;
@@ -14,10 +14,10 @@ import java.util.concurrent.ConcurrentMap;
  */
 public class DefaultNumberingStrategyClientFactory implements NumberingStrategyClientFactory {
     private final ConcurrentMap<String, NumberingStrategyClient> clients = new ConcurrentHashMap<>();
-    private RedissonClient redissonClient;
+    private CacheManager cacheManager;
 
-    public DefaultNumberingStrategyClientFactory(RedissonClient redissonClient) {
-        this.redissonClient = redissonClient;
+    public DefaultNumberingStrategyClientFactory(CacheManager cacheManager) {
+        this.cacheManager = cacheManager;
     }
 
     @Override
@@ -29,7 +29,7 @@ public class DefaultNumberingStrategyClientFactory implements NumberingStrategyC
     public NumberingStrategyClient createOrUpdateSmsClient(NumberingStrategyProperties config) {
         NumberingStrategyClient client = getSerialStrategyClient(config.getClientId());
         if(client==null){
-            client=new DefaultNumberingStrategyClient(config,redissonClient);
+            client=new DefaultNumberingStrategyClient(config,cacheManager);
             clients.put(config.getClientId(),client);
         }else {
             client.refreshProperties(config);