推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

简单聊聊电商系统的订单号生成规则

   2023-08-23 网络整理佚名2320
核心提示:对一些涉及到用户的编号规则时候,可以使用到用户ID作为变量来进行设计,如淘宝的订单号中最后几位数就使用了用户ID,不过要注意不能使用完整的用户ID,需要进行一些规则的设计再使用。对电商系统中,可以把商家ID脱敏后也作为一个变量设计到编号规则中。淘宝订单号的生成规则这种编号一般系统拥有一套成熟的加密规则,不属于常规的订单生成规则,一般用于加密程度较高的业务。

由于我们在业务中对订单号有独特的要求,所以我们在生成订单号时必须遵循不可重复的特点。 事实上,底层生成订单号时,由于业务流量较大,处于高并发状态。 ,而订单号生成规则一般是固定的,所以可能会导致多个线程同时读取相同的生成参数,导致生成的订单号相同(当然这是开发者要注意的问题) 。

二是业务的长期积累可能会导致新生成的订单号与过去很长一段时间的订单号重复。 因此,在设计订单号时,必须充分考虑不可重复性原则(后面会谈到订单号设计,变量会详细讨论)。

2. 安全性

该号码不能泄露公司经营情况,如日常销售额、公司序列号等信息,以及经营信息、用户手机号码、身份证等私人信息。 并且不能有明显的整体规则(局部规则是允许的),随意修改一个字符就可以查询到另一个订单信息,这也是不允许的。

类似于我们高考时考生号的生成规则。 它不能是连续的数字。 否则,您只需按顺序向下搜索即可搜索到其他候选人的结果。 这是绝对不允许的。

3.具有一定的可读性

位数应易于操作,因此要求订单号的位数适中且局部规则。 这样可以方便订单异常或者退货时客服查询。

订单号太长或者订单号难以辨认,会导致客服输入困难,错误率较高,影响用户体验的售后体验。 因此,在实际业务场景中,订单号的设计通常会适当携带一些允许公开且对使用场景有帮助的信息,例如时间、周、类型等,这主要是根据使用场景对应涉及的号码。

而且,时间、周等自增元素是订单号设计的一部分,有助于解决因业务积累而导致的订单号重复问题。

3.编号设计中常用的变量

在遵循所涉及的原则的基础上,我们经常使用一些变量来设计编号。 这也是为了满足订单号本地可读性带来的业务优势。 通常有以下几类:

1次

例如259类型的年、月、日、时、分、秒,在数字中使用该变量将会在一秒内将重复的可能性降低为不重复。

常用的时间变量有很多变体类型,比如取年份的最后2位,比如只保留到当天。 通常,月,日,周等+其他元素用于快递取件代码的设计。 这是为了方便快速重复使用取件码,因为快递取件码的有效期通常不超过1个月,并且会过期。 道路返回随后被毁坏。

2. 时间戳

时间戳是一个 10 位数字,表示自 1970 年 1 月 1 日当前时间(UTC/GMT 午夜)以来的秒数。 时间戳也经常用作表示时间的方式,也可以精确到毫秒,形成 13 位数字。

3. 类型

比如订单类型、售后类型、商品类型、支付类型等,不同类型可以使用不同的参数。 通常支付类型的应用场景是线上支付和线下支付共享业务背景,因此为了方便区分,会添加支付类型参数来区分线上和线下。

类比就是商店代码、支付机器代码、操作员代码等等。

4. 用户ID

对于一些涉及用户的编号规则,可以将用户ID作为变量来设计。 比如淘宝订单号的最后几位使用了用户ID,但是注意不要使用完整的用户ID,需要做一些规则设计以便复用。

5.商户ID

对于电商系统,可以将商户ID脱敏,设计为编号规则中的变量。

6. 手机号码

使用用户手机号码中的某些数字作为号码中的变量; 在设计类似于手机号码零件号这样具有高度重复属性的订单号时,切记不要只有一个变量,否则订单中很容易出现重复号。

七、平台形式

如果是多终端多平台系统,可以考虑将平台作为编号中的变量考虑在内。 例如,01用于小程序平台,01用于应用程序,03用于PC版本,04用于第三方平台。

8.其他业务属性

根据业务场景,一些业务属性信息也可以设计为变量。

9. 随机数

随机数是系统按照程序在一定规则内随机生成的字符,可以是数字,也可以是字符串,一般可以用来减少重复; 随机数在订单生成中使用的频率非常高,往往前几位是一些显式的规则数字,比如生成订单时的时分秒,然后在末尾添加四个随机数就形成了订单号。 因此,读者在设计订单号时,如果不知道如何加密,可以简单地插入一些随机数。

10. 序列位

表示序列的数字,例如 10、11、12。

11. 认证位

一般放在最后,根据前面的多位字符按照一定的规则计算出最终的号码,一般为1位,主要目的是提高号码的安全性; 身份证的最后一位是校验位,其计算原理也是通过前几位的加密算法计算出来的。 有兴趣的读者可以了解一下身份证的生成规则。

12. 地区信息

对于具有地域性的编号规则,可以将地域视为一个变量,例如某个地区的分店、某个地区的线下自动售货机等。

13、数据库数据自增ID

每条数据输入系统时,一般都有一个唯一的ID,也可以作为数字的变量。

四、编号实践方案分享 1.UUID

通用唯一标识符( )是一种软件构建标准,也是分布式计算环境领域的开放软件基金会组织的一部分。 其目的是让分布式系统中的所有元素都拥有唯一的标识信息,而无需通过中央控制端指定标识信息。

1~8位采用系统时间,系统时间精确​​到毫秒级,保证时间的唯一性。 9~16位使用底层IP地址,在服务器集群中是唯一的。 第17~24位采用当前对象的值,该值在内部对象上是唯一的。 25~32位使用调用方法的随机数,在一个对象内以毫秒为单位唯一。

通过以上四种策略可以保证唯一性。 系统中凡是使用随机数的地方都可以考虑使用UUID算法。 但直接用这个作为单个数字。 虽然它是唯一且安全的,但它不具有任何可读性。 因此,在这种情况下,UUID只能作为系统中间的识别码,在业务中数据传输时与订单号配合使用,绝不能被客户和业务人员直接使用。

2.时间戳+随机数

对于一些编号要求不是很大的场景,如果对可读性没有要求,可以简单地使用时间戳和随机数作为编号规则; 例如时间戳+随机数2313,则数字为313。

三、淘宝订单号的生成规则

共19位,前13位基于时间戳和内部定义序列,后6位是与买家ID相关的用户位。

4、有赞商户订单号

日期+时分秒+随机数。

5.时间+时间戳+用户+序列位

时间:取年+月+日的最后2位数字组成例如。

时间戳:取时间戳的后6位

用户:取用户ID的后5位,其中2位序列是随机的。

6. 组合变量

订单通道1位+支付通道1位+业务类型1位+时间信息4位+订单时间Unix时间戳后8位(加上随机码后的数字)+用户后4位,总共 19 位 不需要将所有 19 位相加。

7. 预生成

系统预先生成不重复的号码,业务系统需要使用时需要按顺序取出号码。 这种通用编号系统有一套成熟的加密规则,不属于常规的订单生成规则,一般用于加密程度较高的业务。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON