编号生成器项目介绍
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、项目地址