基于 uni-app 和微信云开发的餐饮点餐小程序,包含用户点餐、购物车、订单、支付、评价、后台菜品管理、AI 菜品推荐和 AI 营养师功能。
- 首页菜品展示,支持分类筛选和搜索。
- AI 菜品推荐,从已上架菜品中随机推荐,支持“换一批”。
- 推荐菜品展示名称、图片、描述和价格。
- 推荐页点击“加入购物车”后继续停留在推荐页,可多菜品一起结算。
- AI 营养师支持输入身高、体重、年龄,按 BMI 模拟推荐适合菜品并给出推荐理由。
- 购物车支持数量增减、删除菜品、提交订单。
- 订单页支持查看订单状态,并对待支付订单继续支付。
- 支持订单评价。
- 菜品新增、编辑、删除、上下架。
- 订单管理。
- 评价管理。
- 使用微信支付统一下单。
- 支付密钥通过云函数环境变量或本地忽略文件配置。
- 支付回调云函数用于更新支付状态。
底部导航栏新增 AI推荐 页面:
- 页面路径:
pages/recommend/recommend - 推荐逻辑:
utils/recommendation.js - 页面会调用菜品云函数获取已上架菜品,再随机展示 3 个推荐菜品。
- 点击“换一批”会重新随机推荐。
- 点击“加入购物车”只加入购物车,不会立即跳转支付。
- 用户可在购物车页统一点击结算,一次性提交和支付多个菜品。
相关测试:
node tests/recommendation.test.js
node tests/recommend-page.test.jsAI 营养师入口放在 AI推荐 页顶部,不占用底部导航栏。
- 页面路径:
pages/nutritionist/nutritionist - 推荐逻辑:
utils/nutritionist.js - 用户输入身高、体重和年龄后,系统计算 BMI 并生成模拟营养建议。
- BMI 偏低时优先推荐高蛋白、能量更足的菜品。
- BMI 正常时推荐均衡搭配。
- BMI 偏高时优先推荐清淡、控油、少主食的菜品。
- 推荐结果包含菜品价格和推荐理由。
- 点击“加入购物车”只加入购物车,用户可到购物车统一结算。
相关测试:
node tests/nutritionist.test.js
node tests/nutritionist-page.test.js- uni-app
- Vue.js
- 微信小程序
- 微信云开发
- 云函数:
dish、order、user、review、payCallback
pages/
index/ 首页点餐
recommend/ AI 菜品推荐
nutritionist/ AI 营养师
cart/ 购物车与结算
order/ 订单列表和订单详情
mine/ 我的页面
admin/ 管理端页面
review/ 评价页面
utils/
api.js 云函数 API 封装
storage.js 本地缓存封装
payment.js 支付调用封装
recommendation.js AI 推荐和加入购物车逻辑
nutritionist.js AI 营养师推荐规则
cloudfunctions/
dish/ 菜品云函数
order/ 订单和统一下单云函数
payCallback/ 微信支付回调云函数
user/ 用户云函数
review/ 评价云函数
tests/
recommendation.test.js
recommend-page.test.js
nutritionist.test.js
nutritionist-page.test.js
payment.test.js
payment-error.test.js
pay-config.test.js
pay-sign.test.js
order-doc.test.js
- 用 HBuilderX 打开项目根目录。
- 确认
manifest.json和微信开发者工具 AppID 配置正确。 - 选择“运行到小程序模拟器 -> 微信开发者工具”。
- 在微信开发者工具中确认云开发环境和云函数已部署。
如果本机已安装 uni CLI,可以运行:
npm run build:mp-weixin如果提示 'uni' is not recognized,说明本机未安装 uni-app CLI。可以继续使用 HBuilderX 运行。
云函数 order 和 payCallback 需要配置微信支付参数:
WECHAT_PAY_APPIDWECHAT_PAY_MCH_IDWECHAT_PAY_API_KEY
建议在云函数控制台配置环境变量,不要把真实密钥提交到仓库。
可单独运行当前已有测试:
node tests/recommendation.test.js
node tests/recommend-page.test.js
node tests/nutritionist.test.js
node tests/nutritionist-page.test.js
node tests/payment.test.js
node tests/payment-error.test.js
node tests/pay-config.test.js
node tests/pay-sign.test.js
node tests/order-doc.test.js- 当前 AI 推荐是基于已上架菜品的随机推荐,不依赖外部 AI 接口。
- 当前 AI 营养师是基于 BMI 和菜品名称、分类、描述的模拟规则推荐,不依赖外部 AI 接口,也不能替代医学或营养诊断。
- 购物车数据存储在本地缓存中,提交订单后会清空购物车。
- 支付功能需要商户号、AppID 绑定和 JSAPI 支付权限配置正确。
cloudfunctions/**/config.secret.js属于本地密钥文件,不应提交到 GitHub。
MIT