电商网站中订单号设计有什么规则和依据吗?
因为前段时间涉及到设计电商订单编号的问题,所以对这个问题确实研究了一段时间,有一些收获分享给大家。
本文主要是讨论电商的订单编码规则,如果是对内的ERP系统,订单编码则以简单易懂为主,因为外部人也看不到。
订单命名的几种规则:
1、不重复。
这点我相信大家都懂,订单的唯一性不用解释。
2、安全性。
你的订单编号不能透露你公司的真实运营信息,比如你的订单就是流水号的话,那么别人就可以从订单号推测出你公司的整体运营概括了。所以订单编码必须是除了你们公司少部分人外,其他人基本看不懂的。参考京东和淘宝的编码规则,基本别人是搞不清是什么意思的。
其实最好的防泄漏编码规则就是在编码中不要加入任何和公司运营的数据。
3、不能使用大规模随机码。
很多人分析订单编码规则的时候,第一个念头肯定是不重复唯一性,那么第二个念头可能就是安全性,那么同时满足前两者的第三个念头就是随机码了。因为大规模的随机码随机生成,因为本身就没有意义所以无所谓泄密了。但是事实上这种编码规则在实现上会有很大问题的。
随机码满足第二点安全性要求,为了满足第一点不重复特性,那就得在生成随机码的时候对比历史数据是否有重复,如果你的订单数量到达了十万次,你每次生成订单编码时就得对比十万条历史数据,你可想而知会造成什么巨大问题。
但是难道随机码就不能在编码中使用了吗?小规模的随机码是可以使用的,比如2~3位,这种随机码一般都是和流水号等结合使用,主要作用是为了隐藏流水号的真实数据而进行使用的。
4、防止并发。
这条规则主要针对编码中有时间的设定。
5、控制位数。
这点很好理解,订单号的作用就是便于查询。
一般正常使用场景应该是订单出异状或者退货的时候,用户将订单号报给客服,由客服进行查询。
所以一般在10~15位为好。
京东10位,淘宝15位。
综上,我建议的订单规则是这样的:
下单渠道1位+业务类型1位+时间信息4位+下单时间的Unix时间戳后8位(加上随机码随机后的数字)+用户user id后4位。然后你会说,这样算下来就订单号就18位了啊,一点都不精简啊,不好记不好念不好输的。但我说的上面的这些业务标记,你不一定要全部加上啊。
你看淘宝/天猫那么大的订单量,16位订单号就搞定了。细心的网友已经发现了,订单号的后5位是取自用户user id的后四位,前12位中有10位可能是由Unix时间戳加随机规则生成的。
问题1:为什么淘宝单号这么长?前几年还12、13位,现在都16位了? 订单号之所以那么长,我的理解是短了不够用,毕竟那么大的用户基础和订单量。至于现在都是16位?我查询了2011年的淘宝订单,发现是14位的,并不是该简友说的12/13位,但由14位扩充到16位,应该很大一部分原因是业务增长的原因。
问题2:为什么自己的淘宝单号最后4位都一样呢?这4位数字代表什么? 2011
年3月之前的订单,后4位是不一样的;3-7月之后(4/5/6三个月我没有下过单)的淘宝订单,后4位是一样的。我猜想可能是user
id,后来我验证了下,一定程度上是的,比如我的ID后4位是1190,订单的后4位是9910,由此看来,淘宝订单后4位是将user
id后4位简单处理过的。至于前12位,我 猜想其中有10位可能是由Unix时间戳加随机规则生成的。
4.订单号怎么生成才好看呢?
相信很多人都受够了银行卡上面不分段的银行卡号了吧,还有就是快递单上面不分段的快递单号码(顺丰的就很好),这些简直就是反人类设计。其实订单系统里面也可以借鉴顺丰的这个思路分段显示,方便查看和诵读。
如果做的再智能点,支持WEB上双击复制或者APP上长按复制(点击后可复制),是不是更好看更人性化更便捷了呢?