订单号怎么生成才好用?有人问我相关的问题。之前做过电商项目的我也只是二次开发,订单这块的业务逻辑也是电商系统中较复杂的一环,单说订单号的设计生成也有很多讲究。
正常来说,订单号的生成规则一般正常会想到以下:订单号由数字或字母组成,数字可能是年月日时分秒,也可能是随机数字,也可能是商品标识品类,比如食品是1,书籍是2,还有可能是用户手机号,用户ID等等
那么问题来了,这些数字都组合在一起,长度和复杂度太高,那么一个好用又好看的订单号应具备哪些规则和依据呢?
回到问题本质,先说说订单号的作用,谁用订单号?订单号用来查询订单用的,一般是在支付或售后过程中有问题时用到的,也就是客服/运营/开发部门用的。另外,订单号尽量短,且不能重复,尽量能结合当前业务情况有特定的标识,如渠道编号,支付方式,业务类型等。比如:平台- 移动还是PC平台的,下单渠道和支付渠道- 支付宝还是现付,业务类型 和时间信息。
以下是订单规则的例子:
下单渠道1位+支付渠道1位+业务类型1位+时间信息8位+用户userid4位
最后我们也看看业界电商平台都是什么样的订单号。
1.淘宝单号,前几年还是12位、现在16位了,淘宝订单的后4位是user id,至少前12位可能是时间加随机数。
2.京东,之前是9位,现在11位了,但没看出规则。猜想应该是 有一个全局数据库,这个数据库中只有一张订单表(Order),表中只有一个自增的字段Id,这个自增的字段Id就是订单号。所有生成订单的API会首先访问全局数据库的Order表获得订单号,然后再生成订单。这样就可以保证子库订单号不重复。
3.ecshop,原来的订单号形式为:年月日 + 5位随机数字,例如:2016101718830
其实订单号没有对与错,只是简洁方便查询就可以,其实与产品的使用场景有关,比如滴滴打车,遇到问题,直接反馈时间+起点+车型车牌号,更方便,饿了么也同理,直接报时间和商家名更方便。