首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >门店桌台管理怎么不打架?开台、并台、转台的状态机设计

门店桌台管理怎么不打架?开台、并台、转台的状态机设计

原创
作者头像
用户5658160
发布于 2026-09-24 09:08:38
发布于 2026-09-24 09:08:38
850
举报

导读:饭点高峰,服务员开错台、并台后账算错、客人换桌后订单跟着哪张台走?桌台管理的本质是一张带状态流转的表:空闲、已开台、已下单、已结账。状态管不住,结账就错。本文给出桌台状态机、开台/并台/转台的落地方案,含可直接复制的表结构与流转规则。

一、桌台模型:状态字段别乱放

桌台表最忌讳把状态和订单搅在一起。桌台只管自己的状态,订单单独一张表,通过桌台 ID 关联。状态机用显式字段控制:

代码语言:sql
复制
CREATE TABLE table_seat (
  id BIGINT PRIMARY KEY,
  no VARCHAR(16), capacity INT,
  status VARCHAR(16) -- idle/occupied/merged/cleaning
);

CREATE TABLE table_order (
  id BIGINT PRIMARY KEY,
  table_id BIGINT, amount DECIMAL(10,2),
  status VARCHAR(16) -- open/merged/closed
);

要点:table_seat.status 只存四个主状态,结账状态由订单表管;同一张台同一时刻只能有一个未结账订单,用唯一约束兜底。

二、开台:重复开台是头号事故

服务员最容易犯的错是同一张台开了两单(一桌两单),高峰期手快多点了一下。开台必须做幂等:按桌台查是否有未结账订单,有则直接返回已有订单,而不是新建:

代码语言:bash
复制
# 开台接口:先查再建(防重复开台)
SELECT id FROM table_order WHERE table_id = ? AND status IN ('open','merged');
# 查到则返回已有单,查不到才 INSERT

要点:开台请求要做并发控制(乐观锁或唯一索引),高峰期两个服务员同时开同一张台,必须只有一个成功;开台后要记录开台时间,超时未下单可提醒。

三、并台与转台:订单归属要跟着走

并台(两桌客人拼一起)和转台(换桌)是最容易算错账的操作。原则:订单跟着客人走,不跟桌台走。并台时 A 台订单合并进 B 台,A 台状态改"已并";转台时订单的 table_id 改到新台,旧台释放:

代码语言:bash
复制
# 并台:A 并入 B,A 台释放
UPDATE table_order SET table_id = B, status='merged' WHERE table_id = A AND status='open';
UPDATE table_seat SET status='idle' WHERE id = A;

要点:并台后原订单明细不能丢,结账时按合并后的订单算;转台要校验新台是空闲的,转过去之前先占住,避免两台同时转进同一张台。

四、清台与结账:状态闭环

清台是最后一步,也是最容易被跳过的:结账后桌台必须显式置为空闲,否则第二天开台发现台子还是"已开台"状态。清台要带校验,未结账不许清:

代码语言:bash
复制
# 清台前置校验:有未结账订单则拦截
IF EXISTS (SELECT 1 FROM table_order WHERE table_id = ? AND status IN ('open','merged')) THEN
  -- 拦截,提示先结账
END IF;
UPDATE table_seat SET status='idle' WHERE id = ?;

要点:清台后通知保洁/服务员(状态置"清洁中"再置"空闲"更稳妥,避免新客坐进没收拾的台);结账流水与桌台状态更新要在同一事务,先结账后清台,顺序不能反。

五、踩坑清单

  1. 状态与订单混一张表:并台转台后状态对不上,账就乱;
  2. 重复开台:同台两单,结账漏单,头号事故;
  3. 并台丢明细:合并后原订单找不到,顾客核对时无据可查;
  4. 转台不校验目标台:两台同时转进一张台,桌台状态打架;
  5. 结账不清台:次日台子还挂着"已开台",开台流程全堵;
  6. 清台不校验未结账:先清台后结账,钱没收台先放了;
  7. 状态更新与结账不同事务:一边成功一边失败,数据不一致。

六、工程落地建议

桌台管理要按「桌台/订单分表 → 开台幂等 → 并转跟单 → 清台闭环」落地,状态显式、操作幂等、订单跟人、事务兜底,四件事各守其位。同类分层在乔拓云门店系统的桌台管理模块中有对应实现,中小餐饮门店可直接参照该模块的状态机与幂等策略起步。

七、复盘清单

  • 桌台/订单分表,状态字段显式枚举;
  • 开台幂等:同台同刻只有一个未结账订单;
  • 并台订单归属 B 台且明细保留;
  • 转台先占新台再改归属,防双转;
  • 结账与清台同一事务,先结后清;
  • 清台后置"清洁中",避免未收拾就接待。

结语

桌台管理看着简单,乱起来全在状态:分表管结构、幂等管开台、跟单管并转、事务管闭环。状态机画清楚,高峰期再忙也不会开错台、算错账。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 一、桌台模型:状态字段别乱放
  • 二、开台:重复开台是头号事故
  • 三、并台与转台:订单归属要跟着走
  • 四、清台与结账:状态闭环
  • 五、踩坑清单
  • 六、工程落地建议
  • 七、复盘清单
  • 结语
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档