From d096953776519f10cf99e73b9d019a3c4aa5cabe Mon Sep 17 00:00:00 2001
From: luliqiang <kidgrow>
Date: Wed, 24 Mar 2021 19:07:50 +0800
Subject: [PATCH] 1、完善哈希表后缀生成方法 2、增加哈希表后缀生成工具类(只传入字符串参数,其他参数用方法中的默认值)

---
 kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java |   19 ++++++---
 kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/utils/TableSuffixUtil.java       |   50 +++++++++++++++++++++++++
 2 files changed, 63 insertions(+), 6 deletions(-)

diff --git a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java
index 14a5d3d..f9686b1 100644
--- a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java
+++ b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/sharding/HashModTableSuffix.java
@@ -13,21 +13,28 @@
 public class HashModTableSuffix implements TableSuffix {
 
     private String hash;
-    private Long tableSize = 64L;
-    private String tableSuffix="-000";
+    private Long tableSize = 128L;
+    private String tableSuffix="_000";
 
     public HashModTableSuffix(String hash,long tableSize, String tableSuffix) {
         if (StringUtils.isEmpty(hash)) {
             throw new IllegalArgumentException("hash should not be null or empty");
+        } else {
+            this.hash = hash;
         }
-        this.hash = hash;
-        this.tableSize=tableSize;
-        this.tableSuffix=tableSuffix;
+        if (tableSize != 0) {
+            this.tableSize = tableSize;
+        }
+        if (!StringUtils.isEmpty(tableSuffix)) {
+            this.tableSuffix=tableSuffix;
+        }
+
     }
 
     @Override
     public String getSuffix() {
         String format = "%0" + (tableSuffix.length() - 1) + "d";
-        return "_"+String.format(format, Math.abs(hash.hashCode()) % tableSize);
+        return tableSuffix.substring(0,1)+String.format(format, Math.abs(hash.hashCode()) % tableSize);
     }
+
 }
diff --git a/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/utils/TableSuffixUtil.java b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/utils/TableSuffixUtil.java
new file mode 100644
index 0000000..8c29e8a
--- /dev/null
+++ b/kidgrow-commons/kidgrow-db-spring-boot-starter/src/main/java/com/kidgrow/db/utils/TableSuffixUtil.java
@@ -0,0 +1,50 @@
+package com.kidgrow.db.utils;
+
+import com.kidgrow.common.utils.StringUtils;
+import com.kidgrow.db.sharding.TableSuffix;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: 获取分表后缀工具类<br>
+ * @Project: <br>
+ * @CreateDate: Created in 2020/2/4 16:05 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ */
+@Component
+@Slf4j
+public class TableSuffixUtil {
+
+    /**
+     * 环境参数
+     */
+    private static String envName;
+
+    /**
+     * 获取参数哈希码的分表后缀
+     * @param hashString 参数
+     * @return java.lang.String 分表后缀
+     */
+    public static String getHashTableSuffx(String hashString) {
+        String tableTag = "";
+        if ((! StringUtils.isEmpty(envName)) && (! envName.toLowerCase().equals("pri"))) {
+            tableTag = TableSuffix.ofHash(hashString, 0, null).getSuffix();
+        }
+        log.info("【{}】环境下【{}】的哈希表后缀为【{}】", envName,hashString, tableTag);
+
+        return tableTag;
+    }
+
+    /**
+     * 注解获取环境参数
+     * @param activeEnvName 环境参数
+     * @return void
+     */
+    @Value("${spring.profiles.active}")
+    private void setEnvName(String activeEnvName){
+        envName = activeEnvName;
+    }
+}

--
Gitblit v1.8.0