编号生成器项目介绍

1、项目亮点

1、支持多租户,比如同一个公司内部有多套系统需要生成编号,可按租户来隔离
2、编号类型支持种类多态,比如:订单编号、用户编号等
3、编号组成部分可以随意组成以及调整先后顺序,比如:编号前缀、编号后缀、编号长度、编号间隔、编号生成规则等

2、编号规则介绍

编号组件示例值必须填写是否可以多少使用备注
前缀GD创建编号规则时
时间格式20250602符合日期格式都可以,时分秒也可以
固定值B一般用于订单类型区分时使用
编号规则00001编号累加,可设定长度,是否次日从初始值开始,自定义步长
随机数12443324生成一个随机数
动态变量G接口传参变量替换,更加灵活
常见的组成:
1、编号前缀+时间格式+编号规则     GD2025010100001
2、编号前缀+时间格式+固定值+编号规则     GD20250101B00001
3、编号前缀+时间格式+变量值+编号规则     GD20250101{变量值}00001

【注意实现】
1、编号前缀可以不配置,如果配置只能使用1次,顺序无所谓
2、编号规则类型是必填项
3、顺序可以随意调整,除了编号前缀和编号规则这两个类型只能用1次,其他的都可以使用多次并顺序随意调整

3、项目依赖的中间件,本项目是作为一个单独的服务运行

· Mysql (初始化数据库脚本在项目db目录下)
· Redis  (需要设置redis密码)

4、项目表结构说明

表名说明备注
sys_tenant多租户表用于区分不同子公司或者子项目的需要,此标识贯穿到后续所有表
sys_sequence序号表序号基础信息表,存放序号唯一标识,序号前缀等基础信息
sys_sequence_rule序号规则排序表存放序号规则排序信息,里面有不同的序号类型组成可选(参考第2步规则介绍),根据sort排序选择
sys_sequence_record序号生成结果表记录当前序号生成结果当前值等信息,如果是日清零,则每天都会有一条记录

5、测试

项目启动完毕后,把对应的mysql.sql脚本初始化好后执行下面测试脚本

curl --location --request POST 'http://127.0.0.1:7001/sequence/nextNo' \
--header 'Content-Type: application/json' \
--header 'Accept: */*' \
--header 'Host: 127.0.0.1:7001' \
--header 'Connection: keep-alive' \
--data-raw '{
    "tenantId": "1",
    "mark": "UENPAY_SP"
}'

6、项目地址