feat(common): 新增雪花算法ID生成器用于分布式唯一ID生成

- 添加SnowflakeIdGenerator工具类
-支持生成19位字符串ID和Long类型ID
- 解决前端JavaScript大数精度丢失问题
- 为MyBatis Plus IdentifierGenerator提供支持
This commit is contained in:
zhangjf 2026-03-02 07:30:14 +08:00
parent bc56bd672b
commit 7ecebc9518

View File

@ -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();
}
}