苍穹外卖系统结构与功能报告

发布于:2025-05-21 ⋅ 阅读:(16) ⋅ 点赞:(0)

一、系统简介

苍穹外卖系统是为餐饮企业定制的数字化解决方案,包含管理端后台用户端小程序两部分。管理端面向餐饮企业员工,支持菜品、套餐、订单等核心业务的数字化管理;用户端面向消费者,提供在线点餐、支付、订单跟踪等功能。系统旨在通过前后端分离架构与主流技术栈,实现餐饮业务的高效运营与用户体验升级。

二、功能简介

2.1 管理端功能

  • 员工管理:支持员工账号的创建、编辑、禁用及权限分配,保障系统操作安全。
  • 分类管理:维护菜品分类与套餐分类,支持分类的新增、修改、删除及状态切换。
  • 菜品 / 套餐管理:对菜品和套餐进行全生命周期管理,包括信息录入、图片上传、价格调整、启售 / 停售控制等。
  • 订单管理:处理用户订单(查询、取消、派送、完成),支持订单报表下载与数据分析。
  • 数据统计:提供营业额、用户增长、订单趋势等多维度数据报表,辅助经营决策。
  • 来单提醒:通过 WebSocket 实现新订单语音播报,提升接单效率。

2.2 用户端功能

  • 微信登录:通过微信授权快速登录,简化用户操作流程。
  • 菜品浏览:按分类展示菜品及套餐,支持规格查询、收藏与加入购物车。
  • 购物车管理:实现菜品添加、数量调整、删除及一键清空,支持多规格组合下单。
  • 订单支付:集成在线支付功能,支持订单结算、支付状态查询及退款申请。
  • 个人中心:管理收货地址、查看历史订单、修改个人信息及账号安全设置。

三、技术栈与系统结构

3.1 技术栈

技术分类 技术名称 版本 / 说明
前端框架 Vue.js + ElementUI 管理端采用 Vue.js 构建单页应用,ElementUI 提供组件库,实现响应式布局与交互逻辑。
小程序开发 微信小程序 用户端基于微信原生框架开发,支持跨平台部署与社交分享功能。
后端框架 Spring Boot 2.7.x,快速构建后端服务,集成 Spring MVC、MyBatis 等模块,实现 “约定优于配置”。
网关层 Nginx 1.20.x,作为反向代理服务器,实现请求转发、负载均衡(轮询策略)及静态资源部署。
数据库 MySQL 8.0,存储核心业务数据(员工、菜品、订单等 11 张表),支持事务与复杂查询。
缓存 Redis 6.2,存储高频访问数据(如用户会话、热销菜品),提升系统响应速度。
中间件 Apache HttpClient 发起 HTTP 请求,实现与第三方服务(如支付接口)的通信。
工具链 Git + Maven + Swagger Git 用于版本控制,Maven 管理依赖与构建,Swagger(Knife4j)自动生成接口文档并支持在线测试。

3.2 系统结构

