Browse Source

替换了id生成类,使用统一的二方库

verguenza 5 years ago
parent
commit
71dac17d60

+ 1 - 1
Dockerfile

@@ -1,4 +1,4 @@
-FROM openjdk:14-jdk-buster
+FROM openjdk:13-jdk-buster
 MAINTAINER czhong
 MAINTAINER czhong
 
 
 ENTRYPOINT ["java", "-jar","--enable-preview", "/usr/share/manatee.jar"]
 ENTRYPOINT ["java", "-jar","--enable-preview", "/usr/share/manatee.jar"]

+ 5 - 0
pom.xml

@@ -82,6 +82,11 @@
             <version>4.1.0</version>
             <version>4.1.0</version>
         </dependency>
         </dependency>
 
 
+        <dependency>
+            <groupId>com.galaxis</groupId>
+            <artifactId>capsule</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
     </dependencies>
     </dependencies>
 
 
     <build>
     <build>

+ 1 - 1
src/main/java/com/galaxis/manatee/controller/UtilsController.java

@@ -1,6 +1,6 @@
 package com.galaxis.manatee.controller;
 package com.galaxis.manatee.controller;
 
 
-import com.galaxis.manatee.util.impl.SnowflakeIdGenerator;
+import com.galaxis.capsule.util.SnowflakeIdGenerator;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.bind.annotation.RestController;

+ 1 - 1
src/main/java/com/galaxis/manatee/entity/ding/DingTalkRobot.java

