苍穹外卖-day02

1. 新增员工

1.1 需求分析和设计

注意事项:

  1. 账号必须是唯一的
  2. 手机号为合法的11位手机号码
  3. 身份证号为合法的18位身份证号码
  4. 密码默认为123456

本项目约定:

  • 管理端发出的请求,统一使用**/admin**作为前缀。
  • 用户端发出的请求,统一使用**/user**作为前缀。

1.2 代码开发

注意:

  • 当前端提交的数据和实体类中对应的属性差别比较大时,建议使用 DTO 来封装数据
@Data
public class EmployeeDTO implements Serializable {

    private Long id;

    private String username;

    private String name;

    private String phone;

    private String sex;

    private String idNumber;

}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 功能测试

功能测试实现方式:

  • 通过接口文档测试
  • 通前后端联调测试

1.3.1 接口文档测试

启动服务: 访问http://localhost:8080/doc.html,进入新增员工接口
响应码:401 报错

报错原因: 由于JWT令牌校验失败,导致EmployeeController的save方法没有被调用
解决方法: 调用员工登录接口获得一个合法的JWT令牌

使用admin用户登录获取令牌
在这里插入图片描述

添加令牌:

  • 将合法的JWT令牌添加到全局参数中
  • 文档管理–>全局参数设置–>添加参数

在这里插入图片描述

接口测试:
在这里插入图片描述

1.3.2 前后端联调测试

启动nginx,访问 http://localhost
在这里插入图片描述

注意: 由于开发阶段前端和后端是并行开发的,后端完成某个功能后,此时前端对应的功能可能还没有开发完成,导致无法进行前后端联调测试。所以在开发阶段,后端测试主要以接口文档测试为主。

1.4 代码完善

目前,程序存在的问题主要有两个:

  • 录入的用户名已存,抛出的异常后没有处理
  • 新增员工时,创建人id和修改人id设置为固定值

1.4.1 问题一

描述: 录入的用户名已存在,抛出的异常后没有处理
在这里插入图片描述在这里插入图片描述

1.4.2 问题二

描述: 新增员工时,创建人 id 和修改人 id 设置为固定值

思考: 解析出登录员工 id 后,如何传递给 Service 的 save 方法?

  • 通过 ThreadLocal 进行传递。

1.4.3 ThreadLocal

  • ThreadLocal 并不是一个 Thread,而是 Thread 的局部变量。
  • ThreadLocal 为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不能访问。

注意:

  • 客户端发送的每次请求,后端的 Tomcat 服务器都会分配一个单独的线程来处理请求

ThreadLocal 常用方法:

  • public void set(T value) 设置当前线程的线程局部变量的值
  • public T get() 返回当前线程所对应的线程局部变量的值
  • public void remove() 移除当前线程的线程局部变量

2. 员工分页查询

2.1 需求分析和设计

业务规则

  • 根据页码展示员工信息
  • 每页展示10条数据
  • 分页查询时可以根据需要,输入员工姓名进行查询

2.2 代码开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.3 功能测试

可以通过接口文档进行测试,也可以进行前后端联调测试,最后操作时间字段展示有问题在这里插入图片描述

2.4 代码完善

问题描述: 操作时间字段显示有问题。

解决方式:

  • 方式一:在属性上加入注解,对日期进行格式化
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;
  • 方式二:在 WebMvcConfiguration 中扩展Spring MVC的消息转换器,统一对日期类型进行格式化处理
    在这里插入图片描述

3. 启用禁用员工账号

3.1 需求分析与设计

业务规则:

  • 可以对状态为“启用” 的员工账号进行“禁用”操作
  • 可以对状态为“禁用”的员工账号进行“启用”操作
  • 状态为“禁用”的员工账号不能登录系统

3.2 代码开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 编辑员工

4.1 需求分析与设计

根据上述原型图分析,编辑员工功能涉及到两个接口:

  • 根据 id 查询员工信息
  • 编辑员工信息

4.2 代码开发

4.2.1 回显员工信息功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.2.2 修改员工信息功能

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 导入分类模块功能代码

5.1 需求分析与设计

业务规则:

  • 分类名称必须是唯一的
  • 分类按照类型可以分为菜品分类和套餐分类
  • 新添加的分类状态默认为“禁用”

category表结构:

字段名 数据类型 说明 备注
id bigint 主键 自增
name varchar(32) 分类名称 唯一
type int 分类类型 1菜品分类 2套餐分类
sort int 排序字段 用于分类数据的排序
status int 状态 1启用 0禁用
create_time datetime 创建时间
update_time datetime 最后修改时间
create_user bigint 创建人id
update_user bigint 最后修改人id

5.2 代码导入

在这里插入图片描述

相关推荐

最近更新

  1. TCP协议是安全的吗?

    2024-03-23 06:34:03       17 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-23 06:34:03       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-23 06:34:03       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-23 06:34:03       18 阅读

热门阅读

  1. *Python的数据类型有哪些?

    2024-03-23 06:34:03       16 阅读
  2. 面试问答示范

    2024-03-23 06:34:03       17 阅读
  3. 嵌入式学习-ARM

    2024-03-23 06:34:03       16 阅读
  4. 项目立项管理

    2024-03-23 06:34:03       19 阅读
  5. 蓝桥杯每日一题:统计子矩阵

    2024-03-23 06:34:03       19 阅读