当前位置: 首页 > news >正文

微信点餐小程序

1. 系统概述
1.1 产品定位

基于微信生态的轻量化餐饮点餐工具,通过"扫桌码即点餐"的模式,替代传统纸质菜单和人工点单,提升门店运营效率,降低人力成本,沉淀用户数据。

1.2 核心目标

- **效率提升**:单桌点餐到下单时间缩短至2分钟内

- **成本降低**:减少每店至少1名点单服务员

- **体验优化**:避免漏单、错单,支持菜品图片直观展示

- **数据沉淀**:获取用户消费数据,为精准营销提供依据

1.3 使用场景

| 场景 | 流程 |

|------|------|

| 堂食 | 入座 → 扫码 → 授权登录 → 浏览菜单 → 加购 → 支付 → 等候上菜 |

| 自提 | 扫码/搜一搜 → 切换自提模式 → 选规格下单 → 到店取餐 |

| 外卖(可选) | LBS定位 → 选择门店 → 下单 → 同城配送 |

2. 架构设计

2.1 整体架构

```

┌─────────────────────────────────────────────────────────────────┐

│ 微信小程序前端 (C端) │

│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │

│ │ 首页/菜单 │ │ 购物车 │ │ 订单管理 │ │

│ │ 扫码点餐 │ │ 结算支付 │ │ 个人中心 │ │

│ └──────────────┘ └──────────────┘ └──────────────┘ │

└──────────────────────┬──────────────────────────────────────────┘

│ HTTPS

┌─────────────────────────────────────────────────────────────────┐

│ 后端服务层 │

│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │

│ │ API网关 │ │ 业务逻辑 │ │ 数据访问 │ │

│ │ FastAPI │ │ Service │ │ SQLAlchemy│ │

│ └──────────────┘ └──────────────┘ └──────────────┘ │

└──────────────────────┬──────────────────────────────────────────┘

│ SQLite/MySQL

┌─────────────────────────────────────────────────────────────────┐

│ 数据存储层 │

│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │

│ │ 菜品数据 │ │ 订单数据 │ │ 用户数据 │ │

│ │ 分类数据 │ │ 桌台数据 │ │ 优惠券 │ │

│ └──────────────┘ └──────────────┘ └──────────────┘ │

└─────────────────────────────────────────────────────────────────┘

```

2.2 技术选型

| 分类 | 技术 | 版本 | 说明 |

|------|------|------|------|

| 语言 | Python | 3.11+ | 后端开发语言 |

| 框架 | FastAPI | 0.100+ | 异步Web框架,高性能 |

| ORM | SQLAlchemy | 2.0+ | 数据库ORM框架 |

| 数据库 | SQLite | 3.40+ | 轻量级嵌入式数据库 |

| 前端 | 微信小程序 | - | 微信生态前端 |

| 认证 | 微信OAuth2 | - | 用户身份认证 |

| 支付 | 微信支付 | - | 订单支付 |

2.3 关键设计

2.3.1 模块划分

| 模块 | 职责 | 状态 |

|------|------|------|

| **menu** | 菜品分类、菜品管理、菜单展示 | ✅ |

| **cart** | 购物车管理、商品加减、库存检查 | ✅ |

| **orders** | 订单创建、支付、状态流转 | ✅ |

| **tables** | 桌台管理、二维码生成、状态管理 | ✅ |

| **admin** | 商家后台、统计数据、订单管理 | ✅ |

| **members** | 会员管理、积分、优惠券 | ✅ |

2.3.2 核心流程图

```mermaid

sequenceDiagram

participant User as 用户

participant App as 微信小程序

participant API as 后端API

participant DB as 数据库

User->>App: 扫描桌码

App->>API: GET /tables/qr-code/{table_no}

API->>DB: 查询桌台信息

DB-->>API: 返回桌台数据

API-->>App: 返回桌台信息

User->>App: 浏览菜单

App->>API: GET /menu/dishes

API->>DB: 查询菜品列表

DB-->>API: 返回菜品数据

API-->>App: 返回菜品列表

User->>App: 选择菜品加入购物车

App->>API: POST /cart

API->>DB: 创建购物车项

DB-->>API: 保存成功

API-->>App: 返回购物车项

User->>App: 点击结算

App->>API: POST /orders

API->>DB: 创建订单,扣减库存

DB-->>API: 保存成功

API-->>App: 返回订单信息

User->>App: 确认支付

App->>API: PUT /orders/{id}/pay

API->>DB: 更新订单状态

DB-->>API: 更新成功

API-->>App: 返回支付结果

```

