苍穹外卖项目DAY01
苍穹外卖项目Day01
1、软件开发整体介绍
1.1、软件开发流程

1.2、角色分工
- 项目经理:对整个项目负责,任务分配、把控进度
- 产品经理:进行需求调研,输出需求调研文档、产品原型等
- UI设计师:根据产品原型输出界面效果图
- 架构师:项目整体架构设计、技术选型等
- 开发工程师:代码实现
- 测试工程师:编写测试用例,输出测试报告
- 运维工程师:软件环境搭建、项目上线
1.3、软件环境
- 开发环境(development):开发人员在开发阶段使用的环境,一般外部用户无法访问
- 测试环境(testing):专门给测试人员使用的环境,用于测试项目,一般外部用户无法访问
- 生产环境(production):即上线环境,正式提供对外服务的环境
2、项目介绍
定位:专门为餐饮企业(餐厅、饭店)定制的一款软件产品
功能架构:体现项目中的业务功能模块

产品原型:用于展示项目的业务功能,一般由产品经理进行设计
技术选型:展示项目中使用到的技术框架和中间件等

3、开发环境搭建
整体结构
- 前端:管理端(Web)、用户端(小程序)
- 后端服务(Java)
3.1、前端环境搭建
开启nginx

3.2、后端环境搭建
3.2.1、熟悉项目结构
后端工程基于maven进行项目构建,并且进行分模块开发

如果maven加载不了可以加入镜像下载
<repositories><repository><id>huawei</id><name>华为云</name><url>https://repo.huaweicloud.com/repository/maven/</url><releases><enabled>true</enabled></releases></repository><repository><id>aliyun</id><name>阿里云</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases><!--snapshots默认是关闭的,需要开启 --><!--禁止从公共仓库下载snapshot构件是推荐的做法,因为这些构件不稳定,且不受你控制,你应该避免使用。但是如果是私服仓库,可以激活snapshot的支持 --><snapshots><enabled>false</enabled></snapshots></repository></repositories>
3.2.2、使用git进行版本控制
使用Git进行项目代码的版本控制,具体操作:
-
创建Git本地仓库

-
创建Git远程仓库
- 复制仓库链接


- 复制仓库链接
-
将本地文件推送到Git远程仓库(选中全部)

3.2.3、数据库环境搭建
通过数据库建表语句创建数据库表结构:


在数据库中导入sql文件:

在idea中连接数据库

把配置文件中的用户名和密码改为自己的

3.2.4、前后端联调
后端的初始工程中已经实现了登录功能,直接进行前后端联调测试即可

编译项目:

编译成功后启动程序:

确保提前运行了nginx.exe,端口号为:localhost:80如果没有页面显示需要手动修改端口号
用户名:admin、密码:123456

成功登录!
前端发送的请求,是如何请求到后端服务的?
前端请求地址:http://localhost/api/employee/login
后端接口地址:http://localhost:8080/admin/employee/login
nginx反向代理,就是将前端发送的动态请求由nginx转发到后端服务器


nginx反向代理的好处:
- 提高访问速度
- 进行负载均衡
- 所谓负载均衡,就是把大量的请求按照我们特定的方式均衡的分配给集群中的每台服务器
- 保证后端服务安全
nginx反向代理的配置方式:

nginx负载均衡的配置方式:

nginx负载均衡策略:
| 名称 | 说明 |
|---|---|
| 轮询 | 默认方式 |
| weight | 权重方式,默认为1,权重越高,被分配的客户端请求就越多 |
| ip_hash | 依据ip分配方式,这样每个访客可以固定访问一个后端服务 |
| least_conn | 依据最少连接方式,把请求优先分配给连接少的后端服务 |
| url_hash | 根据url分配方式,这样相同的url会被分配到同一个后端服务 |
| fair | 依据响应时间方式,响应时间短的服务将会被优先分配 |
3.3、完善登录功能
问题:员工表中的密码是明文存储,安全性太低
1、将密码加密后存储,提高安全性
2、使用MD5加密方式对明文密码加密(不可逆)


步骤:
1、修改数据库中明文密码,改为MD5加密后的密文(e10adc3949ba59abbe56e057f20f883e)

2、修改Java代码,前端提交的密码进行MD5加密后再跟数据库中密码对比
EmployeeServiceImpl
//密码比对// TODO 后期需要进行md5加密,然后再进行比对//对前端传过来的明文密码进行md5加密处理password = DigestUtils.md5DigestAsHex(password.getBytes());
3、测试:登录成功
4、导入接口文档
4.1、前后端分离开发流程

