– 订单号:雪花算法
– 正常一般 用年月日时分+一些字段生成订单号
– 如何避免订单号重复:拼接一些不会重复的东西,比如用户id(用户单点登录,随机数也有可能重复)
– 单点登录:同一账号在同一时空只能在一台设备上登录
– 避免一个用户疯狂点击提交,产生多个订单:提交按钮置灰设置、mq消息队列
– mq:rocket mq、rabbit mq、active mq等
注意,mysql中if-else语句不能嵌套begin-end一起使用通过lpad函数填充,生成随机数
– lpad(num,length,str)—>表示用str把num左填充到length位
– rpad(num,length,str)为右填充 SELECT LPAD(“你好”,10,“haha”) as t; SELECT RPAD(“你好”,10,“haha”) as t;
– RAND()返回一个随机数
– ROUND(num,x)—>返回,num四舍五入,保留小数点后x位
– ROUND(num)—>返回,num四舍五入取整数
//拼接商品序号,年月日时分秒,和随机字段,生成订单号
SELECT CONCAT(
good_id,
DATE_FORMAT(now(), '%Y%m%d%H%i%s'),
lpad(round(round(rand(),4)*1000),4,'0')
) FROM good_info