物流运单号码维护Q31
背景
送得快 物流公司 准备上线物流系统。其中一个模块是物流单号码维护
该系统的服务器需要维护一个列表的可用的物流编码
客户端可以批量创建、申请、归还 可用的物流编码
物流编码
物流编码为 8 为数字
功能
创建物流编码
客户端可以让服务器创建 一个区间的物流编码
比如 20001001 - 20001010
创建时 需要提交一个起始编码,和需要的长度
比如 20001001, 10
特殊情况
如果跟已经创建的物流编码产生重叠,需要提示错误,并停止整个批次物流编码的创建
申请一个物流编码
客户端可以向服务器申请 物流编码
客户端在申请时 无法指定物流编码的数值
服务器 根据现有的物流编码,返回客户端一个最低值的可用物流编码
随后 该物流编码在服务器端 需要设置为不可用
特殊情况
如果服务器端 没有可用的物流编码,需要提示错误
归还一个物流编码
客户端在之前申请过编码后,可能会因为一些愿意 希望归还的一个编码
此时 客户端可以向服务器 指明归还某个物流编码 比如 20001002
服务器 将其重新标记为可用,之后再被申请时,可能会返回它
特殊情况
如果指定返回的物流编码 根本重来没有创建过,则不应该恢复
只有之前被创建出来的,并且被申请过的物流编码,才能被归还
挑战
长编码支持
该系统可以给任意物流公司使用,用于维护他们的物流单号资源
物流编码也从原来的 8位数字 变为 24 位 任意的 字母和数字组成的字符串
比如 SDK2018020101
创建
这些编码在申请时,编码的后几位应该是数,根据末尾的数进行递增生成。
服务器持久化
服务器在因为特殊原因关闭重启后,应该依然记得
以前创建过哪些编码
哪些编码可用
哪些编码不可用