苍穹外卖项目DAY01

news/2024/12/22 15:22:03/

苍穹外卖项目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方法,说明方法的用途、作业 |


http://www.ppmy.cn/news/1512699.html

相关文章

第5天:常用的Python库和框架——Matplotlib:数据可视化

引言&#xff1a; Matplotlib是一种强大的Python数据可视化库&#xff0c;广泛应用于科学计算、数据分析和机器学习等领域。本文将介绍Matplotlib的基本概念和功能&#xff0c;以及提供几个实例代码来展示其在数据可视化方面的应用。 在数据分析和可视化领域&#xff0c;Matpl…

Arbitrum 和 Optimism Layer 2 扩展方案对比

Arbitrum 和 Optimism 对比分析 Arbitrum 和 Optimism 是两个以太坊 Layer 2 扩展方案&#xff0c;它们都使用了 Optimistic Rollup 技术来提升以太坊的可扩展性并降低交易成本。虽然它们有着相似的目标&#xff0c;但在架构设计、性能表现和费用结构上各有特点。 一、架构与…

【Alibaba Cola 状态机】重点解析以及实践案例

【Alibaba Cola 状态机】重点解析以及实践案例 1. 状态模式 状态模式是一种行为型设计模式&#xff0c;允许对象在内部状态改变时改变其行为&#xff0c;简单地讲就是&#xff0c;一个拥有状态的context对象&#xff0c;在不同状态下&#xff0c;其行为会发生改变。看起来是改…

STM32之点亮LED灯

使用固件库实现LED点灯 LED灯&#xff1a; LED灯&#xff0c;是一种能够将电能转化为可见光的半导体器件 控制LED灯&#xff1a; LED灯的正极接到了3.3V&#xff0c;LED灯的负极接到了PA1&#xff0c;也就是GPIOA1引脚 只需要控制PA1为相对应的低电平&#xff0c;即可点亮对…

CAS-ViT实战:使用CAS-ViT实现图像分类任务(一)

摘要 在视觉转换器&#xff08;Vision Transformers, ViTs&#xff09;领域&#xff0c;随着技术的不断发展&#xff0c;研究者们不断探索如何在保持高效性能的同时&#xff0c;降低模型的计算复杂度&#xff0c;以满足资源受限场景&#xff08;如移动设备&#xff09;的需求。…

【气象百科】光伏自动气象站的功能优势

随着全球对可再生能源需求的日益增长&#xff0c;光伏发电作为清洁、可再生的能源形式&#xff0c;正逐步成为推动能源转型的重要力量。而光伏自动气象站&#xff0c;作为光伏电站智能化管理的重要组成部分&#xff0c;其独特的功能优势在提升光伏系统效率、优化运维策略、增强…

Temu全托管和半托管的区别:一文说清temu全托和半托的差异

TEMU在今年3月再出王炸&#xff0c;上线半托管模式。这是TEMU继全托管模式爆火跨境圈之后的又一个大动作。那么&#xff0c;TEMU全托管和TEMU半托管有哪些不同&#xff1f;卖家朋友应该如何选择呢&#xff1f;今天给大家详细拆解一下。 TEMU全托管和半托管有什么区别 首先是定…

学习记录第二十九天

IPC通信原理 进程间通信的原理通常涉及内核提供的机制&#xff0c;在内核中开辟缓冲区&#xff0c;进程将数据从用户空间拷贝到内核缓冲区&#xff0c;然后另一个进程从内核缓冲区读取数据。这样的机制允许进程之间安全地交换数据。 ftok函数 在Linux系统中用于生成一个IPC&a…