资料
视频:黑马程序员Java项目实战《瑞吉外卖》,轻松掌握springboot + mybatis plus开发核心技术的真java实战项目_哔哩哔哩_bilibili
资料:阿里云盘分享
部署
1. 导入数据库
2. 配置minio
3. redis安装
管理端:http://localhost:8080/backend/page/login/login.html
移动端:http://localhost:8080/front/page/login.html
项目介绍
本项目(瑞吉外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产品,包括系统管理后台和移动端应用两部分。
其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护。
移动端应用主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单等
项目首位如图
技术架构
1).用户层
本项目中在构建系统管理后台的前端页面,会用到H5、Vue.js、ElementUI等技术。
构建移动端应用时,会使用到微信小程序。
2).网关层
Nginx是一个服务器,主要用来作为Http服务器,部署静态资源,访问性能高。
在Nginx中还有两个比较重要的作用: 反向代理和负载均衡。
在进行项目部署时,要实现Tomcat的负载均衡,就可以通过Nginx来实现。
3).应用层
SpringBoot: 快速构建Spring项目, 采用 "约定优于配置" 的思想, 简化Spring项目的配置开发。
Spring: 统一管理项目中的各种资源(bean), 在web开发的各层中都会用到。
SpringMVC:SpringMVC是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合,可以无缝集成。
SpringSession: 主要解决在集群环境下的Session共享问题。
lombok:能以简单的注解形式来简化java代码,提高开发人员的开发效率。
Swagger: 可以自动的帮助开发人员生成接口文档,并对接口进行测试。
4).数据层
MySQL: 关系型数据库, 本项目的核心业务数据都会采用MySQL进行存储。
MybatisPlus: 本项目持久层将会使用MybatisPlus来简化开发, 基本的单表增删改查直接调用框架提供的方法即可。
Redis: 基于key-value格式存储的内存数据库, 访问速度快, 经常使用它做缓存(降低数据库访问压力, 提供访问效率), 在性能优化中会使用。
5).工具
git: 版本控制工具, 在团队协作中, 使用该工具对项目中的代码进行管理。
maven: 项目构建工具。
junit:单元测试工具,开发人员功能实现完毕后,需要通过junit对功能进行单元测试。
餐饮企业内部员工使用。 主要功能有:
模块 | 描述 |
---|---|
登录/退出 | 内部员工必须登录后,才可以访问系统管理后台 |
员工管理 | 管理员可以在系统后台对员工信息进行管理,包含查询、新增、编辑、禁用等功能 |
分类管理 | 主要对当前餐厅经营的 菜品分类 或 套餐分类 进行管理维护, 包含查询、新增、修改、删除等功能 |
菜品管理 | 主要维护各个分类下的菜品信息,包含查询、新增、修改、删除、启售、停售等功能 |
套餐管理 | 主要维护当前餐厅中的套餐信息,包含查询、新增、修改、删除、启售、停售等功能 |
订单明细 | 主要维护用户在移动端下的订单信息,包含查询、取消、派送、完成,以及订单报表下载等功能 |
用户端
移动端应用主要提供给消费者使用。主要功能有:
模块 | 描述 |
---|---|
登录/退出 | 在移动端, 用户也需要登录后使用APP进行点餐 |
点餐-菜单 | 在点餐界面需要展示出菜品分类/套餐分类, 并根据当前选择的分类加载其中的菜品信息, 供用户查询选择 |
点餐-购物车 | 用户选中的菜品就会加入用户的购物车, 主要包含 查询购物车、加入购物车、删除购物车、清空购物车等功能 |
订单支付 | 用户选完菜品/套餐后, 可以对购物车菜品进行结算支付, 这时就需要进行订单的支付 |
个人信息 | 在个人中心页面中会展示当前用户的基本信息, 用户可以管理收货地址, 也可以查询历史订单数据 |
角色
角色 | 权限操作 |
---|---|
后台系统管理员 | 登录后台管理系统,拥有后台系统中的所有操作权限 |
后台系统普通员工 | 登录后台管理系统,对菜品、套餐、订单等进行管理 (不包含员工管理) |
C端用户 | 登录移动端应用,可以浏览菜品、添加购物车、设置地址、在线下单等 |
第一部分:瑞吉外卖项目
1 环境搭建
①数据库搭建
表名 | 说明 |
---|---|
employee | 员工表 |
category | 菜品和套餐分类表 |
dish | 菜品表 |
setmeal | 套餐表 |
setmeal_dish | 套餐菜品关系表 |
dish_flavor | 菜品口味关系表 |
user | 用户表(C端) |
address_book | 地址簿表 |
shopping_cart | 购物车表 |
orders | 订单表 |
order_detail | 订单明细表 |
②项目搭建
后端项目
前端静态页面(WebMvcConfig.class 静态资源映射)
2 后台系统登录/退出功能
登录页面存放目录 /resources/backend/page/login/login.html
登录逻辑:
①. 将页面提交的密码password进行md5加密处理, 得到加密后的字符串
②. 根据页面提交的用户名username查询数据库中员工数据信息
③. 如果没有查询到, 则返回登录失败结果
④. 密码比对,如果不一致, 则返回登录失败结果
⑤. 查看员工状态,如果为已禁用状态,则返回员工已禁用结果
⑥. 登录成功,将员工id存入Session, 并返回登录成功结果
登录添加一个过滤器或拦截器,判断用户是否已经完成登录,如果没有登录则返回提示信息,跳转到登录页面。
过滤器LoginCheckFilter处理逻辑如下:
①. 获取本次请求的URI
②. 判断本次请求, 是否需要登录, 才可以访问
③. 如果不需要,则直接放行
④. 判断登录状态,如果已登录,则直接放行