[毕设项目-苍穹外卖]详细拆解分析项目的具体内容及心得体会

目录

1、项目介绍

2、功能介绍

3、技术选型

4、项目环境

5、项目拆解⭐

5.1、技术要点

5.2、微信支付

5.3、内网穿透

5.4、部署上云

6、心得体会


作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发和前端开发。
主页:@逐梦苍穹

所属专栏:项目

⭐Gitee地址:Java服务端完整代码(个人手敲)

您的一键三连,是我创作的最大动力

1、项目介绍

黑马程序员的苍穹外卖项目是为餐饮企业(餐厅、饭店)定制的一款软件产品,包括"系统管理后台"和"小程序端应用"两部分。

其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的分类、菜品、套餐、订单、员工等进行管理维护,对餐厅的各类数据进行统计,同时也可进行来单语音播报功能。

小程序端主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单、支付、催单等。

接下来,通过功能架构图来展示管理端用户端的具体业务功能模块。

[毕设项目-苍穹外卖]详细拆解分析项目的具体内容及心得体会_第1张图片

2、功能介绍

1). 管理端功能

员工登录/退出、员工信息管理、分类管理、菜品管理、套餐管理、菜品口味管理、订单管理、数据统计、来单提醒。

模块

描述

登录/退出

内部员工必须登录后,才可以访问系统管理后台

员工管理

管理员可以在系统后台对员工信息进行管理,包含查询、新增、编辑、禁用等功能

分类管理

主要对当前餐厅经营的 菜品分类 或 套餐分类 进行管理维护,

包含查询、新增、修改、删除等功能

菜品管理

主要维护各个分类下的菜品信息,包含查询、新增、修改、删除、启售、停售等功能

套餐管理

主要维护当前餐厅中的套餐信息,包含查询、新增、修改、删除、启售、停售等功能

订单管理

主要维护用户在移动端下的订单信息,

包含查询、取消、派送、完成,以及订单报表下载等功能

数据统计

主要完成对餐厅的各类数据统计,如营业额、用户数量、订单等

2). 用户端功能

微信登录、收件人地址管理、用户历史订单查询、菜品规格查询、购物车功能、下单、支付、分类、菜品浏览。

模块

描述

登录/退出

用户需要通过微信授权后登录使用小程序进行点餐

点餐-菜单

在点餐界面需要展示出菜品分类/套餐分类, 并根据当前选择的分类加载其中的菜品信息,

供用户查询选择

点餐-购物车

用户选中的菜品就会加入用户的购物车,

主要包含 查询购物车、加入购物车、删除购物车、清空购物车等功能

订单支付

用户选完菜品/套餐后, 可以对购物车菜品进行结算支付, 这时就需要进行订单的支付

个人信息

在个人中心页面中会展示当前用户的基本信息, 用户可以管理收货地址,

也可以查询历史订单数据

3、技术选型

关于本项目的技术选型,将会从"用户层、网关层、应用层、数据层"这几个方面进行介绍,主要用于展示项目中使用到的技术框架和中间件等。

[毕设项目-苍穹外卖]详细拆解分析项目的具体内容及心得体会_第2张图片

用户层

本项目中在构建系统管理后台的前端页面,会用到H5、Vue.js、ElementUI、apache echarts(展示图表)等技术。

而在构建移动端应用时,我们会使用到微信小程序。

网关层

Nginx是一个服务器,主要用来作为Http服务器,部署静态资源,访问性能高。

在Nginx中还有两个比较重要的作用: 反向代理和负载均衡。

在进行项目部署时,要实现Tomcat的负载均衡,就可以通过Nginx来实现。

应用层

技术

描述

Spring Boot

快速构建Spring项目,采用 "约定优于配置" 的思想,简化Spring项目的配置开发。

Spring MVC

SpringMVC是spring框架的一个模块,springmvc和spring无需通过中间整合层进行整合。

Spring Task

由Spring提供的定时任务框架。

HttpClient

主要实现了对HTTP请求的发送。

Spring Cache

由Spring提供的数据缓存框架。

JWT

用于对应用程序上的用户进行身份验证的标记。

阿里云 OSS

对象存储服务,在项目中主要存储文件,如图片等。

Swagger

可以自动帮助开发人员生成接口文档,并对接口进行测试。

POI

封装了对Excel表格的常用操作。

WebSocket

一种通信网络协议,使客户端和服务器之间的数据交换更加简单。用于来单、催单功能。

数据层

技术

描述

MySQL

关系型数据库, 本项目的核心业务数据都会采用MySQL进行存储。

Redis

基于key-value格式存储的内存数据库, 访问速度快, 经常使用它做缓存。

Mybatis

本项目持久层将会使用Mybatis开发。

pagehelper

分页插件。

spring data redis

简化java代码操作Redis的API。

工具

工具

描述

git

版本控制工具,在团队协作中,使用该工具对项目中的代码进行管理。

maven

项目构建工具。

junit

单元测试工具,开发人员功能实现完毕后,需要通过junit对功能进行单元测试。

postman

接口测试工具,模拟用户发起的各类HTTP请求,获取对应的响应结果。

4、项目环境

前端使用的是打包好的前端工程,用nginx服务器启动。

后端是基于SpringBoot2.X版本的Java工程,使用的Java版本是17。

关系型数据库使用的是 MySQL。

非关系型数据库使用的是redis。

后端接口文档是Swagger。

重点是放在Java后端(详见后续分析),前端都是使用原有的代码进行运行。

Java后端使用的是maven分模块开发,分为common、pojo和server模块。

MySQL数据库共计有11个表单

