为夜市/摊位系统增加餐桌码(桌台二维码)功能。摊主和夜市管理员可以创建餐桌码,顾客扫码后进入点餐下单流程。
| 类型 | 创建者 | 绑定 | 扫码后展示 |
|---|---|---|---|
| 摊位码 | 摊主(user_type=4) | 绑定摊位 | 该摊位的商品列表 → 点餐下单 |
| 公用码 | 夜市管理员(user_type=3) | 绑定夜市 | 所有摊位列表 → 选择摊位 → 该摊位商品 → 点餐下单 |
table_qrcode| 字段 | 类型 | 说明 |
|---|---|---|
| id | bigint PK | 主键 |
| table_no | varchar(32) | 桌号(如 A01、B02) |
| type | tinyint | 类型:0=摊位码, 1=公用码 |
| store_id | bigint NULL | 关联摊位ID(摊位码必填,公用码为空) |
| night_market_id | bigint | 夜市ID |
| qr_code | varchar(255) NULL | 二维码内容/图片URL |
| status | tinyint | 启用状态:0=启用, 1=停用 |
| use_status | tinyint | 使用状态:0=空闲, 1=使用中 |
| create_by | varchar(64) | 创建者 |
| create_time | datetime | 创建时间 |
| update_by | varchar(64) | 更新者 |
| update_time | datetime | 更新时间 |
| remark | varchar(255) NULL | 备注 |
idx_store_id (store_id) — 按摊位查询idx_night_market_id (night_market_id) — 按夜市查询idx_type (type) — 按类型查询| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /table-qrcode/add | 创建餐桌码 |
| GET | /table-qrcode/list | 获取餐桌码列表(支持分页、筛选) |
| GET | /table-qrcode/{id} | 获取餐桌码详情 |
| PUT | /table-qrcode/update | 更新餐桌码 |
| DELETE | /table-qrcode/delete/{id} | 删除餐桌码 |
| PUT | /table-qrcode/changeStatus | 启用/停用切换 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /table-qrcode/qrcode/{id} | 获取/生成餐桌二维码图片 |
| GET | /table-qrcode/scan | 扫码入口(C端,通过二维码中的参数跳转) |
创建餐桌码 POST /table-qrcode/add
{
"tableNo": "A01",
"type": 0,
"storeId": 100
}
列表查询 GET /table-qrcode/list
参数:storeId, type, status, useStatus, pageNum, pageSize
TODO: 待确定 — 扫码后的跳转方案尚未最终确定,目前后端已预留 scan 接口,二维码内容格式后续根据 App 端方案调整。
候选方案:
foodie://scan?type=0&storeId=100&tableId=1,直接唤起 App 并跳转到对应页面https://app.awayqtw.com/scan?tableId=1,iOS/Android 自动识别并打开 App/scan 接口根据参数重定向到 App 对应页面当前实现: 方案4(后端重定向),配置项为 table-qrcode.base-url
扫码后行为:
订单创建时需携带 tableId,将订单关联到具体餐桌。
路径:E:\QtwCode\foodie\foodie-store
新增页面:TableQRCode.vue(餐桌码管理)
参考原型:https://www.axureshop.com/ys/1888500 的台桌管理模块(不需要预订设置)
页面结构:
筛选区
数据列表
新建/编辑弹窗
二维码查看弹窗
路由注册:在 router/index.js 添加 /table-qrcode 路由
API 模块:新增 src/api/tableQrcode.js