瑞吉外卖(个人记录)

本文为个人学习黑马《瑞吉外卖》项目后进行的项目总结,更偏向于对自己编写文本能力的锻炼以及对项目知识点的简短记录。因为个人能力问题,其中可行性分析和测试部分只进行了小标题的陈列,并没有进行编辑。对《瑞吉外卖》项目感兴趣的朋友也可以浏览本文后再去学习,可以对该项目架构有大体感知,同时黑马《瑞吉外卖》非常适合框架学习阶段的朋友,大力推荐本项目。

个人完成后项目源码上传至gitee,有兴趣者可自行参考。

gitee链接:xiaosong111/reggie-take-out - 码云 - 开源中国 (gitee.com)

一、绪论

1.1 项目背景

随着我国城镇和农村居民生活水平达到富裕和小康层次,消费在国民经济活动中的比重逐步加大,居民的餐饮消费逐渐从一日三餐的刚需升级到感受餐饮文化以及社交的重要方式,近年来我国餐饮业销售收入逐年攀升,2019年中国餐饮收入达4.67万亿元,较2018年增加了0.40万亿元,同比增长9.38%,受新冠肺炎疫情影响,2020年中国餐饮收入大幅下滑,随着国内疫情的有效控制,中国餐饮市场也逐渐复苏,2021年中国餐饮收入完成4.69万亿元,较2020年增加了0.74万亿元,同比增长18.64%。“新冠疫情”改变了人们的就餐习惯,对于病毒的心理障碍,更多人选择外卖的方式来就餐,截止2021年12月末中国网上外卖用户规模达54416万人,较2020年同期增加了12533万人,同比增长29.92%。“新冠疫情”改变了人们的就餐习惯,对于病毒的心理障碍,更多人选择外卖的方式来就餐,截止2021年12月末中国网上外卖用户规模达54416万人,较2020年同期增加了12533万人,同比增长29.92%。

1.2 项目介绍

本项目(瑞吉外卖)是专门为餐厅、饭店定制的一款软件产品,包括系统管理后台和移动端应用两部分。其中系统管理后台主要提供给餐饮内部员工使用,可以对餐厅的菜品、套餐、订单进行管理和维护。移动端应用主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单等。

1.3 项目亮点

1、使用Redis进行缓存

当用户数量较多时,系统访问量大,频繁的访问数据库,数据库压力大,系统的性能下降,用户体验感差。因

此使用Redis对数据进行缓存,从而减小数据库的压力,在数据更新时删除缓存,从而保证数据库和缓存的一致性,同时有效提高系统的性能和访问速度。

2、使用MySQL主从复制,进行读写分离

读和写数据的所有压力全都由一台数据库承担,压力大,数据库服务器磁盘损坏则数据丢失,单点故障。使用

MySQL进行主从复制,主库(master)进行写操作(intsert update delete),从库(salve)进行读操作(se

lect),从而减轻数据库负担,增大系统承受能力,提高系统性能。本项目使用Sharding-JDBC在程序中实

现读写分离。

注:MySQL主从复制是一个异步的复制过程,底层是基于Mysql数据库目带的二进制日志功能。就是一台或

多台MySQL数据库(slave,即从库)从另一台MySQL数据库(master,即主库)进行日志的复制然后再解析日

志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL主从复制是MysQL数据库自带功能,

无需借助第三方工具。

3、前后端分别部署,使用Nginx进行反向代理

前端页面部署到Nginx服务器中,后端代码部署到后端服务器中,使用Nginx对后端服务器进行反向代理,使

用户只需要访问Nginx服务器便可获得后端服务器的服务(便于后期扩展集群,提高系统并发量)。

瑞吉外卖(个人记录)_第1张图片 

二、需求分析

2.1 可行性分析

2.1.1 技术可行性

2.1.2 经济可行性

2.1.3 风险因素及对策

2.2 功能需求分析

2.2.1 后台管理功能分析

2.2.2 移动端功能分析

2.3 非功能需求分析

三、系统总体设计

3.1 项目技术选型