3. 数据库设计
3.1 实体关系图

```mermaid

erDiagram

CATEGORIES ||--o{ DISHES : contains

DISHES ||--o{ DISH_SPECIFICATIONS : has

DISHES ||--o{ CART_ITEMS : in

DISHES ||--o{ ORDER_ITEMS : in

TABLES ||--o{ ORDERS : places

ORDERS ||--|{ ORDER_ITEMS : contains

COUPONS ||--o{ USER_COUPONS : issued_to

MEMBERS ||--o{ USER_COUPONS : owns

MEMBERS ||--o{ ORDERS : places

```

3.2 核心表结构

3.2.1 dishes(菜品表)

| 字段名 | 类型 | 约束 | 说明 |

|--------|------|------|------|

| id | INTEGER | PRIMARY KEY | 主键 |

| name | VARCHAR(200) | NOT NULL | 菜品名称 |

| description | TEXT | NULL | 菜品描述 |

| image_url | VARCHAR(500) | NULL | 菜品图片URL |

| original_price | FLOAT | NOT NULL | 原价 |

| price | FLOAT | NOT NULL | 售价 |

| stock | INTEGER | DEFAULT 0 | 库存 |

| monthly_sales | INTEGER | DEFAULT 0 | 月售量 |

| tags | VARCHAR(200) | NULL | 标签 |

| category_id | INTEGER | FOREIGN KEY | 分类ID |

| status | VARCHAR(20) | DEFAULT active | 状态 |

| created_at | DATETIME | DEFAULT now() | 创建时间 |

| updated_at | DATETIME | DEFAULT now() | 更新时间 |

3.2.2 orders(订单表)

| 字段名 | 类型 | 约束 | 说明 |

|--------|------|------|------|

| id | INTEGER | PRIMARY KEY | 主键 |

| order_no | VARCHAR(50) | UNIQUE | 订单号 |

| openid | VARCHAR(100) | NOT NULL | 用户OpenID |

| table_id | INTEGER | FOREIGN KEY | 桌台ID |

| mode | VARCHAR(20) | NOT NULL | 就餐模式 |

| total_amount | FLOAT | NOT NULL | 总金额 |

| discount_amount | FLOAT | DEFAULT 0 | 优惠金额 |

| actual_amount | FLOAT | NOT NULL | 实付金额 |

| status | VARCHAR(20) | DEFAULT pending_payment | 状态 |

| remark | TEXT | NULL | 备注 |

| paid_at | DATETIME | NULL | 支付时间 |

| completed_at | DATETIME | NULL | 完成时间 |

| created_at | DATETIME | DEFAULT now() | 创建时间 |

3.2.3 tables(桌台表)

| 字段名 | 类型 | 约束 | 说明 |

|--------|------|------|------|

| id | INTEGER | PRIMARY KEY | 主键 |

| table_no | VARCHAR(20) | UNIQUE | 桌号 |

| capacity | INTEGER | DEFAULT 2 | 座位数 |

| area | VARCHAR(50) | NULL | 区域 |

| status | VARCHAR(20) | DEFAULT empty | 状态 |

| qr_code_url | VARCHAR(500) | NULL | 二维码URL |

| created_at | DATETIME | DEFAULT now() | 创建时间 |

4. API接口设计

4.1 接口分类

| 模块 | 接口数量 | 说明 |

|------|----------|------|

| menu | 3 | 分类管理、菜品管理 |

| cart | 4 | 购物车增删改查 |

| orders | 4 | 订单CRUD、支付 |

| tables | 6 | 桌台CRUD、状态管理 |

| admin | 6 | 分类、菜品、订单管理 |

4.2 核心接口列表

| API路径 | 方法 | 所属模块 | 说明 |

|---------|------|----------|------|

| `/menu/categories` | GET | menu | 获取分类列表 |

| `/menu/dishes` | GET | menu | 获取菜品列表 |

| `/menu/dishes/{id}` | GET | menu | 获取菜品详情 |

| `/cart` | GET | cart | 获取购物车 |

| `/cart` | POST | cart | 添加到购物车 |

| `/cart/{id}` | PUT | cart | 更新购物车数量 |

| `/orders` | POST | orders | 创建订单 |

| `/orders/{id}` | GET | orders | 获取订单详情 |