4.2、操作步骤
将课程资料中提供的项目接口导入YApi

打开yapi网页:YApi Pro-高效、易用、功能强大的可视化接口管理平台
5、Swagger
5.1、介绍
使用Swagger你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网:API Documentation & Design Tools for Teams | Swagger
Knife4j是Java MVC框架集成Swagger生成Api文档的增强解决方案
5.2、使用方式
1、导入maven坐标
<!-- Knife4j--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0.2</version></dependency>
2、在配置类中加入knife4j相关配置
/*** 通过knife4j生成接口文档* @return*/
@Bean
public Docket docket() {ApiInfo apiInfo = new ApiInfoBuilder().title("苍穹外卖项目接口文档").version("2.0").description("苍穹外卖项目接口文档").build();Docket docket = new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo).select().apis(RequestHandlerSelectors.basePackage("com.sky.controller")).paths(PathSelectors.any()).build();return docket;
}
3、设置静态资源映射,否则接口文档页面无法访问
/*** 设置静态资源映射* @param registry*/
protected void addResourceHandlers(ResourceHandlerRegistry registry) {registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
3、在浏览器中输入http://localhost:8080/doc.html#/home

- Yapi是设计阶段使用的工具,管理和维护接口
- Swagger在开发阶段使用的框架,帮助后端开发人员做后端的接口测试
登录测试:

5.2、常用注解
通过注解可以控制生成的接口文档,使接口文档拥有更好的可读性,常用注解如下:
| 注解 | 说明 |
|---|---|
| @Api | 用在类上,例如Controller,表示对类的说明 |
| @ApiModel | 用在类上,例如entity、DTO、VO |
| @ApiModelProperty | 用在属性上,描述属性信息 |
| @ApiOperation | 用在方法上,例如Controller方法,说明方法的用途、作业 |
----------------------------------------------- |
| @Api | 用在类上,例如Controller,表示对类的说明 |
| @ApiModel | 用在类上,例如entity、DTO、VO |
| @ApiModelProperty | 用在属性上,描述属性信息 |
| @ApiOperation | 用在方法上,例如Controller方法,说明方法的用途、作业 |
相关文章:
苍穹外卖项目DAY01
苍穹外卖项目Day01 1、软件开发整体介绍 1.1、软件开发流程 1.2、角色分工 项目经理:对整个项目负责,任务分配、把控进度产品经理:进行需求调研,输出需求调研文档、产品原型等UI设计师:根据产品原型输出界面效果图架…...
SpringBoot(Ⅰ)——HelloWorld和基本打包部署+Pom依赖概述+@SpringBootApplication注解+自动装配原理+约定大于配置
前言 如果SSM学的比较好,那么SpringBoot说白了就两件事:约定大于配置和自动装配 SpringBoot不会提供任何的功能拓展,完全依赖我们手动添加 所以SpringBoot的本质是一个依赖脚手架,可以快速集成配置各种依赖 1.1 SpringBoot相关依赖 创建…...
[Unity]关闭URP的SRP,开启GPU Instancing。
1. 对应材质的gpu instancing勾选上。 2. 游戏初始化时动态关闭SRP,或者在Graphics里全局关闭。动态关闭的代码如下: GraphicsSettings.useScriptableRenderPipelineBatching false; 模型合批的一些规则: 1. 模型一致。 2. 材质一致。 …...
04创建型设计模式——建造者模式
一、建造者模式简介 建造者模式(Builder Pattern)又被称为生成器模式。它旨在构建一个复杂对象的各个部分,而不需要指定该对象的具体类。该模式特别适用于对象的构建过程复杂且需要多个步骤的情况。建造者模式是一种对象创建型模式之一&…...
前端开发中的代码规范
引言 在前端开发中,遵循良好的代码规范是非常重要的。这不仅能提高代码的可读性和可维护性,还能帮助团队成员更好地协作。本文将介绍一些前端开发中常用的代码规范,并探讨它们的重要性。 1. 代码规范的重要性 1.1 可读性 良好的代码规范可…...
WHAT - 远程控制机制
目录 1. 客户端-服务器架构2. 连接建立3. 数据传输4. 通信协议5. 安全性6. 远程控制软件示例7. 操作流程示例 远程控制别人的电脑涉及到技术和安全多个方面。其基本机制通常包括以下几个方面: 1. 客户端-服务器架构 远程控制软件通常采用客户端-服务器架构&#x…...
苹果手机录音功能在哪里?3招轻松打开手机录音
无论是记录重要的会议内容、捕捉生活中的美好瞬间,还是进行语言学习,苹果手机的录音功能都能提供极大的便利。那么,苹果手机录音功能在哪里呢?本文将为您揭示苹果手机录音功能的藏身之处,并通过3个简单步骤,…...
RCE之突破长度限制
我们在写webshell时通常会遇到过滤,但除了过滤之外还可能会有长度限制,这里就简单说一下关于RCE突破长度限制的技巧 突破16位 例如:PHP Eval函数参数限制在16个字符的情况下 ,如何拿到Webshell? <?php $param …...
Arduino控制带编码器的直流电机速度
Arduino DC Motor Speed Control with Encoder, Arduino DC Motor Encoder 作者 How to control dc motor with encoder:DC Motor with Encoder Arduino, Circuit Diagram:Driving the Motor with Encoder and Arduino:Control DC motor using Encoder feedback loop: How …...
LangChain与Elasticsearch向量数据库的完美结合
在过去的一年中,生成式 AI (Generative AI) 领域取得了显著的进展。许多新的服务和工具应运而生。其中,LangChain 已成为构建大语言模型 (LLM) 应用程序(例如检索增强生成 (RAG) 系统)最受欢迎的框架之一。该框架极大地简化了原型…...
element时间段选择器或时间选择器 只设置默认起始时间或者结束时间,不显示问题
element时间段选择器或时间选择器 只设置默认起始时间或者结束时间,不显示问题 <div v-for"(item,index) in [a,b]":key"item"><el-date-pickerv-if"b"v-model"value1[item]"type"datetimerange"value-…...
Vue 3 中,组件间传值有多种方式
在 Vue 3 中,组件间传值有多种方式,以下是几种常见的方式 父组件向子组件传值(通过 props):以下是几个父组件向子组件传值的示例:示例 1:传递字符串示例 2:传递数字示例 3࿱…...
前置(3):npm 和npx异同点
npm(Node Package Manager)和npx(Node Package Execute)是两个密切相关但用途不同的命令行工具,它们都是Node.js生态系统中的重要组成部分。 npm 用途:npm是Node.js的包管理器,主要用于安装、…...
笔记(day17)集合概述、List、Set、比较器
集合Collection 一.概述 集合可以理解为数据结构的封装,根据不同的特性及操作性能进行分类 二.继承体系 三.Collection中常用方法 collection是集合中的父类,所以collection中的方法是所有集合中都有的 集合中只能保存引用类型(Object),无法保存基本类型 Colle…...
C语言从头学45——I/O函数(二)
本文继续学习I/O函数,并延续前文的编号。 (三)、sscanf() 函数 sscanf() 函数与scanf() 有些相似,不同之处sscanf() 是从已有的字符串里面获取数据;这个函数也是定义在stdio.h中。 功能:处理已经输入到计算机中的字…...
Python爬虫——爬取bilibili中的视频
爬取bilibili中的视频 本次爬取,还是运用的是requests方法 首先进入bilibili官网中,选取你想要爬取的视频,进入视频播放页面,按F12,将网络中的名称栏向上拉找到第一个并点击,可以在标头中,找到…...
为什么企业电销要用外呼系统
电销要使用外呼系统的原因主要有以下几点: 一、提升工作效率 * **自动拨号**:外呼系统能够自动拨打客户电话,减少电销人员手动拨号的时间,让他们将更多精力集中在与客户的沟通和交流上。 * **数据记录与管理**:系统能…...
Keepalived + Nginx 主备容灾方案介绍
Keepalived Nginx 主备容灾方案介绍 *服务器**IP地址**角色*Srv01192.168.249.100 VIP: 192.168.249.110NginxKeepaliveSrv02192.168.249.101NginxKeepalive 概述 Keepalived 和 Nginx 的组合是一个常见的高可用性(HA)方案,尤其适用于 Web…...
PHP、JavaScript代码审计工具
软件截图 1. GPT代码审计需要挂代理,和充值才可以使用 2. 全局搜索关键字 3. 危险函数搜索 4. 自动化代码审计 报告 下载地址 GitHub - yuag/Code-audit: 代码审计代码审计. Contribute to yuag/Code-audit development by creating an account on GitHub....
《向量数据库指南》——Ray Data+Anyscale解锁价值评估新篇章
在钧瓷这一古老而深邃的艺术领域中,每一位资深藏家与投资人都深知,随着市场的不断发展与扩大,信息的处理与分析能力对于精准判断、高效收藏与投资决策至关重要。尤其是当我们面对庞大的钧瓷数据库、复杂的交易记录、以及不断更新的市场趋势时,传统的数据处理方式往往显得力…...
从Office功能区的“局外人“到“掌控者“:Office RibbonX Editor深度指南
从Office功能区的"局外人"到"掌控者":Office RibbonX Editor深度指南 【免费下载链接】office-ribbonx-editor An overhauled fork of the original Custom UI Editor for Microsoft Office, built with WPF 项目地址: https://gitcode.com/g…...
WPF虚拟桌宠组件:可嵌入、高性能、工程化UI生命体
1. 这不是“桌面宠物”,而是一个可嵌入的WPF UI组件化生命体你可能在Windows XP时代见过那只晃着尾巴、偶尔打哈欠的3D小猫,也可能在Win10系统托盘里点开过一个会眨眼的像素狐狸——但那些是独立进程、是系统级小工具、是“看一眼就关掉”的轻量娱乐。而…...
FT231XQ USB串口桥接板设计解析与实战应用指南
1. 项目概述:从FT232R到FT231XQ的USB串口桥接板演进在嵌入式开发和硬件调试的日常工作中,一个可靠、小巧且功能清晰的USB转串口(UART)桥接板(Breakout Board, 简称BoB)几乎是工程师手边的标配工…...
开源三角洲机器人Delta-Robot One:从入门到精通的创客实践指南
1. 项目概述:一个为学习而生的开源三角洲机器人如果你对机器人感兴趣,但又觉得它高深莫测、无从下手,那么Delta-Robot One(我们亲切地称它为“One”)可能就是为你量身打造的入门项目。这不是一个遥不可及的工业设备&am…...
Safe Exam Browser虚拟机绕过实战:深度解析与安全研究指南
Safe Exam Browser虚拟机绕过实战:深度解析与安全研究指南 【免费下载链接】safe-exam-browser-bypass A VM and display detection bypass for SEB. 项目地址: https://gitcode.com/gh_mirrors/sa/safe-exam-browser-bypass 在数字化教育快速发展的今天&…...
H3C VSR路由器实战:用QoS策略给不同VLAN用户打DSCP标签(附配置命令详解)
H3C VSR路由器QoS实战:基于VLAN的DSCP标记与流量调度指南 在企业网络环境中,不同业务对网络质量的需求差异显著。普通办公流量可以容忍轻微延迟,但视频会议需要稳定的低延迟保障,而访客上网则可能消耗大量带宽却无需优先保障。本文…...
白嫖Codex!一行代码不花接入国产DeepSeek-v4-pro,从此告别ChatGPT月费
Codex 如何接入国产模型 DeepSeek-v4-pro 保姆级教程 使用 Claude Code、Codex 已经好几个月了,不得不感叹现在的 AI 工具真的太强大了。目前市面上很多 Claude Code 如何接入大模型的教程,但 Codex 却比较少,一方面因为 Codex 需要 ChatGPT …...
事故数据四年连降,为何山西煤矿的命还是悬在一根绳上?
说实话,写到山西煤矿这四个字,我心里就咯噔一下。2026年5月22日19时29分,山西长治市沁源县山西通洲集团留神峪煤业有限公司井下发生瓦斯爆炸事故,截至到写稿,事故已造成90人遇难。看的心里堵得慌。我特意去翻了翻这些年…...
抖音下载神器终极指南:免费批量下载视频、直播回放和音乐原声
抖音下载神器终极指南:免费批量下载视频、直播回放和音乐原声 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallbac…...
解锁iOS 17-26.4越狱的3个关键技巧:从新手到专家的完整指南
解锁iOS 17-26.4越狱的3个关键技巧:从新手到专家的完整指南 【免费下载链接】Jailbreak iOS 26.4 - 26, 17 - 17.7.5 & iOS 18 - 18.7.3 Jailbreak Tools, Cydia/Sileo/Zebra Tweaks & Jailbreak News Updates || AI Jailbreak Finder 👇 项目…...