分层架构设计:
  1. 用户层
    • 管理端:基于 Vue.js 的 Web 界面,通过 Nginx 部署静态资源。
    • 用户端:微信小程序,通过微信开发者工具编译发布。
  2. 网关层
    • Nginx 监听 80 端口,通过反向代理将前端请求(如/api/employee/login)转发至后端服务(http://localhost:8080/admin/employee/login)。
    • 支持负载均衡配置,当后端服务器集群部署时,按轮询策略分配请求。
  3. 应用层
    • Controller 层:处理前端请求,调用 Service 层逻辑,返回数据格式(如Result<EmployeeLoginVO>)。
    • Service 层:实现业务逻辑(如员工登录校验、订单状态更新),调用 Mapper 层操作数据库。
    • 工具类:封装 JWT 令牌生成(用于身份验证)、MD5 加密(密码安全处理)、Excel 导出(POI 工具)等通用功能。
  4. 数据层
    • MySQL:存储关系型数据,通过 MyBatis 实现 ORM 映射(如EmployeeMapper接口查询员工信息)。
    • Redis:存储非关系型数据(如购物车临时数据、缓存菜单列表),通过spring-data-redis简化操作。

四、数据库 & ER 图

4.1 数据库设计

4.1.1 数据库概述
  • 数据库名称sky_take_out
  • 设计工具:MySQL Workbench
  • 核心功能:存储餐饮业务全流程数据,包括员工管理、菜品维护、订单处理、用户信息等。
4.1.2 表结构详情(11 张表)
序号 表名 中文名 核心字段及说明
1 employee 员工表 id(主键,自增)、username(唯一用户名,用于登录)、password(MD5 加密密码)、name(姓名)、status(状态:1 - 启用,0 - 禁用)
2 category 分类表 id(主键)、name(分类名称,如 “热菜”“套餐”)、type(类型:1 - 菜品分类,2 - 套餐分类)、sort(排序优先级)
3 dish 菜品表 id(主键)、name(菜品名称)、category_id(所属分类 ID,关联category.id)、price(单价,精确到分)、status(状态:1 - 启售,0 - 停售)、image(菜品图片路径)
4 dish_flavor 菜品口味表 id(主键)、dish_id(关联菜品 ID,dish.id)、name(口味名称,如 “微辣”“多糖”)、value(口味值,用于前端展示)
5 setmeal 套餐表 id(主键)、name(套餐名称)、category_id(所属分类 ID,关联category.id)、price(套餐总价)、status(状态:1 - 启售,0 - 停售)、image(套餐图片路径)
6 setmeal_dish 套餐菜品关系表 id(主键)、setmeal_id(套餐 ID,关联setmeal.id)、dish_id(菜品 ID,关联dish.id)、number(菜品数量)
7 user 用户表 id(主键)、openid(微信用户唯一标识)、name(用户姓名)、phone(手机号)、address(默认收货地址)、create_time(注册时间)
8 address_book 地址表 id(主键)、user_id(用户 ID,关联user.id)、consignee(收货人)、phone(联系电话)、detail(详细地址)、is_default(是否为默认地址:1 - 是,0 - 否)
9 shopping_cart 购物车表 id(主键)、user_id(用户 ID,关联user.id)、dish_id(菜品 ID,关联dish.id)、setmeal_id(套餐 ID,关联setmeal.id)、number(数量)、create_time(添加时间)
10 orders 订单表 id(主键)、user_id(用户 ID,关联user.id)、employee_id(处理订单的员工 ID,关联employee.id)、status(订单状态:1 - 待付款,2 - 待接单,3 - 已接单,4 - 派送中,5 - 已完成,6 - 已取消)、amount(订单总额)、order_time(下单时间)、checkout_time(支付时间)
11 order_detail 订单明细表 id(主键)、order_id(订单 ID,关联orders.id)、dish_id(菜品 ID,关联dish.id)、setmeal_id(套餐 ID,关联setmeal.id)、name(商品名称,菜品或套餐名)、number(数量)、amount(单品金额)

4.2 ER 图(实体关系图)

4.2.1 核心实体关系

4.2.2 关系说明
  1. 员工与订单
    • 一对多(1:M):一个员工可处理多个订单,订单通过employee_id关联到处理人。
  2. 分类与菜品 / 套餐
    • 一对多(1:M):一个分类下可包含多个菜品或套餐,菜品 / 套餐通过category_id关联分类。
  3. 菜品与口味
    • 一对多(1:M):一个菜品可拥有多种口味(如 “甜度”“辣度”),口味通过dish_id关联菜品。
  4. 套餐与菜品
    • 多对多(M:N):一个套餐由多个菜品组成,一个菜品可属于多个套餐,通过setmeal_dish中间表记录数量关系。
  5. 用户与地址 / 购物车 / 订单
    • 一对多(1:M):一个用户可维护多个地址、多个购物车记录及多个订单,通过user_id关联。
  6. 订单与订单明细
    • 一对多(1:M):一个订单包含多条明细(每个菜品或套餐为一条记录),通过order_id关联。

五、页面功能截图(示例)

六、后期系统优化计划

  1. 性能优化
    • 对高频查询接口(如菜品列表、用户订单)增加 Redis 缓存,降低数据库压力。
    • 优化 MySQL 索引(如为dish.category_idorders.user_id添加索引),提升查询效率。
  2. 功能扩展
    • 新增库存预警功能:当菜品库存低于阈值时,管理端自动触发提醒(短信 / 站内信)。
    • 开发骑手端小程序:支持骑手接单、配送轨迹实时更新,完善订单全流程闭环。
  3. 安全性增强
    • 引入OAuth2.0替代 JWT,实现更细粒度的权限控制(如按角色分配菜单权限)。
    • 定期进行代码审计与安全漏洞扫描,对敏感数据(如用户支付信息)进行加密存储。
  4. 技术升级
    • 将后端框架升级至 Spring Boot 3.x,兼容 Java 17,提升系统稳定性与新特性支持。

    • 迁移至容器化部署(Docker + Kubernetes),实现动态扩缩容与自动化运维


网站公告

今日签到

点亮在社区的每一天
去签到