怎样设计订单号,对客户展示更友好,也便于技术开发?

2018-05-14 22:18:51 +08:00
 guoyu4126

现在的订单号设计为 6 位数字。 想重新设计一下订单号

1、对客户展示友好 2、尽量以全数字为主

4903 次点击
所在节点    程序员
21 条回复
3dwelcome
2018-05-14 22:33:11 +08:00
改成三位数字订单号,技术层面订单号加上用户的手机号当前缀,就不会冲突了。
jimzhong
2018-05-14 22:37:03 +08:00
@3dwelcome 如果客户有超过 1000 个订单就冲突了吧。建议加上年和月。
loading
2018-05-14 22:37:07 +08:00
旁边给二维码就行
yhxx
2018-05-14 22:46:13 +08:00
对客户展示友好是指什么?
普通公司应该遇不到淘宝那种超出 int 上限的情况吧
redtea
2018-05-14 22:49:17 +08:00
参考淘宝,时间戳+6 位用户 ID。不过我还是没有想明白怎么防止用户 ID 尾号相同的用户在同一时间提交生成相同订单号。
EarthChild
2018-05-14 22:57:40 +08:00
@redtea #5 那就让那个人给你付款吧!
woscaizi
2018-05-14 23:02:50 +08:00
@redtea 淘宝订单号是单独的系统来生成的吧,这个系统有逻辑可以避免生成重复订单号。打完这句话我发现这简直是句废话。
jowuIM
2018-05-14 23:04:11 +08:00
@redtea 应该加上地域的 ID, 电话号段的分配本来就带地域的.
Raymon111111
2018-05-14 23:07:00 +08:00
"对用户友好" 有例子吗? 啥意思
FYK
2018-05-14 23:07:06 +08:00
订单号这个东西超级复杂啊。可以搜一下:
https://www.zhihu.com/question/19805896
yangqi
2018-05-14 23:07:37 +08:00
订单号对客户友好?这本来就是个假命题,客户谁关心订单号的格式?自己开发方便安全就可以了
sujin190
2018-05-14 23:16:47 +08:00
其实时间年月日时分秒对人是很容易记的了,每个人都自然对时间自然有理解,管理上也很友好,本身就是时序的,后面加上全局计数器、随机数或者用户 id 都行,都可以在短时间多机快速生成很多订单好
有做法也可以年月日时分秒+1 字节机器 ID+2 字节进程 ID+1 字节进程内计数器,四字节转 10 个数字,一般就可以快速生成订单号了吧
soli
2018-05-14 23:42:58 +08:00
楼上正解。
airyland
2018-05-14 23:57:05 +08:00
10 位左右的数字对用户就算友好了,加上日期并没有变得多么易读有用。对用户友好其实是方便用户复制、查看、念给电话客服,所以在排版上格式化下,四位一组就可以了,比如 2345 3446 345。另外订单界面加上复制功能。
imydou
2018-05-15 06:50:25 +08:00
@3dwelcome #1 不利于更换手机号
echoZero
2018-05-15 08:43:32 +08:00
从用户角度:订单号需要短 方便用户联系客服
从运营角度:不能连续,防止别人抓取。
从技术角度:不能重复,能包含 sharding key,易于拓展,还要容量足够大。
opengps
2018-05-15 09:16:49 +08:00
@3dwelcome 别用手机号,容易涉及隐私保护问题,如果需要关联到用户,换成用户的 uuid

订单号设计,可以直接体现下单时间,yyMMddxxxx,x 可以是可变长度,前面订单日期固定 6 位即可,xx 递增或者随机增长打乱接口被采集可能
vencent00
2018-05-15 09:19:01 +08:00
@redtea 用种子表生成订单号
opengps
2018-05-15 09:21:42 +08:00
另外订单表单独用一个时间列做聚集索引,不建议订单号做主键,这样有利于将来表太大,分割表分区或者冷数据迁移
jjzhanhun
2018-05-15 09:53:46 +08:00
年月日+时间戳+随机数+用户 id 后 4 位

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/454828

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX