近期在做一套餐饮订餐和外卖系统,对订单号系统进行了特别设计。跟商城类的订单系统不同,餐饮订餐需要有两套订单号规则:一个是普通的订单号,一个是易于服务员叫号的订单号。

订单号常见的几种方式:

  • 利用数据库主键值产生一个自增长的订单号(订单号即数据表的主键)
  • 日期+自增长数字的订单号(比如: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 说明:略