@@ -15,7 +15,7 @@ import javax.persistence.*;
 public class DingTalkRobot {
 public class DingTalkRobot {
     @Id
     @Id
     @GeneratedValue(generator = "idGeneratorBasicTrade")
     @GeneratedValue(generator = "idGeneratorBasicTrade")
-    @GenericGenerator(name ="idGeneratorBasicTrade" ,strategy="com.galaxis.manatee.util.impl.GalaxisIdGenerator")
+    @GenericGenerator(name ="idGeneratorBasicTrade" ,strategy="com.galaxis.capsule.util.GalaxisIdGenerator")
     private Long id;
     private Long id;
 
 
     /**
     /**

+ 0 - 15
src/main/java/com/galaxis/manatee/util/IdGenerate.java

@@ -1,15 +0,0 @@
-package com.galaxis.manatee.util;
-
-/**
- * @author zcj
- * @version 0.1
- * @date 2020/1/8 11:39 下午
- */
-public interface IdGenerate<T> {
-
-    /**
-     * 下一个id
-     * @return 下一个id
-     */
-    T nextId();
-}

+ 0 - 48
src/main/java/com/galaxis/manatee/util/impl/GalaxisIdGenerator.java

@@ -1,48 +0,0 @@
-package com.galaxis.manatee.util.impl;
-
-import org.hibernate.HibernateException;
-import org.hibernate.MappingException;
-import org.hibernate.engine.spi.SessionImplementor;
-import org.hibernate.engine.spi.SharedSessionContractImplementor;
-import org.hibernate.id.Configurable;
-import org.hibernate.id.IdentifierGenerator;
-import org.hibernate.service.ServiceRegistry;
-import org.hibernate.type.Type;
-
-import java.io.Serializable;
-import java.net.InetAddress;
-import java.util.Properties;
-
-/**
- * @author zcj
- * @version 0.1
- * @date 2020/1/8 11:53 下午
- */
-public class GalaxisIdGenerator implements Configurable, IdentifierGenerator {
-    /** 数据中心ID(0~31) */
-    private long dataCenterId = 0L;
-
-    @Override
-    public void configure(Type type, Properties params, ServiceRegistry serviceRegistry) throws MappingException {
-        try {
-            InetAddress addr = InetAddress.getLocalHost();
-            String[] a=addr.getHostName().split("-");
-            dataCenterId =Long.parseLong(a[a.length-1]);
-        }
-        catch (Exception e){
-            //10位长度最大值1023,这里简单写为1000,相信不会用到
-            dataCenterId =1000L;
-        }
-    }
-
-    public Serializable generate(SessionImplementor session, Object o) throws HibernateException {
-        SnowflakeIdGenerator snowflakeIdWorker = SnowflakeIdGenerator.getSnowflakeIdGenerator(this.dataCenterId);
-        return snowflakeIdWorker.nextId();
-    }
-
-    @Override
-    public Serializable generate(SharedSessionContractImplementor sharedSessionContractImplementor, Object o) throws HibernateException {
-        SnowflakeIdGenerator snowflakeIdWorker = SnowflakeIdGenerator.getSnowflakeIdGenerator(this.dataCenterId);
-        return snowflakeIdWorker.nextId();
-    }
-}

+ 0 - 127
src/main/java/com/galaxis/manatee/util/impl/SnowflakeIdGenerator.java

@@ -1,127 +0,0 @@
-package com.galaxis.manatee.util.impl;
-
-import com.galaxis.manatee.util.IdGenerate;
-
-/**
- * 雪花算法生成Id
- * @author zcj
- * @version 0.1
- * @date 2020/1/8 11:40 下午
- */
-public class SnowflakeIdGenerator implements IdGenerate<Long> {
-    private static SnowflakeIdGenerator snowflakeIdWorker;
-
-    private static final Object LOOK = new Object();
-
-    /**
-     * 获取 snowflake
-     * @param dataCenterId 数据中心ID (0~31)
-     */
-    public static SnowflakeIdGenerator getSnowflakeIdGenerator(long dataCenterId){
-        if(null == snowflakeIdWorker){
-            snowflakeIdWorker=new SnowflakeIdGenerator(dataCenterId);
-        }
-        return snowflakeIdWorker;
-    }
-
-    // ==============================Fields===========================================
-
-    /** 数据标识id所占的位数 */
-    private final long dataCenterIdBits = 10L;
-
-    /** 数据中心ID(0~31) */
-    private long dataCenterId;
-
-    /** 毫秒内序列(0~4095) */
-    private long sequence = 0L;
-
-    /** 上次生成ID的时间截 */
-    private long lastTimestamp = -1L;
-
-    //==============================Constructors=====================================
-    /**
-     * 构造函数
-     * @param dataCenterId 数据中心ID (0~31)
-     */
-    private SnowflakeIdGenerator(long dataCenterId) {
-        // 支持的最大数据标识id,结果是31
-        long maxDataCenterId = ~(-1L << dataCenterIdBits);
-        if (dataCenterId > maxDataCenterId || dataCenterId < 0) {
-            throw new IllegalArgumentException(String.format("dataCenter Id can't be greater than %d or less than 0", maxDataCenterId));
-        }
-        this.dataCenterId = dataCenterId;
-    }
-
-    // ==============================Methods==========================================
-    /**
-     * 获得下一个ID (该方法是线程安全的)
-     * @return SnowflakeId
-     */
-    @Override
-    public synchronized Long nextId() {
-
-        synchronized (LOOK){
-            long timeStamp = timeGen();
-
-            //如果当前时间小于上一次ID生成的时间戳,说明系统时钟回退过这个时候应当抛出异常
-            if (timeStamp < lastTimestamp) {
-                throw new RuntimeException(
-                        String.format("Clock moved backwards.  Refusing to generate id for %d milliseconds", lastTimestamp - timeStamp));
-            }
-
-            //如果是同一时间生成的,则进行毫秒内序列
-            // 序列在id中占的位数 */
-            long sequenceBits = 12L;
-            if (lastTimestamp == timeStamp) {
-                // 生成序列的掩码,这里为4095 (0b111111111111=0xfff=4095) */
-                long sequenceMask = ~(-1L << sequenceBits);
-                sequence = (sequence + 1) & sequenceMask;
-                //毫秒内序列溢出
-                if (sequence == 0) {
-                    //阻塞到下一个毫秒,获得新的时间戳
-                    timeStamp = tilNextMillis(lastTimestamp);
-                }
-            }
-            //时间戳改变,毫秒内序列重置
-            else {
-                sequence = 0L;
-            }
-
-            //上次生成ID的时间截
-            lastTimestamp = timeStamp;
-
-            //移位并通过或运算拼到一起组成64位的ID
-            // 开始时间截 (2015-01-01)
-            long startTimeStamp = 1420041600000L;
-            // 时间截向左移22位(5+5+12) */
-            long timestampLeftShift = sequenceBits + dataCenterIdBits;
-            // 数据标识id向左移17位(12+5) */
-            return ((timeStamp - startTimeStamp) << timestampLeftShift)
-                    | (dataCenterId << sequenceBits)
-                    | sequence;
-        }
-
-
-    }
-
-    /**
-     * 阻塞到下一个毫秒,直到获得新的时间戳
-     * @param lastTimestamp 上次生成ID的时间截
-     * @return 当前时间戳
-     */
-    private long tilNextMillis(long lastTimestamp) {
-        long timestamp = timeGen();
-        while (timestamp <= lastTimestamp) {
-            timestamp = timeGen();
-        }
-        return timestamp;
-    }
-
-    /**
-     * 返回以毫秒为单位的当前时间
-     * @return 当前时间(毫秒)
-     */
-    private long timeGen() {
-        return System.currentTimeMillis();
-    }
-}