From 7ecebc9518b0cbe71d3e729fe2ff479e89892686 Mon Sep 17 00:00:00 2001 From: zhangjf Date: Mon, 2 Mar 2026 07:30:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(common):=20=E6=96=B0=E5=A2=9E=E9=9B=AA?= =?UTF-8?q?=E8=8A=B1=E7=AE=97=E6=B3=95ID=E7=94=9F=E6=88=90=E5=99=A8?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E5=88=86=E5=B8=83=E5=BC=8F=E5=94=AF=E4=B8=80?= =?UTF-8?q?ID=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加SnowflakeIdGenerator工具类 -支持生成19位字符串ID和Long类型ID - 解决前端JavaScript大数精度丢失问题 - 为MyBatis Plus IdentifierGenerator提供支持 --- .../common/util/SnowflakeIdGenerator.java | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 fund-common/src/main/java/com/fundplatform/common/util/SnowflakeIdGenerator.java diff --git a/fund-common/src/main/java/com/fundplatform/common/util/SnowflakeIdGenerator.java b/fund-common/src/main/java/com/fundplatform/common/util/SnowflakeIdGenerator.java new file mode 100644 index 0000000..9fc8e05 --- /dev/null +++ b/fund-common/src/main/java/com/fundplatform/common/util/SnowflakeIdGenerator.java @@ -0,0 +1,54 @@ +package com.fundplatform.common.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +/** + * 雪花算法ID生成器 + * 生成字符串类型的分布式唯一ID + * + *

雪花ID特点:

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