通过序列号 Sequence 零代码实现订单流水号

序列号管理
本文通过产品编码和订单流水号介绍一下序列号(Sequence)在 crudapi 中的应用。
概要
序列号
MySQL 数据库没有单独的 Sequence,只支持自增长(increment)主键,但是不能设置步长、开始索引、格式等,最重要的是一张表只能由一个字段使用自增,但有的时候我们需要多个字段实现序列号功能或者需要支持复杂格式,MySQL 本身是实现不了的,所以 crudapi 封装了复杂序列号,支持字符串和数字,自定义格式,也可以设置为时间戳。可以用于产品编码、订单流水号等场景!
配置序列号
产品编码

产品编码采用字符串方式,格式为:PROD_%09d,表示长度为 9,宽度不足用 0 补齐,最小值从 1 开始, 最大值为 999999999,下一个值为 1,步长为 1。
销售订单流水号

产品编码采用时间戳方式,格式为:'SO'yyyyMMddHHmmssSSS,SO 表示前缀,精确到年月日时分秒毫秒
表定义配置序列号属性
产品编码

产品表配置序列号字段
销售订单流水号

销售订单表配置序列号字段
验证序列号功能
产品

通过 ui 创建产品,因为编码字段设置了序列号,所以留空,这样后台会自动生成编码,如果编码字段手工输入,就以手工输入地值为准。

生成的编码为 PROD_000000001,和期望的一致。
销售订单

通过 Postman 创建销售订单

ui 查看订单列表,流水号发现 SO20210212110955912 生成成功
高级
序列号 API

序列号提供了获取下一个值功能的 API,适合 UI 定制的场景,显式的把值显示在 ui 上,这样更加直观,但是如果用户不点保存或者保存失败的话,可能会浪费值。查看 swagger 文档:
https://demo.crudapi.cn/swagger-ui.html
验证

通过 Postman 获取到下一个值为 PROD_000000002
小结
本文通过配置序列号的方式实现了特定字段的自动赋值功能,无需编码,并且支持二次开发。目前有点不完善的地方,产品和销售订单都是孤立的单表,后续会介绍如果配置表关系,实现一对多,一对一,多对多等主子表。
附 demo 演示
本系统属于产品级的零代码平台,不同于自动代码生成器,不需要生成 Controller、Service、Repository、Entity 等业务代码,程序运行起来就可以使用,真正 0 代码,可以覆盖基本的和业务无关的 CRUD RESTful API。
官网地址:https://crudapi.cn
测试地址:https://demo.crudapi.cn/crudapi/login
版权声明: 本文为 InfoQ 作者【crudapi】的原创文章。
原文链接:【http://xie.infoq.cn/article/9fe3ba4af0960563ca10e2464】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论