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

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

一、系统简介

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

二、功能简介

2.1 管理端功能

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

2.2 用户端功能

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

三、技术栈与系统结构

3.1 技术栈

技术分类技术名称版本 / 说明
前端框架Vue.js + ElementUI管理端采用 Vue.js 构建单页应用,ElementUI 提供组件库,实现响应式布局与交互逻辑。
小程序开发微信小程序用户端基于微信原生框架开发,支持跨平台部署与社交分享功能。
后端框架Spring Boot2.7.x,快速构建后端服务,集成 Spring MVC、MyBatis 等模块,实现 “约定优于配置”。
网关层Nginx1.20.x,作为反向代理服务器,实现请求转发、负载均衡(轮询策略)及静态资源部署。
数据库MySQL8.0,存储核心业务数据(员工、菜品、订单等 11 张表),支持事务与复杂查询。
缓存Redis6.2,存储高频访问数据(如用户会话、热销菜品),提升系统响应速度。
中间件Apache HttpClient发起 HTTP 请求,实现与第三方服务(如支付接口)的通信。
工具链Git + Maven + SwaggerGit 用于版本控制,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 张表)
序号表名中文名核心字段及说明
1employee员工表id(主键,自增)、username(唯一用户名,用于登录)、password(MD5 加密密码)、name(姓名)、status(状态:1 - 启用,0 - 禁用)
2category分类表id(主键)、name(分类名称,如 “热菜”“套餐”)、type(类型:1 - 菜品分类,2 - 套餐分类)、sort(排序优先级)
3dish菜品表id(主键)、name(菜品名称)、category_id(所属分类 ID,关联category.id)、price(单价,精确到分)、status(状态:1 - 启售,0 - 停售)、image(菜品图片路径)
4dish_flavor菜品口味表id(主键)、dish_id(关联菜品 ID,dish.id)、name(口味名称,如 “微辣”“多糖”)、value(口味值,用于前端展示)
5setmeal套餐表id(主键)、name(套餐名称)、category_id(所属分类 ID,关联category.id)、price(套餐总价)、status(状态:1 - 启售,0 - 停售)、image(套餐图片路径)
6setmeal_dish套餐菜品关系表id(主键)、setmeal_id(套餐 ID,关联setmeal.id)、dish_id(菜品 ID,关联dish.id)、number(菜品数量)
7user用户表id(主键)、openid(微信用户唯一标识)、name(用户姓名)、phone(手机号)、address(默认收货地址)、create_time(注册时间)
8address_book地址表id(主键)、user_id(用户 ID,关联user.id)、consignee(收货人)、phone(联系电话)、detail(详细地址)、is_default(是否为默认地址:1 - 是,0 - 否)
9shopping_cart购物车表id(主键)、user_id(用户 ID,关联user.id)、dish_id(菜品 ID,关联dish.id)、setmeal_id(套餐 ID,关联setmeal.id)、number(数量)、create_time(添加时间)
10orders订单表id(主键)、user_id(用户 ID,关联user.id)、employee_id(处理订单的员工 ID,关联employee.id)、status(订单状态:1 - 待付款,2 - 待接单,3 - 已接单,4 - 派送中,5 - 已完成,6 - 已取消)、amount(订单总额)、order_time(下单时间)、checkout_time(支付时间)
11order_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),实现动态扩缩容与自动化运维

相关文章:

  • 算法训练之分治(快速排序)
  • 【数据库】-1 mysql 的安装
  • 一、Singal Tap 观察reg信号和wire信号
  • ubuntu14.04/16.06 安装vscode(实测可以用)
  • 注意力机制概念
  • mbed驱动st7789屏幕-硬件选择及连接(1)
  • power BI 倒计时+插件HTML Content,实现更新倒计时看板!
  • Java转Go日记(四十二):错误处理
  • 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十三讲)
  • 文献解读:LigandMPNN
  • CHI中ordering的抽象
  • RAG评估标准
  • 人工智能+:职业价值的重构与技能升级
  • 十分钟聊明白DDD领域驱动设计
  • 安装完dockers后就无法联网了,执行sudo nmcli con up Company-WiFi,一直在加载中
  • java基础-异常
  • CompleteableFuture的异步任务编排
  • MySQL的安装及相关操作
  • MySQL 自启动时报错can‘t create PID file: No such file or directory
  • 基于天猫 API 的高效商品详情页实时数据接入方法解析
  • “除非我去世”,马斯克称仍致力于继续执掌特斯拉
  • 丹泽尔·华盛顿惊喜收获戛纳终身成就奖
  • 特朗普亲家有了新工作:美国驻法大使
  • 国家发改委:系统谋划7方面53项配套举措,推动民营经济促进法落地见效
  • 首付款12.5亿美元!三生制药与辉瑞就国产双抗达成合作协议
  • 广东茂名高州市山体滑坡已致3死1失联,搜救仍在继续