欢迎光临
我们一直在努力

“苍穹外卖“项目跟练

苍穹外卖 – 项目概要

"苍穹外卖"项目跟练,包含管理端(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

赞(0)
未经允许不得转载:171主机测评 » “苍穹外卖“项目跟练
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址