ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SSM+微信小程序实现的餐厅堂食预订与点餐平台:桌台订座、预点菜与宴席预订单设计

SSM+微信小程序实现的餐厅堂食预订与点餐平台:桌台订座、预点菜与宴席预订单设计 SSM微信小程序实现的餐厅堂食预订与点餐平台桌台订座、预点菜与宴席预订单设计本文记录一个面向中型中餐厅的堂食预订与点餐平台的完整设计与实现过程。与市面上常见的综合在线订餐、扫码点餐类系统不同本文把关注点放在「到店」场景顾客提前订座、到店享用预先点好的菜品以及婚宴寿宴这类宴席的预订单管理。一、前言餐饮行业里把客人请进店里和把餐食送出去是两条完全不同的业务线。后者比拼的是时效与运力调度而堂食餐厅更关心的是今晚的包间还有没有空、顾客能不能提前把菜点好、周六那场六十人的婚宴由谁来确认档期。笔者参与的一个实践项目就来自这样一家中型中餐厅。餐厅设散台区、三间主题包间和两个无柱宴会厅工作日以散客与商务宴请为主周末则大量承接婚宴、寿宴。在此之前订座靠电话加纸质登记簿漏记、撞档是常态宴席的菜单和布置要求靠微信语音反复沟通信息零散。基于这些痛点我们把系统目标定为三件事在线订座顾客在小程序上选日期、选时段、选桌台提交后形成一条预订单由店员在后台确认预点菜顾客到店前即可浏览菜品并加入点菜篮到店落座后由店员核销出单缩短等菜时间宴席预订单把宴席当作一种特殊预订类型管理备注栏记录主题布置、套系选择等需求形成可追溯的电子台账。全文按技术选型、功能设计、数据库设计、系统演示的顺序展开最后给出小结。二、技术栈系统整体采用经典的分层架构全部选型围绕「稳定、好部署、易答辩讲解」三个原则层技术说明后端框架Spring SpringMVC MyBatis-Plus 2.3SSM 组合war 包部署数据库MySQL 5.7InnoDButf8mb415 张业务表连接池Druid带慢 SQL 与监控支持管理端前端Vue 2 Element UIvue-cli 构建静态产物内嵌 war 包用户端微信小程序uniapp 语法编译产物原生 wx.request 调用后端 REST 接口构建Maven 3.9 JDK 8编译开启 -g 保留参数名调试信息后端按controller / service / dao / entity四层组织接口统一返回code / msg / data结构。管理端 Vue 应用构建后放在webapp/admin/dist与后端同源部署避免了跨域配置小程序端则通过配置的后端地址直接访问 REST 接口。登录鉴权采用服务端签发 token、请求头携带校验的方式公开接口菜品列表、桌台查询等通过注解放行未登录也可浏览。值得说明的是参数名调试信息的处理SpringMVC 的分页查询接口依赖方法参数名完成参数绑定命令行编译时若不保留调试信息全站分页查询会报参数缺失错误。所以在编译配置里显式加入-g这也是老工程迁移构建时容易被忽略的一处。三、功能设计系统按角色拆成「顾客端小程序」和「店员管理后台」两部分。顾客端微信小程序底部导航为首页、菜品、购物车、预订、我的五个入口首页轮播展示餐厅公告与活动横幅菜品页按「招牌凉菜、精品热菜、滋补汤羹、主食点心、酒水饮品、宴席套系」六个分类浏览菜品支持口味筛选与菜品评论点菜篮支持多菜品合并结算提交后形成预点单可选现金或储值余额两种支付方式预订页是在线订座的核心入口依次选择用餐日期只能选当天及以后、用餐时段午市 11:00-14:00 / 晚市 17:00-21:00、预订类型散台预订 / 包间预订 / 宴席预订单、具体桌台与人数填写预订人与联系电话后提交系统按「业务前缀日期随机码」规则生成预订单号「我的预订」按联系电话拉取本人预订单展示待确认、已确认、已到店、已完成、已取消五种状态的进度顾客可直观看到预订推进到了哪一步。预订状态机是整个预订链路的骨架预订单由顾客提交后进入「待确认」店员核对档期后置为「已确认」顾客到店落座记「已到店」用餐结束收「已完成」任一环节顾客改期或取消则记「已取消」。状态只允许沿固定方向流转配合后台的修改与删除权限保证任何一条预订单都可以追溯到最初的提交记录。店员管理后台按角色展示菜单管理员具备全部能力桌台管理维护桌台编号、名称、所属区域散台区/包间/宴会厅、容纳人数与实时状态空闲/已预订/使用中每张桌台配展示图堂食预订管理查看全部预订单执行确认、修改、取消宴席预订单的备注会记录布置要求作为宴会策划的依据预点单管理按状态区分未支付、已支付、已完成、已取消、已退款五类已支付订单支持「核销」操作对应到店确认用餐的业务动作菜品与分类管理维护菜品档案、价格、口味偏好与图文介绍会员管理维护会员档案与储值余额支持储值礼遇的运营动作系统管理轮播图、系统公告与餐厅简介维护意见反馈模块承接预订咨询店员逐条回复。四、数据库设计数据库restaurant_booking共 15 张表围绕「桌台—预订单—菜品—预点单」四条主线展开表说明关键字段zhuotai餐桌桌台桌台编号、名称、区域、容纳人数、状态yuding堂食预订单预订单号、预订桌台、用餐日期、时段、人数、预订类型、联系人、状态caipin / caipinfenlei菜品与分类编号、名称、口味、价格、图文orders预点单订单号、菜品、数量、金额、状态、就餐桌位、出餐状态cart点菜篮会员、菜品、数量、单价xuesheng会员档案会员账号、姓名、手机、储值余额users管理员账号用户名、密码、角色discusscaipin / storeup菜品评论 / 收藏关联菜品、内容、回复messages / news / guanyuwomen咨询留言 / 公告 / 餐厅简介内容与回复config / token轮播图配置 / 登录令牌键值 / 令牌与过期时间设计上有三个要点。其一预订单表把「用餐日期」与「用餐时段」拆成两个字段便于按周检索档期也方便后续做同期对比预订类型字段将散台、包间与宴席统一到一张表避免为宴席单独建表带来的状态同步问题。其二预点单表在保留金额字段的同时增设「就餐桌位」与「出餐状态」字段使同一套订单链路贴合堂食语义店员在后台可以直接按桌位出餐。其三桌台表与预订单表通过桌台名称弱关联而非外键强约束桌台档案调整如包间改名不会破坏历史预订单的可读性这在业务台账类系统里是经过验证的稳妥做法。五、系统演示以下截图均为真实运行数据。后台登录页采用青柠鲜绿渐变底与柠光环纹的品牌化设计登录后进入管理端首页顶部横向菜单按业务域分组桌台管理维护散台区、包间、宴会厅三类桌台列表实时反映桌台状态新增桌台表单包含区域选择、容纳人数与桌台图片上传堂食预订管理是系统的核心页面预订单覆盖散台、包间与宴席三类状态列区分待确认、已确认、已取消与已完成打开一条已确认的预订单详情可核对用餐日期、时段、人数与备注中的布置要求菜品管理维护十四道菜品档案含价格与图文介绍已支付预点单支持核销操作出餐状态列区分备餐中与已出餐会员管理维护会员档案与储值余额系统公告用于发布营业时间调整、储值礼遇与宴席服务升级等运营信息六、小结这个项目把「订座—预点菜—宴席预订单」三条堂食业务线收拢到一个平台里小程序端降低了顾客提交预订的门槛管理端让桌台档期与预订单状态一目了然。实现层面SSM 后端以 15 张表支撑了完整的业务闭环预订单表「一类多态」的设计让宴席与普通订座共用一条确认链路预点单的就餐桌位与出餐状态字段则完成了订单语义向堂食场景的转换。对同样想做餐饮到店场景的同学来说值得优先想清楚的不是界面长什么样而是预订状态机如何流转、桌台档期如何表达这两个问题——把这两件事定下来剩下的表结构与接口设计都会顺理成章。如果在实现类似系统时遇到问题欢迎评论区交流。餐厅堂食预订与点餐平台源码 SSM微信小程序毕业设计/课程设计
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进