订单编号规则:
订单命名的几个规则:
1.不要重复。
2.安全。
你的订单号并不能透露你公司的真实运营信息,比如你的订单是序列号,那么别人就可以从订单号推断出你公司的整体运营总结。所以订单代码一定是除了你公司少数人之外,其他人基本看不懂的。提到JD.COM和淘宝的编码规则,基本上别人都搞不清楚是什么意思。
事实上,最好的防泄漏编码规则是不要在编码中添加任何与公司运营相关的数据。
3.不能使用大规模随机码。
很多人在分析订单编码规则的时候,第一个想到的肯定是不重复唯一性,然后第二个想到的可能是安全性,然后第三个想到的同时满足前两个的是随机码。因为大规模随机码是随机生成的,又因为没有意义,所以不需要泄密。但实际上,这个编码规则在执行中会有很大的问题。
随机码满足第二个安全要求。为了满足第一个不重复特性,你得在生成随机码的时候比较历史数据有没有重复。如果您的订单数量达到100,000次,则每次生成订单代码时,您都必须比较100,000个历史数据。可想而知会引发怎样巨大的问题。
但是编码的时候不能用随机码吗?可以用小范围的随机码,比如2~3位数。这种随机码一般与序列号等结合使用。它的主要功能是隐藏序列号的真实数据。
4.防止并发。
这个规则主要是针对编码中时间的设定。
5.控制数字。
这个很好理解。订单号的作用是方便查询。
正常的使用场景应该是,当订单出现异常或退货时,用户会将订单号上报给客服,客服会进行查询。
所以一般在第10到第15位比较好。
JD.COM 10,淘宝15。
推荐的编码规则:
年、月、日、时、分、秒+用户ID(命名用户ID时也要注意,不要用序列号。可以采用区域ID+随机码+序列号+随机码的方法)
1.唯一性:时间是单向的,保证唯一性。
2.安全性:只要保证用户ID的安全性即可。
3.随机码不参与判断,因为之前的数据已经保证没有重复。
4.在同一秒内,同一个用户不会生成两个订单代码,因此可以防止并发。
5.位数可能在20位以内,位数较多。
年、月、日、小时、分钟、秒、微秒+随机码(2)+序列号+随机码(3)
1.唯一性:时间是单向的,保证唯一性。
2.安全:只要确保序列号不能被识别。
3.随机码的位数是保密的,如果这个不清楚就很难判断序列号的位数。由于同时生成大量订单,代码不具备线性比较的功能。即使序列号是已知的,也可以在初始化时分配。
4.在同一秒内,同一个用户不会生成两个订单代码,因此可以防止并发。
5.位数可能在20位以内,位数较多。
订单编号的常见方式:
1.使用数据库的主键值生成一个自增长的订单号(订单号是数据表的主键)
2.日期+自增数的订单号(例如2012040110235662)
3.生成一个随机订单号(65865325365966)
4.字母+数字字符串类型,字母有特殊含义,C02356652
订单编号设计原则:按需设计
用于检索订单详细信息的唯一特征码可用于检索订单日期、产品类别、颜色、尺寸(或样式)、位置等。订单号包含的信息太多,有点多余!按需设计!
订单号设计用户体验规则:
1.订单号不重复;
2.如果方便客服,最好有“日期+自增”样式的订单号,客服一眼就能知道订单是否在退货保证期内;
3.订单号长度尽量短(10位以内),方便用户。尤其是在电话投诉的情况下,长号码差错率高,影响客服效率;
4.订单编号应尽可能为数字(纯整数)。在数据库顺序索引查询中,长整数字体的数据索引和检索效率远高于文本类型,所以尽量避免“字母+数字串”!
参考:订单编号生成规则