近期在做一套餐饮订餐和外卖系统,对订单号系统进行了特别设计。跟商城类的订单系统不同,餐饮订餐需要有两套订单号规则:一个是普通的订单号,一个是易于服务员叫号的订单号。
订单号常见的几种方式:
- 利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键)
- 日期+自增长数字的订单号(比如:2012040110235662)
- 产生随机的订单号(65865325365966)
- 字母+数字字符串式,字母有包含特别意义,C02356652
订单命名的几种规则:
- 不能出现重复;
- 要足够安全,不能通过订单号推测出公司的运营信息;
- 不能大量使用随机数,订单量较大检测订单号重复时容易出现问题;
- 防止并发,过度依赖时间的话,高并发时容易重复。
- 位数不能过长,有时候客服介入的话,报订单很麻烦。
- 尽量使用纯数字的订单号,类似上面,容易出现发音问题。
规则加上基于我们的业务形式,制定了一套订单号规则,仅供参考:
餐饮管理系统订单号规则
店面ID规则:
区号(去首0,补全3位,逆序)+ 品牌ID(2位)+3位数字(自增)。
示例:120 12 345 说明:略
订单号规则:
业务类型(堂食1,外卖2,外带3)+ 店面ID(8位)+ Unix时间戳(去掉前2位,8位)+用户ID(取后4位),共21位。 示例:1120 1234 5516 8567 64444,缺点是有点长了。
说明: 时间戳:2019/3/4 15:47:56 > 1551685676,取后 8 位:51685676,时间戳约每 3.2 年重复一次。
易于每日使用的简化定单号:
- 堂食单号: T+翻台次数+桌台ID(1-3位)。 示例:T2002 说明:略
- 外带单号: D+小时一+小时自增+小时二。 示例:D028 说明:略
- 外卖单号: W+小时一+小时自增+小时二。 示例:W139 说明:略