序列配置以及序列编号组件的使用
当我们需要生成自定义规则的编号时,会用到序列配置以及序列编号组件。
二、配置步骤
1. 准备工作
- 首先需完成序列配置,配置入口及初始界面如下:
2. 前端页面配置
- 在数据配置的“编号规则”项下添加自定义规则。序列配置组件会输出两个参数:
序列配置(字符串类型)和流水号(数值类型),需根据业务需求将这两个参数存入对应的数据库字段中。 - 接口要求:需提供一个修改接口和一个查询详情接口(用于数据回显)。
- 回显配置:输出对应回显内容,按字段匹配配置即可。
- 编辑功能:若需在应用端实现顺序调整、新增、删除等逻辑,可打开“基础设置”中的“编辑开关”。
- 自定义接口配置:需开发一个自定义接口,其内部逻辑为:根据字段查询序列配置,将流水号+1并更新数据表,同时将结果返回给页面。
- 业务数据格式:当序列配置中使用了业务字段(需手动填写字段名称)时,需在序列编号组件中返回一条list数据供组件匹配。例如:若配置的业务字段为
source,则订单详情的list数据应返回如下格式(组件会自动匹配source的值并参与编号组装):
3. 后端接口
- 组件会自动匹配到"source" 的值并参与编号组装

- Ps 考虑到获取编号在业务场景下存在并发问题,这里引入了存储过程,在数据库加行锁处理并发,当然这只是示例演示,可以根据实际情况调整这块逻辑 "id": 197, "order_no": "1642496485880898986", "from_order_no": "", "pay_trade_no": "202201182736198013455040517", "refund_trade_no": "202201182736198236793339910", "activity_id": 3, "goods_id": 2, "goods_price": 100, "sale_price": 100, "phone_number": "15352260517", "deliver_account": "", "source": "h5", // 与规则中的业务字段名一致 "pay_account": "666101000066180", "pay_method": "", "order_address": "临夏回族自治州", "status": "3", "pay_amount": 80, "coupon_code": "874707499015", "use_store": "", "create_time": "2022-01-18 17:01:26", "pay_time": "2022-01-18 17:01:40", "refund_time": "2022-01-18 17:01:41", "update_time": "2022-01-18 17:01:40"
4. 参考资料
CREATE TABLE sequence_demo (
id int(11) NOT NULL AUTO_INCREMENT,
sequence_config longtext, -- 存储序列配置规则(字符串)
sequence_number int(11) DEFAULT NULL, -- 存储当前流水号(数值)
type varchar(50) DEFAULT NULL, -- 序列类型(如“order”=订单序列)
create_time datetime DEFAULT CURRENT_TIMESTAMP, -- 创建时间
update_time datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, -- 更新时间
PRIMARY KEY (id),
UNIQUE KEY idx_type (type) -- 序列类型唯一索引,避免重复
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
序列自增存储过程
DELIMITER $$
CREATE PROCEDURE get_next_sequence(
IN p_type VARCHAR(255), -- 序列类型(如“order”)
IN p_step INT -- 步长(默认1,可自定义)
)
BEGIN
DECLARE v_new_seq INT;
START TRANSACTION; -- 开启事务
-- 行级锁锁定目标行,防止并发修改
SELECT sequence_number INTO v_new_seq
FROM sequence_demo
WHERE type = p_type
FOR UPDATE;
-- 计算新流水号(COALESCE处理初始NULL值) SET v_new_seq = COALESCE(v_new_seq, 0) + p_step;
-- 更新流水号
UPDATE sequence_demo
SET sequence_number = v_new_seq
WHERE type = p_type;
COMMIT; -- 提交事务释放锁 SELECT v_new_seq AS new_sequence; -- 返回新流水号 END$$ DELIMITER ; -- 恢复默认分隔符
调用存储过程代码 CALL get_next_sequence('order', 1); -- 调用示例:获取类型为'order'的序列,步长为1