feat(common): 新增雪花算法ID生成器用于分布式唯一ID生成
- 添加SnowflakeIdGenerator工具类 -支持生成19位字符串ID和Long类型ID - 解决前端JavaScript大数精度丢失问题 - 为MyBatis Plus IdentifierGenerator提供支持
This commit is contained in:
parent
bc56bd672b
commit
7ecebc9518
@ -0,0 +1,54 @@
|
||||
package com.fundplatform.common.util;
|
||||
|
||||
import cn.hutool.core.lang.Snowflake;
|
||||
import cn.hutool.core.util.IdUtil;
|
||||
|
||||
/**
|
||||
* 雪花算法ID生成器
|
||||
* 生成字符串类型的分布式唯一ID
|
||||
*
|
||||
* <p>雪花ID特点:</p>
|
||||
* <ul>
|
||||
* <li>19位数字字符串</li>
|
||||
* <li>趋势递增,有利于数据库索引</li>
|
||||
* <li>分布式环境下唯一</li>
|
||||
* <li>解决前端JavaScript大数精度丢失问题</li>
|
||||
* </ul>
|
||||
*
|
||||
* @author fundplatform team
|
||||
*/
|
||||
public class SnowflakeIdGenerator {
|
||||
|
||||
/**
|
||||
* 雪花算法实例
|
||||
* workerId: 工作机器ID (0-31)
|
||||
* datacenterId: 数据中心ID (0-31)
|
||||
* 生产环境应根据实际部署情况配置
|
||||
*/
|
||||
private static final Snowflake SNOWFLAKE = IdUtil.getSnowflake(1, 1);
|
||||
|
||||
/**
|
||||
* 私有构造函数,防止实例化
|
||||
*/
|
||||
private SnowflakeIdGenerator() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成下一个字符串类型的雪花ID
|
||||
*
|
||||
* @return 19位数字字符串
|
||||
*/
|
||||
public static String nextId() {
|
||||
return String.valueOf(SNOWFLAKE.nextId());
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成下一个Long类型的雪花ID
|
||||
* 供MyBatis Plus IdentifierGenerator使用
|
||||
*
|
||||
* @return Long类型ID
|
||||
*/
|
||||
public static Long nextIdAsLong() {
|
||||
return SNOWFLAKE.nextId();
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user