总体基于SpringBoot + MybatisPlus进行开发,使用MySQL数据库进行数据存储,使用Redis进行项目优化,使用git和maven进行版本控制和项目管理。

瑞吉外卖(个人记录)_第2张图片  

3.2 项目功能架构

瑞吉外卖(个人记录)_第3张图片

 

3.3 项目功能清单

瑞吉外卖(个人记录)_第4张图片

 

四、数据库设计

4.1 数据库概念结构设计

数据库设计共为十一张表,分别为员工表(employee)、用户表(user)、地址簿表(address_book)、

菜品表(dish)、订单表(orders)、菜品口味表(dish_flavor)、套餐表(setmeal)、套餐菜品关系表(setmeal_dish)、购物车表(shopping_cart)、订单详情表(order_detail)、分类表(category)。

其中套餐为菜品的各类组合,套餐和菜品的关系由setmeal_dish表来维系,菜品包括不同口味,由dish_flavor

表来维系,一个订单可能包括多个内容(即菜品或套餐),这些内容由order_detail表来维系,order表则记录

每次付钱后的订单。

瑞吉外卖(个人记录)_第5张图片

 

4.2 数据库逻辑结构设计

瑞吉外卖(个人记录)_第6张图片

 

五、系统功能实现

5.1 后台管理系统

5.1.1 管理员登录

输入“瑞吉外卖”后台地址,显示平台登录页面。输入账号和密码点击“登录”登录平台后台管理系统,登录账号为用户名,初始密码由平台运营人员设置。登录平台后可修改密码。账号或密码和验证码校验出错时有提示“账号号或密码错误,请重试”。

登录成功进入后台管理系统我的控制面板。我的面板模块主要分为五个部分:员工管理、分类管理、菜品管理、套餐管理和订单明细,同时包括一个退出登录按钮。

瑞吉外卖(个人记录)_第7张图片

 

5.1.2 员工管理

员工分类管理员和普通员工,管理员可进行员工的添加,编辑和禁用操作,普通员工只能执行查询员工信息操作,以此避免员工出现误操作,造成人员信息错误。

瑞吉外卖(个人记录)_第8张图片

 

5.1.3 分类管理

分类管理包括菜品分类和套餐分类,本模块可对菜品分类和套餐分类分别进行增删改查操作,实现对管理方提供的菜品进行分类管理。

瑞吉外卖(个人记录)_第9张图片

 

5.1.4 菜品管理

本模块包括对菜品的增删改查操作以及停售和起售操作,同时菜品需要停售以后才能删除,以避免员工误操作删除在售菜品。

瑞吉外卖(个人记录)_第10张图片

 

5.1.5 套餐管理

本模块包括对套餐的增删改查操作以及停售起售操作。

瑞吉外卖(个人记录)_第11张图片

 

5.1.6 订单明细

本模块为订单管理模块,可以查看订单信息以及订单具体内容以及修改订单的状态和查找订单,便于工作人员对订单的统一管理以及信息统计。

瑞吉外卖(个人记录)_第12张图片

 

5.2 移动端

5.2.1 移动端主页

主页根据分类展示菜品和套餐数据,套餐和菜品均可点击图片查看详情信息,同时菜品可以选择不同规格(甜度,加蒜,份数等)。菜品或套餐选择完毕后会加入购物车,购物车可对菜品套餐的份数进行管理以及清空。

瑞吉外卖(个人记录)_第13张图片

 

5.2.2 个人中心

个人中心包括地址管理、历史订单、最新订单展示和退出登录。地址管理包括地址的增删改和展示以及默认地址设置,历史订单为以往订单展示。


瑞吉外卖(个人记录)_第14张图片

 

5.2.3 订单支付

订单支付模块添加订单备注后可直接进行支付,支付后订单自动同步到历史订单以及最新订单中。

瑞吉外卖(个人记录)_第15张图片 

六、系统测试

6.1 测试的目的及意义

6.2 测试环境

6.3 测试与分析

你可能感兴趣的:(spring,boot,mybatis)