

扫描下方公众号【小锋学AI 】回复:888,
可获取下载链接
👇👇👇
👆长按上方二维码 2 秒 回复「888」即可获取
https://gitee.com/java_1234/diancan

功能特性
顾客端
- 扫码点餐
:扫描桌号小程序码直接进入对应桌号的菜单页 - 热门推荐
:首页轮播展示热门标记菜品 - 分类浏览
:按分类查看菜品,支持数量加减选择 - 提交订单
:下单时可填写备注(口味偏好、忌口等) - 追加点餐
:下单后支持继续加菜 - 历史订单
:查看个人历史订单记录 - 线下支付
:无需在线支付,支持到店结账
管理员端
- 今日统计
:实时查看当日顾客数、订单量、营业额 - 订单管理
:接单、标记完成、取消订单,支持按状态筛选 - 新订单提醒
:实时监听 + 轮询兜底,新订单到达时声音与震动提示 - 分类管理
:菜品分类的增删改操作 - 菜品管理
:菜品的增删改,支持图片上传、热门标记、上下架控制 - 桌号管理
:桌号的增删改,一键生成小程序码 - 用户管理
:查看用户列表,冻结/解冻用户
安全机制
手机号绑定登录,所有业务接口校验 openid 每日请求频率限制,单用户超 100 次/天自动冻结并记录日志 管理员身份独立校验,非管理员无法访问后台功能
技术栈
项目结构
├── miniprogram/ # 小程序前端│ ├── app.js # 应用入口,云环境初始化│ ├── app.json # 页面路由与全局配置│ ├── app.wxss # 全局样式│ ├── pages/ # 页面目录│ │ ├── login/ # 登录页(手机号绑定)│ │ ├── frozen/ # 账号冻结提示页│ │ ├── index/ # 顾客首页(热门菜品)│ │ ├── menu/ # 分类菜单与点餐│ │ ├── order-confirm/ # 订单确认页│ │ ├── order-result/ # 下单结果页│ │ ├── my-orders/ # 我的订单│ │ └── admin/ # 管理员模块│ │ ├── index/ # 今日数据统计│ │ ├── orders/ # 订单管理│ │ ├── categories/ # 分类管理│ │ ├── dishes/ # 菜品列表│ │ ├── dish-edit/ # 菜品编辑│ │ ├── tables/ # 桌号管理│ │ └── users/ # 用户管理│ ├── components/ # 公共组件│ │ └── tab-bar/ # 自定义底部导航栏│ ├── utils/ # 工具模块│ │ ├── auth.js # 登录与权限│ │ ├── adminOrderWatcher.js # 新订单监听器│ │ └── util.js # 通用工具函数│ ├── audio/ # 音频资源(新订单提示音)│ └── images/ # 图片资源│├── cloudfunctions/ # 云函数目录│ └── diancan/ # 主云函数│ ├── index.js # 入口,action 路由分发│ ├── config.json # 权限与超时配置│ ├── package.json # 依赖(wx-server-sdk)│ └── handlers/ # 业务处理模块│ ├── common.js # 公共初始化与工具│ ├── user.js # 用户相关│ ├── category.js # 分类相关│ ├── dish.js # 菜品相关│ ├── table.js # 桌号相关│ ├── order.js # 订单相关│ ├── userManage.js # 用户管理│ └── init.js # 初始化数据│├── project.config.json # 小程序项目配置└── project.private.config.json # 本地私有配置云数据库集合
t_admin | |
t_user | |
t_category | |
t_dish | |
t_table | |
t_order | |
t_request_log |
订单状态流转:0 待处理 → 1 制作中 → 2 已完成 / 3 已取消
云函数接口一览
所有业务通过调用云函数 diancan 的不同 action 实现:
getOpenId | ||
bindPhone | ||
getUserInfo | ||
checkAdmin | ||
getCategories | ||
addCategory | ||
updateCategory | ||
deleteCategory | ||
getDishes | ||
getHotDishes | ||
addDish | ||
updateDish | ||
deleteDish | ||
getTables | ||
addTable | ||
updateTable | ||
deleteTable | ||
genTableQRCode | ||
createOrder | ||
getOrders | ||
getMyOrders | ||
getTableOrders | ||
updateOrderStatus | ||
getTodayStats | ||
getNewOrders | ||
markNotified | ||
getUserList | ||
freezeUser | ||
unfreezeUser | ||
initData | ||
cleanRequestLog |
部署步骤
1. 导入项目
使用 微信开发者工具 导入本项目目录。
2. 开通云开发
在微信开发者工具中点击「云开发」按钮,开通云开发环境并记录环境 ID。
3. 配置云环境
打开 miniprogram/app.js,将 wx.cloud.init 中的 env 替换为你自己的云环境 ID:
wx.cloud.init({env: '你的云环境ID',traceUser: true})4. 部署云函数
在微信开发者工具中,右键点击 cloudfunctions/diancan 目录,选择「上传并部署:云端安装依赖」。
5. 初始化系统
编译并预览小程序,首次进入会跳转到登录页 使用手机号绑定登录 首位用户登录后系统会提示是否初始化为管理员,确认后自动创建数据库集合和示例数据
6. 配置运营数据
进入管理员后台,在「分类管理」中添加菜品分类 在「菜品管理」中添加菜品,上传图片并设置价格 在「桌号管理」中添加桌号并生成小程序码 将小程序码打印并放置在对应餐桌上
7. 新订单提示音(可选)
在 miniprogram/audio/ 目录下放入名为 new-order.mp3 的音频文件,管理员端收到新订单时将自动播放提示音。
注意事项
管理员通过 openid 识别,首位绑定手机号的用户可初始化为管理员 顾客扫描桌号小程序码后自动关联桌号并进入点餐页面 订单采用线下支付方式,不涉及微信支付接口 管理员端需保持小程序处于前台以接收新订单的声音和震动提醒 云函数超时时间配置为 20 秒,如遇超时可在 config.json中调整getOpenId、 bindPhone、checkAdmin、getUserInfo、initData为白名单接口,无需登录即可调用
最近锋哥录制了一些AI编程视频教程

高清视频+源码+领取。
扫描下方公众号【小锋学AI 】回复:888,
可获取下载链接
👇👇👇
👆长按上方二维码 2 秒 回复「888」即可获取
夜雨聆风
