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