/ order

order

生成订单

生成订单号

google 关键词:php how to generate a unique order number

14位流水号、适合高并发场景、适用于多种业务

推荐方案是【时间流水-10位】 + 【自增数字-3位】 + 【业务标识-1位】

例如 1807021001-001–1
或者 1807021001001–1
或者 18070210010011

【时间流水】年月日分时秒(10位)
【递增数字】递增数字(3位),用redis的原子递增,满足高并发场景,当并发递增序列超过3位时,秒数+1,序列从0开始计时,这样每秒支持1000(0-999)个订单号生成。推荐使用 Redis 配合 Lua 实现。
【业务标识】业务标识(1位),可以支持10种业务,例如 0 为订单、1 为账单、2 为支付流水、3位退款流水。

优点是可以统一管控系统内的所有业务流水。

可以根据要求,自行调整【时间流水】【自增数字】【业务标识】的顺序和长度,还可以使用【业务前缀】来扩充。

创建订单

如果用户用户没有登录,则将订单数暂存在 session 中。跳转到注册页面,注册完成后进入系统,再读取 session 中暂存的订单生成订单,跳转到订单支付页面。

购物车功能 session

生产环境中建议使用 Redis 作为 Session 的存储介质。