编者按:订单号、支付流量号、售后订单号、快递提货号、电子券验证码等,这些都是我们日常生活中会遇到和使用的一些订单号。那么,为什么有些订单号这么长,有些只有几位数呢?有些订单号一眼就能知道每年的信息,但有些却看不到任何意义?为什么我的淘宝订单的最后几位数是一样的?今天,让我们来看看订单号是如何生成的。
1.订单编号作为业务中唯一标识码的应用场景
在实际业务过程中,单号是订单的唯一标识码。提供订单号非常方便业务人员快速定位订单信息并帮助用户。
1. 如果用户订单遇到问题,需要找客服协助
当我们每天在电子商务平台上购买商品时,我们经常需要向平台客户服务反馈订单过程中遇到的问题。一般来说,此时平台客户要求用户填写订单号,使客户服务能够快速锁定订单信息,回答和处理用户信息问题。
2. 操作订单,如线下收款,核销订单
当我们在第三方平台上购买商店的线下优惠券时,员工需要核销我们提供的优惠券。一般来说,核销的基础是订单号。
在某些场景中涉及的离线收集也将根据订单号确认和收集订单。然而,在日常业务过程中,订单号通常会生成二维码,然后由员工扫描代码进行操作。因此,用户对离线订单号的感知不是很强烈。
3. 处理或跟进内部订单
从技术层面来看,在搜索订单相关信息时,往往是以订单为基础的ID作为唯一的标识符,这是由订单号生成规则的唯一性决定的(订单号生成规则将在后面提到)。
因此,当公司内部进行业务操作处理时,如通知仓库按订单交付,内部交换订单信息时,也会根据订单号直接传达信息。
二、编号规则的设计原则
业务中使用的订单号一般都是基于独特的需求,因此在设计订单号时需要遵循几个原则:
1. 不得重复
由于我们在业务中对订单号的要求是唯一的,所以订单号生成必须遵循不可重复的特点,实际上在底部生成订单号由于业务流量大,处于高并发状态,订单号生成规则一般是固定的,所以可能会导致同时读取相同的生成参数,因此,生成的订单号是相同的(当然,这是开发人员应注意的问题)。
其次,业务的长期积累可能会导致新生成的订单号与过去很长一段时间的订单号重复,因此在设计订单号时必须充分考虑不可重复的原则(订单号设计中的变量部分将详细讨论)。
2. 安全性
该编号不能披露公司的经营情况,如日常销售、公司流量等信息,以及商业信息、用户手机号码、身份证等隐私信息。不允许有明显的整体规则(局部规则),任何修改字符都可以查询另一个订单信息。
与我们高考考生编号的生成规则相比,一定不能连接,否则只需按顺序查询即可搜索其他考生的成绩,这是绝对不允许的。
3. 具有一定的可读性
位数要操作方便,所以要求订单号位数适中,局部有规律。这样可以方便客服在订单异常或退货时查询。
订单号过长或易读性差的订单号会导致客户服务输入困难,容易出错率高,影响用户体验的售后体验。因此,在实际的业务场景中,订单号的设计通常会适当地携带一些有利于使用场景的公共信息,如时间、周、类型等,主要基于所涉及的编号对应的使用场景。
此外,作为订单号设计的一部分元素,如时间和周,有助于解决业务积累引起的订单号重复问题。
三、编号设计中常用的变量
在遵循相关原则的基础上,我们经常使用一些变量来设计编号,这也是为了满足订单编号局部可读性带来的业务优势。通常有以下类别:
1. 时间
例如,在20220525105959年这种类型的年月时分秒,该变量用于将重复的可能性降低到一秒钟内不重复。
常用的时间变量有很多种,比如取年后两位数,比如20220525只保留到天。月、日、周通常用于快递取件码的设计+其他元素的设计是为了方便快速重复使用取件码,因为快递取件码通常在不超过一个月的情况下退回并销毁。
2. 时间戳
时间戳是10位数,代表1970年1月1日的当前时间UTC/GMT午夜)开始经过的秒数。它也是一种经常用来代表时间的方式,时间戳可以精确到毫秒,形成13位数。
3. 类型
如订单类型、售后类型、商品类型、支付类型等型、支付类型等可以使用不同的参数。通常,支付类型的应用场景是在线支付和离线支付共享一套业务背景,因此为了便于区分支付类型,将添加支付类型参数来区分在线和离线。
类比包括商店代码、支付机器代码、操作员代码等。
4. 用户ID
可用于一些涉及用户的编号规则ID用户被用作变量设计,例如淘宝订单号中的最后几位数ID,但是,注意不要使用完整的用户ID,在使用前需要设计一些规则。
5. 商家ID
在电子商务系统中,商家可以使用ID在编号规则中也设计了脱敏后的变量。
6. 手机号
使用用户手机号码中的某些位数作为编号中的变量;在设计订单编号时,记住不要只有一个变量,否则订单编号很容易重复。
7. 平台形态
如果是多终端多平台系统,可以考虑将平台作为编号中的变量。比如小程序平台01,安卓app使用01,PC版本采用03、第三方平台04等规则。
8. 其它业务属性
可以根据业务场景设计一些业务属性信息作为变量。
9. 随机数
随机数是系统根据程序在一定规则内随机生成的字符。它可以是数字或字符串,通常可以用来减少重复;随机数在订单生成中的使用频率非常高。通常,前几个数字是一些明确的规则数字,如订单生成的时间和秒,然后添加四个随机数来形成订单号。因此,读者在设计订单号时,如果不知道如何加密,可以简单地插入几位随机数。
10. 序列位
代表顺序的数字,如10、11、12等。
11. 验证位
一般放在最后,根据前面的多个字符按照一定的规则计算最后一个数字,一般为1,主要目的是提高编号的安全性;身份证的最后一个是验证位置,其计算原理也通过前面的数字加密算法计算,感兴趣的读者可以了解身份证的生成规则。
12. 地区信息
在区域性质的编号规则中,可以考虑区域作为变量,如区域分支机构、区域线下自动售货机等。
13. 自增数据库数据ID
当每个数据输入系统时,通常有一个唯一的数据ID,这个ID也可作为编号的变量使用。
四、分享编号实践方案1. UUID
通⽤唯⼀识别码,是⼀软件构建的标准也是开放软件基础⾦在分布式计算环境领域组织会议⼀部分。其⽬是让分布式系统中的所有元素都有唯一性⼀识别信息,⽽不需要通过中央控制端指定识别信息。
1~8位采⽤系统时间在系统时间上精确到毫秒保证时间⼀性。9~16位采⽤底层的IP服务器集群中只有地址⼀性。17~24位采⽤当前对象的HashCode值,在⼀内部对象上的唯⼀性。25~32位采⽤调⽤⽅法的⼀随机数,在⼀单个对象中的毫秒级只是⼀性。
以上四种策略可以保证⼀性。需要系统⽤到随机数的地方⽅可考虑采摘⽤UUID算法。但是直接用这个作为单号。虽然有独特性和安全性,但没有可读性。所以在这种情况下,UUID只能作为系统中间的标识码,在业务中数据流通时可与订单号配合使用,绝不能直接给客户和业务人员。
2. 时间戳+随机数
对于一些需求不大的场景,如果可读性没有场景要求,可以简单地使用时间戳和随机数作为编号规则拼接;如时间戳163530246+随机数2313,编号为1635302462313。
3. 淘宝订单号生成规则
共19位数,前13位数是根据时间戳和内部定义序列,后6位数是买家ID相关用户位。
4. 有赞商家端的订单号
日期+时分秒+随机数。
5. 时间+时间戳+用户+序列位
时间:取时间年份后两位+月份+211027等日期形成。
时间戳:取时间戳后6位数
用户:取用户ID后5位数,序列位2位数随机。
6. 综合各种变量
下单渠道1位+支付渠道1位+业务类型1位+时间信息4位+下单时间的Unix时间戳后8位(加上随机码后的数字)+用户userid后4位共19位不一定需要加19位。
7. 预先生成
系统提前生成不重复的编号,业务系统可以按顺序使用。该编号一般系统有一套成熟的加密规则,不属于常规的订单生成规则,一般用于高度加密的业务。
本文由 @小谢卖干货 每个人都是产品经理,未经许可不得转载。
题图来自 Unsplash,基于CC0协议。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至827202335@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.eztwang.com/dongtai/74501.html