苍穹外卖第一天

⁠1 ⁠前端环境搭建

使用 nginx 服务器启动前端服务。 注意: 必须在没有中文的文件路径下才能正常启动

⁠2 ⁠后端环境搭建

⁠2.1 ⁠sky-take-out目录结构

1.sky-take-out maven父工程,统一管理依赖版本,聚合其他子模块
2.sky-common 子模块,存放公共类:工具类,常量类,异常类
3.sky-pojo 子模块存放实体类:VO,DTO
4.sky-server 子模块,后端服务,存放配置文件,controller、server、Mapper等

⁠2.2 ⁠四类简写

  • Entity 实体
  • DTO 数据传输对象
  • VO 试图对象,为前端展示数据的对象
  • POJO 普通Java对象,只有属性和对应的getter和setter

⁠2.3 ⁠使用Git进行版本控制

⁠2.3.1 ⁠.gitignore git忽略文件

⁠2.3.2 ⁠创建Git本地仓库

  1. 使用idea中的VCS创建一个本地Repository
  2. commit到Git(不推送,还没连接远程仓库)
  3. 在GitHub或者Gitee创建一个仓库,复制git链接
  4. 推送至远程仓库(首次需要登录/验证)

⁠2.3.3 ⁠配置数据库导入数据库表

⁠2.3.4 ⁠前后端联调

  1. 在父工程下编译(会同时编译子工程)
⁠2.3.4.1 ⁠利用断点走一遍登录流程

注意:8080

  1. 首先通过EmployeeLoginDTO获取登录username和password
    656
  2. 通过Employee的login方法获取用户名和密码
    602
  3. 通过getByUsername方法查询数据库中的数据(select注解)
    664
  4. 检查用户名不存在、密码不对、账号被锁定等多种异常情况
  5. 没问题就返回实体对象employee
  6. 登录成功后,开始生成JWT令牌
  7. 通过JwtUtil类的createJWT方法创建token
    607
  8. 使用EmployeeLoginVO的builder方法获取id,username,name,token生成JWT令牌
  9. 使用Result类的success方法包装返回成功登录状态码(项目中1为成功,0和其他数字为失败)

⁠2.4 ⁠nginx反向代理

前端:http://localhost /api/ employee/login
后端:http://localhost:8080/admin/employee/login

⁠2.4.1 ⁠反向代理

nginx.conf:

location /api/ {
proxy_pass http://127.0.0.1:8080/admin/;
}

匹配api,将api前半部分换成代理后的地址
http://localhost:8080/admin/ employee/login

⁠2.4.2 ⁠负载均衡

upstream webservers{
server 127.0.0.1:8080 weight=90 ;
server 127.0.0.1:8088 weight=10 ;
}

⁠2.4.3 ⁠nginx的作用

  1. 提高访问速度(nginx可设置缓存)
  2. 负载均衡(将前端发来的请求路由给多台服务器)
  3. 保证后端安全(不暴露后端地址)

⁠2.5 ⁠完善登录功能(解决密码明文保存)

⁠2.5.1 ⁠测试密码不相同抛出异常

616

⁠2.5.2 ⁠完善步骤

md5加密算法是单向的,理论上是不可逆的。校验密码是否匹配,通过生成的md5密码字符串进行匹配。

  1. 在数据库中存入md5加密后的密码(可使用md5在线生成工具)
  2. 在TODO的位置(获取密码的位置)使用DigestUtils进行加密并比对

⁠2.6 ⁠导入接口文档

⁠2.6.1 ⁠YApi

Yapi是一个开源接口测试工具,最简单的方法,找一个AI工具给你安装一下就行,然后启动服务就能导入,官方在线预览已不可用。

⁠2.6.2 ⁠Swagger

基于Knife4j实现

  1. 在pom中导入Maven坐标
  2. 导入docket代码(已提供)
  3. 设置静态资源映射
  4. 登录 http://localhost:8080/doc.html 对接口进行测试

602

⁠2.6.3 ⁠Swagger常用注解

作用:让Swagger测试界面更直观清晰

  • @Api 用在类,例如Controller,表示对类的说明 @Api(tags = “员工常见接口”)
  • @ApiModel 用在类上,例如entity,DTO,VO
  • @ApiModelProperty 用在属性上,描述属性信息
  • @ApiOperation 用在方法上,例如Controller说明方法的用途,作用
    464

苍穹外卖第一天
https://ckxkx.github.io/2026/11/04/learning/苍穹外卖第一天/
作者
朱会琛
发布于
2026年11月4日
许可协议