苍穹外卖 – 项目概要
"苍穹外卖"项目跟练,包含管理端(Web)与用户端(微信小程序)。
一、功能架构
1.1 管理端(Web 后台)
| 员工管理 | 管理员对员工账号的增删改查、启用/禁用、角色分配 |
| 分类管理 | 菜品分类与套餐分类的维护(增删改查、排序、启用/禁用) |
| 菜品管理 | 菜品的新增、编辑、删除、上下架,支持多规格(口味)配置及图片上传 |
| 套餐管理 | 套餐组合的新增、编辑、删除、上下架,关联多个菜品,支持图片上传 |
| 订单管理 | 查看所有订单,支持按状态筛选、订单详情查看、接单/拒单/配送/完成等操作 |
| 工作台 | 管理端首页概览,展示今日运营数据(订单数、营业额等关键指标) |
| 数据统计 | 通过 ECharts 可视化展示营业额、订单量、用户增长等运营报表(日/周/月维度) |
| 来单提醒 | 新订单产生时,通过 WebSocket 实时推送弹窗/语音提醒,让管理员及时处理 |
1.2 用户端(微信小程序)
| 微信登录 | 通过微信授权一键登录,获取用户 openid,自动完成注册/登录 |
| 商品浏览 | 按分类浏览菜品与套餐,查看详情、规格、价格、图片等信息 |
| 购物车 | 添加/删除商品、修改数量、清空购物车,数据持久化到 Redis |
| 用户下单 | 提交订单(选择地址、支付方式),生成订单记录 |
| 微信支付 | 对接微信支付 API,完成在线支付流程 |
| 历史订单 | 查看历史订单列表及详情,支持按状态筛选(待付款/待接单/配送中/已完成/已取消) |
| 地址管理 | 收货地址的增删改查,支持设为默认地址 |
| 用户催单 | 通过 WebSocket 向管理端发送催单提醒 |
二、技术选型
整体采用前后端分离架构,分层如下:
┌──────────────────────────────────────────────────────┐
│ 用户层 │
│ 管理端: Vue3 + Element Plus + ECharts + Node.js │
│ 用户端: 微信小程序 (原生) │
│ 静态资源: Apache │
├──────────────────────────────────────────────────────┤
│ 网关层 │
│ Nginx (反向代理、负载均衡、动静分离) │
├──────────────────────────────────────────────────────┤
│ 应用层 │
│ Spring Boot 3.x 主力框架 │
│ Spring MVC Web 层 │
│ Spring Task 定时任务(订单超时等) │
│ Spring Cache 本地缓存 │
│ Spring Data Redis Redis 操作 │
│ HttpClient 远程调用(微信API等) │
│ JWT 无状态认证 │
│ 阿里云 OSS 对象存储(图片上传) │
│ Swagger / Knife4j API 文档 │
│ Apache POI Excel 导入导出 │
│ WebSocket 实时推送(来单/催单提醒) │
├──────────────────────────────────────────────────────┤
│ 数据层 │
│ MySQL 关系型数据库 │
│ Redis 缓存 & 会话共享 │
│ MyBatis-Plus ORM 持久层框架 │
│ PageHelper 物理分页插件 │
│ Spring Data Redis Redis 模板操作 │
└──────────────────────────────────────────────────────┘
各层技术细化
| 用户层 | Vue 3 + Element Plus + ECharts + Node.js | 管理端 SPA 前端,Node.js 提供开发/构建环境 |
| 微信小程序 | 用户端(C端),原生开发 | |
| Apache | 静态资源托管(前端打包产物) | |
| 网关层 | Nginx | 反向代理、负载均衡、动静分离(前端静态资源由 Nginx 直接返回,API 请求转发到 Spring Boot) |
| 应用层 | Spring Boot 3.x | 项目骨架,自动配置 & 起步依赖 |
| Spring MVC | RESTful API | |
| Spring Task | @Scheduled 定时任务(如15分钟未支付自动取消订单) | |
| Spring Cache | @Cacheable / @CacheEvict 注解式缓存 | |
| Spring Data Redis | 简化 Redis 操作 | |
| HttpClient | 调用微信登录/支付、地图等第三方 API | |
| JWT | 生成 Token,请求头携带,无状态用户认证 | |
| 阿里云 OSS | 菜品/套餐图片上传云端存储 | |
| Swagger / Knife4j | 自动生成接口文档 & 在线调试 | |
| Apache POI | 运营报表导出 Excel | |
| WebSocket | 双向实时通信(来单提醒 / 客户催单) | |
| 数据层 | MySQL 8.0 | 持久化存储(用户、菜品、订单等核心数据) |
| Redis | 缓存热点数据(分类/菜品列表)、购物车数据、Session共享 | |
| MyBatis-Plus | 简化 CRUD,条件构造器、分页插件 | |
| PageHelper | 传统分页方式(与 MyBatis-Plus 分页互补) |
三、功能模块详解
3.1 管理端模块
1. 员工管理
- 员工列表分页查询(支持姓名/账号模糊搜索)
- 新增员工(自动生成随机密码)
- 编辑员工信息
- 启用/禁用员工账号
- 员工登录(JWT 认证)
2. 分类管理
- 菜品分类 / 套餐分类 CRUD
- 分类排序
- 启用/禁用分类
- 关联菜品/套餐数量显示
3. 菜品管理
- 菜品分页查询(按分类筛选、名称搜索)
- 新增菜品:基本信息 + 口味规格 + 图片上传(OSS)
- 编辑菜品
- 菜品上架/下架
- 批量删除
4. 套餐管理
- 套餐分页查询
- 新增套餐:选择关联菜品 + 设置价格 + 图片上传
- 编辑套餐
- 套餐上架/下架
5. 订单管理
- 订单列表(按状态/日期/订单号搜索)
- 订单详情(商品明细、金额、地址)
- 订单操作:接单、拒单、派送、完成
- 取消订单(退款处理)
6. 工作台
- 今日概览:营业额、有效订单数、订单完成率、平均客单价
- 今日订单趋势曲线
- 热门菜品 TOP10
- 订单实时状态面板
7. 数据统计
- 营业额统计(ECharts 折线图 / 柱状图)
- 用户统计(新增用户数趋势)
- 订单统计(各状态订单数量)
- 销量排名 TOP10(菜品/套餐维度)
- 支持日/周/月维度切换
8. 来单提醒
- 用户支付成功后 WebSocket 推送新订单通知
- 弹窗 + 语音播报提醒
- 显示订单简要信息(订单号、金额、下单时间)
3.2 用户端模块
1. 微信登录
- 调用 wx.login() 获取 code
- 后端通过 code 换取 openid 和 session_key
- 自动注册(首次)或登录(老用户)
- 返回 JWT Token
2. 商品浏览
- 左侧分类导航 + 右侧商品列表
- 商品详情页:图片轮播、描述、规格选择
- 支持按分类筛选
3. 购物车
- 加购 / 减购 / 删除 / 清空
- 购物车数据存储在 Redis,用户维度隔离
- 实时计算总金额
4. 用户下单
- 从购物车生成订单
- 选择收货地址
- 填写备注
- 生成订单 → 减库存 → 清空购物车
5. 微信支付
- 后端调用微信统一下单接口生成预支付信息
- 小程序发起支付
- 支付回调通知(更新订单状态)
- 支付超时自动取消(Spring Task 定时任务)
6. 历史订单
- 订单列表分页展示
- 按状态 Tab 切换:全部 / 待付款 / 待接单 / 配送中 / 已完成 / 已取消
- 订单详情查看
7. 地址管理
- 收货地址列表
- 新增/编辑/删除地址
- 设置默认地址
- 最多 20 个收货地址
8. 用户催单
- 订单详情页面点击"催单"
- WebSocket 推送催单消息到管理端
- 管理端弹窗提醒
四、项目结构(建议目录)
sky-takeout/
├── sky-server/ # 后端 Spring Boot 主工程
│ ├── src/main/java/com/sky/
│ │ ├── controller/ # 控制器(admin/ user 两个子包)
│ │ ├── service/ # 业务逻辑层
│ │ ├── mapper/ # MyBatis 接口
│ │ ├── entity/ # 实体类
│ │ ├── dto/ # 数据传输对象
│ │ ├── vo/ # 视图对象
│ │ ├── config/ # 配置类(Swagger、OSS、WebSocket 等)
│ │ ├── interceptor/ # JWT 拦截器
│ │ ├── task/ # Spring Task 定时任务
│ │ ├── websocket/ # WebSocket 处理器
│ │ └── utils/ # 工具类
│ └── src/main/resources/
│ └── application.yml
├── sky-admin/ # 管理端前端(Vue3)
│ └── src/
│ ├── views/ # 页面视图
│ ├── api/ # 接口请求
│ ├── router/ # 路由配置
│ └── utils/ # 工具函数
└── sky-miniapp/ # 用户端(微信小程序)
└── pages/ # 小程序页面
五、核心表设计(概要)
| employee | 员工表(管理端账号) |
| category | 分类表(菜品分类 & 套餐分类) |
| dish | 菜品表 |
| dish_flavor | 菜品口味表(多规格) |
| setmeal | 套餐表 |
| setmeal_dish | 套餐-菜品关联表 |
| user | C端用户表(微信用户) |
| address_book | 收货地址表 |
| shopping_cart | 购物车(Redis 存储,表结构备选) |
| orders | 订单表 |
| order_detail | 订单详情表 |
文档整理时间:2026-05-26