| `/orders/{id}/pay` | PUT | orders | 支付订单 |

| `/tables` | POST | tables | 创建桌台 |

| `/tables/{id}/status` | PUT | tables | 更新桌台状态 |

| `/admin/statistics` | GET | admin | 获取统计数据 |

5. 安全性设计
5.1 安全措施

| 措施 | 说明 |

|------|------|

| **参数校验** | 使用Pydantic进行严格的参数校验 |

| **异常处理** | 全局异常处理,统一错误响应格式 |

| **日志记录** | 记录所有请求日志,便于追踪 |

| **库存锁** | 使用数据库事务保证库存一致性 |

| **超时控制** | 订单超时自动取消,释放库存 |

| **CORS配置** | 限制允许的来源域名 |

5.2 订单状态流转

```mermaid

stateDiagram-v2

[*] --> pending_payment : 创建订单

pending_payment --> accepted : 支付成功

pending_payment --> cancelled : 超时/取消

accepted --> preparing : 商家接单

preparing --> ready : 制作完成

ready --> completed : 用户取餐

completed --> [*]

cancelled --> [*]

```

6. 部署与运维
6.1 依赖环境

| 依赖 | 版本 |

|------|------|

| Python | 3.11+ |

| uvicorn | 0.23+ |

| fastapi | 0.100+ |

| sqlalchemy | 2.0+ |

| pydantic-settings | 2.0+ |

| aiosqlite | 0.19+ |

6.2 启动方式

```bash

# 开发环境

cd backend

python -m uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload

# 生产环境

pip install -r requirements.txt

python -m uvicorn app.main:app --host 0.0.0.0 --port 8000

```

http://www.jsqmd.com/news/717844/

相关文章:

  • Moneta Markets亿汇:比特币触及高位与风险动态
  • EFI Boot Editor(EFI引导编辑器)
  • vLLM-v0.11.0对比评测:为什么说它是LLM推理的“性能王者”?
  • Cancer Research重磅:单细胞测序揭开结直肠癌肝转移免疫耐药“伪装”
  • 2026年1季度|ilab智慧实验室管理软件平台系统排名分析:国内盛元广通上榜,综合lims实验室管理系统性能超前
  • GitHub爆火!国内首个大模型实践教程《Dive into LLMs》,带你从零掌握大模型核心技术
  • OMC - 16 让 Claude 真正“记住你”:oh-my-claudecode 的多层记忆与状态管理实践
  • CustomTkinter打包翻车?手把手教你用PyInstaller正确处理带数据文件的GUI库(附--add-data参数详解)
  • Python自动化脚本跨平台兼容性处理
  • 佛法与物理统一
  • 易元AI核心功能全解析:不只是剪辑,而是一套完整的素材工程系统
  • Hitboxer:解决游戏操作冲突的终极键位映射工具
  • DeepSeek V4大模型:性能顶级,价格亲民,国产芯片加持,让AI门槛大幅降低!
  • AMD Ryzen嵌入式单板计算机PCSF51工业应用解析
  • 流程型制造业生产优化,未来将如何被大模型技术重构?2026智造深研:实在Agent驱动端到端生产闭环
  • gtk与vulkan
  • Gemma-4-26B-A4B-it-GGUF镜像部署教程:免编译、免CUDA手动配置的llama.cpp方案
  • WeDLM-7B-Base多场景:支持LoRA热插拔,动态切换不同领域续写能力
  • SiameseAOE与Transformer架构结合:提升长文本抽取性能实践
  • OMC - 17 深入理解 Oh-My-ClaudeCode 配置系统
  • Mesa 组件,常用命令与调试
  • 2025届毕业生推荐的降AI率方案推荐榜单
  • 2026 年 4 月谷歌算法大变:内容决定 SEO 上限,结构决定 GEO 下限
  • 大模型转行必看:从规划到AI的完整攻略与心路历程分享,或许对你转行大模型有帮助
  • ScreenShare:Android屏幕采集编码架构深度解析
  • DeepSeek-OCR-2与GitHub Actions结合的CI/CD实践
  • openai算力云服务转向多平台
  • Qianfan-OCR实战案例:OCR结果接入LangChain构建企业专属文档RAG系统
  • 大模型开发工程师认证详解:政策背景、能力标准与职业前景全解析
  • STM32F103C8T6 GPIO八种模式实战避坑指南:从按键检测到I2C通信,新手必看