截至目前,项目的git提交记录如下:

[毕设项目-苍穹外卖]详细拆解分析项目的具体内容及心得体会_第3张图片

5、项目拆解

我把这个项目的详细内容,拆解成了16博客文章,我会如数列出来。

由于内容实在太多,这里不进行详细论述。

下面附上相应的文章详解链接,这都是我个人独立编写的项目技术文章。

原创不易,烦请一键三连支持一下收藏起来慢慢看

5.1、技术要点

技术要点名称

对应的文章链接

数据库设计

软件开发项目的数据库设计 | 如何从零到一完成对相关表单的设计

层级结构⭐

[毕设项目-苍穹外卖]详解项目的代码层级结构

md5加密

Java实现md5加密

JWT令牌⭐

JWT令牌 | 一个区别于cookie/session的更安全的校验技术

接口文档

利用Knife4j注解实现Java生成接口文档

分页查询

PageHelper分页插件-以三层架构模型开发为例

公共字段填充

利用Spring AOP实现数据库表单公共字段填充 | JoinPoint的应用

对象存储服务

Java利用阿里云OSS/本地存储实现文件上传功能

redis

redis常用命令及其Java操作

HttpClient

HttpClient | 支持 HTTP 协议的客户端编程工具包

微信登录

微信小程序登录流程

百度地图

百度地图接口 | 实现校验收货地址是否超出配送范围

SpringTask

Spring Task定时任务

WebSocket

WebSocket | 基于TCP的全双工通信网络协议

可视化图表库⭐

Apache ECharts | 一个数据可视化图表库

绘制图表

使用Apache ECharts同时绘制多个统计图表

Apache POI

Apache POI | Java操作Excel文件

上面的链接中,还有一个未提到的,那就是:微信支付。

要实现微信支付就需要注册微信支付的一个商户号,这个商户号是必须要有一家企业并且有正规的营业执照。

只有具备了这些资质之后,才可以去注册商户号,才能开通支付权限。

个人并不具备这种资质

微信支付这里简单介绍一下,了解了解流程就可以了。

5.2、微信支付

这个项目选择的是小程序支付。

官网提供的资料参考:产品中心 - 微信支付商户平台

小程序支付资料参考:产品介绍-小程序支付 | 微信支付商户平台文档中心

微信支付产品:

[毕设项目-苍穹外卖]详细拆解分析项目的具体内容及心得体会_第4张图片

微信支付接入流程:

[毕设项目-苍穹外卖]详细拆解分析项目的具体内容及心得体会_第5张图片

5.3、内网穿透

内网穿透的详细介绍分析,以及进行内网穿透所使用的免费工具,烦请移步看我的这篇博客文章:

链接:https://blog.csdn.net/qq_60735796/article/details/136107877 | 两个免费的内网穿透工具

下面在这里做简要介绍。

内网穿透是用于没有云服务器、但是又希望别人能访问到我们本地的项目的情况,这种情况下,通过内网穿透来获得一个临时的可访问的域名,不失为一个不错的选择。

5.4、部署上云

前面提到没有云服务器,但是想让别人访问本地项目的情况下,使用的是内网穿透;

那么这一部分就是分析如何在云服务器上面,完整部署项目所需要的各项服务(以阿里云为例)。

具体需要的

下面做一下简要介绍。

对于一个Java项目,想要部署到云服务器上面,需要的服务与我们在本地运行的服务是一致的。

mysql、redis、jdk、tomcat、nginx等都是必须的。

具体如何部署,涉及到的内容很多,这里也不详细赘述,烦请移步看我这篇博客文章:

链接:https://blog.csdn.net/qq_60735796/article/details/135885241 | Java项目从0到1部署到云服务器

6、心得体会

由于平时要上课和完成学业任务,这个Java项目也是断断续续的做了几个月,在期末的时候做完了;

但是由于是第一个综合项目,所以里面有一些东西,在当时也只是过了一遍;

趁着寒假的时间,陆陆续续整理了一下整套流程及思路,把相关的技术要点重新梳理一遍,目前就算是对整个项目的流程以及技术要点都比较熟悉,具体怎么配合工作也算比较清楚了。

这个项目的完整度算是比较不错的,自己在完成了Java后端的同时,也对前端vue工程有了一些了解,还自己学习了解了Linux服务器部署Java项目的整套流程。


做完了这个项目,我了解到了:

①在前后端分离的开发模式中,是如何协调的,如何测试的;

②前后端交互中的数据格式也是遵循一定规范的,这相较于传统的JSP不分离开发模式,显得更为规范,也降低了项目前后端代码的耦合度,使得前后端分工更加明确;

③了解到了一些新的技术,比如对象存储,百度地图接口调用,微信登录详细流程等等;

④同时也对整套的JavaSE和JavaWeb有了更为深刻的认识。

⑤深刻理解了实体类pojo当中的entity、dto和vo的区别,以及这三者在项目当中充当什么样的角色和作用。

总而言之,三言两语暂时说不完,有些只可意会不可言传。


那么对于这第一个综合项目,就算是告一段落了。

下一阶段的内容就是,以学习微服务为主线,然后陆续刷LeetCode算法题,最后抽时间继续补充人工智能的基础知识。

大家可以移步指点一下相关专栏

JavaEE:https://blog.csdn.net/qq_60735796/category_12340900.html

数据结构与算法:https://blog.csdn.net/qq_60735796/category_12222712.html

人工智能:https://blog.csdn.net/qq_60735796/category_12365436.html

大家共同监督,共同进步

你可能感兴趣的:(项目,java,苍穹外卖,毕业设计,redis,mysql,swagger)