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

一、系统简介

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

二、功能简介

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),实现动态扩缩容与自动化运维

### 苍穹外卖系统功能需求说明 #### 登录/退出 内部员工必须登录后才能访问系统管理后台。这确保了只有授权人员能够操作管理系统,保障了数据的安全性和隐私性[^2]。 #### 员工管理 管理员可以在系统后台对员工信息进行全面管理,包括但不限于查询、新增、编辑和禁用等功能。这些功能使得管理人员能高效地管理和调配人力资源,提高工作效率。 #### 分类管理 该模块主要用于维护当前餐厅经营的菜品分类或套餐分类的信息。支持的操作有查询、新增、修改和删除等,帮助商家更好地组织商品结构,优化顾客体验。 #### 菜品管理 此部分负责各分类下具体菜品信息的维护工作,涉及的功能同样涵盖了查询、新增、修改、删除以及启售和停售选项。通过精细化的商品管理,可以及时调整供应策略,满足市场需求变化。 #### 套餐管理 针对餐厅内提供的套餐产品进行同样的增删改查及上下架控制。这一机制有助于推广特色组合优惠活动,吸引更多消费者尝试多样化的美食搭配方案。 #### 订单管理 用于处理来自移动端客户的订单详情记录,如查询状态、执行取消请求、安排派送任务直至最终确认完成交易过程;还提供了订单报表下载服务以便于后续分析评估销售业绩表现情况。 #### 数据统计 旨在汇总并展示有关店铺运营的各项关键指标统计数据,比如每日总销售额度、累计注册会员数目的增长趋势图谱或是特定时间段内的热门单品排行榜单等内容,为企业决策层制定营销计划提供有力的数据支撑依据。 ```java // 示例代码片段:简单的订单创建逻辑(伪代码) public class OrderService { public void createOrder(Order order) throws Exception { try { // 插入订单基本信息到数据库 insertIntoOrders(order); // 插入订单明细项至子表 List<OrderDetail> details = order.getDetails(); for (OrderDetail detail : details) { insertIntoOrderDetails(detail); } } catch (Exception e) { throw new RuntimeException("订单创建失败", e); } } private void insertIntoOrders(Order order) { /* ... */ } private void insertIntoOrderDetails(OrderDetail detail) { /* ... */ } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值