如何设计订单号生成

订单号、支付流水号、售后订单号、快递取货号、电子券核销码等,这些都是我们日常在生活中进行会遇见和使用的一些单号,那么为什么有些单号那么长,有些只有几位数?有些单号一看就知道年月日的信息,有些却看不出任何意义?今天就来带大家看一下订单号的是怎样生成的。

1、为什么淘宝单号这么长?前几年还12、13位,现在都16位了?

2、为什么自己的淘宝单号最后4位都一样呢?这4位数字代表什么?

3、从订单号可以推算出竞品的销量吗?

4、从订单号可以判断出竞品业务发展的速度吗?

5、从订单号可以猜想出竞品的业务策略和布局吗?

6、如何解决订单号重复的问题?

7、如何解决业务发展快,订单号长度不够用问题?

8、客服OR物流如何快速解读订单号的关键信息,从而提高工作效率?

9、业务变更,如果有拆单等需求,如何设计编码来满足业务的灵活和拓展需求?

10、编码变长之后,如何解决数据库的存储和读取性能?

订单命名的几种规则:

1、不重复。

这点我相信大家都懂,订单的唯一性不用解释。

2、安全性。

你的订单编号不能透露你公司的真实运营信息,比如你的订单就是流水号的话,那么别人就可以从订单号推测出你公司的整体运营概括了。所以订单编码必须是除了你们公司少部分人外,其他人基本看不懂的。

其实最好的防泄漏编码规则就是在编码中不要加入任何和公司运营的数据。

3、不能使用大规模随机码。

很多人分析订单编码规则的时候,第一个念头肯定是不重复唯一性,那么第二个念头可能就是安全性,那么同时满足前两者的第三个念头就是随机码了。因为大规模的随机码随机生成,因为本身就没有意义所以无所谓泄密了。但是事实上这种编码规则在实现上会有很大问题的。

随机码满足第二点安全性要求,为了满足第一点不重复特性,那就得在生成随机码的时候对比历史数据是否有重复,如果你的订单数量到达了十万次,你每次生成订单编码时就得对比十万条历史数据,你可想而知会造成什么巨大问题。

但是难道随机码就不能在编码中使用了吗?小规模的随机码是可以使用的,比如2~3位,这种随机码一般都是和流水号等结合使用,主要作用是为了隐藏流水号的真实数据而进行使用的。

4、防止并发。

这条规则主要针对编码中有时间的设定。

5、控制位数。

这点很好理解,订单号的作用就是便于查询。

一般正常使用场景应该是订单出异状或者退货的时候,用户将订单号报给客服,由客服进行查询。

所以一般在10~15位为好。

京东10位,淘宝15位。

年月日时分秒微秒+随机码(2)+流水号+随机码(3)

1、唯一性:时间是单向的,确保唯一性。

2、安全性:确保流水号不会识别出即可。

3、随机码的位数和前后都是保密的,所以如果不清楚这一点的话,是很难判断出流水号的位数的。因为同时产生的订单数量很多,编码不具备线性对比功能。就算知道了流水号,可以在初始化时进行赋值。

4、在同1秒钟,同一用户是不会产生2个订单编码的,所以可以防并发。

5、位数可能会在20位之内,位数比较多。

一个好用又好看的订单号,应该怎么设计?或者应该具备哪些规则和依据呢?

回到问题的本质,订单号是拿来干嘛用的?谁会关注订单号?简而言之,订单号是用来标记/查询订单(查询的时候可能更关注于物流单号)用的,一般会在订单有支付/售后/异常问题的时候会用到,也就是说订单号主要是拿给客服/运营/开发部门用的。

那么客服在处理一笔订单的时候,什么格式的订单号才会好用呢?首先订单号中最好避免数字以外的其它字符类型,订单号尽量短,订单号尽量能结合当前的业务情况有特定的标识,如渠道编号(包括平台、下单渠道、支付方式)、业务类型和时间信息等。

为了便于理解,下面还是举例说明:

平台:这个以游戏举例,目前很多手游除了官方服务器外,还有一些是和其它平台比如小米、腾讯联合运营的,但是充值有可能是用的同一套,这种情况就很有必要在订单号中标记平台;

  • 下单渠道:目前很多电商产品都涵盖多平台,包括WEB、APP(Pad)和门店(比如苏宁等),比如通过订单号发现近期反映的问题都来自于APP,则理论上可以推断出APP渠道有问题。
  • 支付渠道:不同支付方式会遇到的问题也是不一样的
  • 业务类型:以前在游戏行业的时候,我们一般会把订单号的某一位用来标识游戏名称,比如梦幻西游、魔兽世界和阴阳师分别用1、2、3来标识。这样遇到相关问题时,不用后台查询即可快速识别出问题并把其转给相关游戏团队。同理的还有零售和团购,自营订单和入驻商家订单,2B业务订单和2C业务订单;
  • 时间信息:有时间信息会让客服/运营人员看到订单时不需要经过后台查询即可知道该订单时哪天产生的,可以简单的判断问题的紧急程度。同时在B2B业务中,我们也可以根据该时间推算出大致的清分结算时间等等。所以我的建议是如果业务类型决定了客服类问题比较多,则有必要在订单号里面加上这个信息。但时间的完整格式2016年11月11日 11点22分33秒这样的显示出来就是20161111112233,年和时分秒信息略显多余,只记录月和日即可;

综上,我给出的好用的订单规则是这样的:

下单渠道1位+支付渠道1位+业务类型1位+时间信息4位+下单时间的Unix时间戳后8位(或是这8位数字加上随机码和随机规则进行随机后的数字)+用户user id后4位。然后你会说,这样算下来就订单号就19位了啊,一点都不精简啊,不好记不好念不好输的。但我说的上面的这些业务标记,你不一定要全部加上啊。

我们来看看2个问题:

问题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时间戳加随机规则生成的。

从用户体验和数据库优化的角度来看

1.利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键)

2.日期+自增长数字的订单号(比如:2012040110235662)

3.产生随机的订单号(65865325365966)

4.字母+数字字符串式,字母有包含特别意义,C02356652

5.订单号无重复性;

6.如果方便客服的话,最好是“日期+自增数”样式的订单号,客服一看便知道订单是否在退货保障期限内容;

7.订单号长度尽量保持短(10位以内),方便用户,尤其电话投诉时,长的号码报错几率高,影响客服效率;

8.订单号尽量保持数字型(纯整数),在数据库订单索引查询中,长整数字型的数据索引与检索效率,远远高于文本型,因此尽量避免“字母+数字字符串式”!

参考资料:https://www.woshipm.com/pd/447179.html
https://www.woshipm.com/pd/5375714.html/comment-page-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值