type
status
date
slug
summary
tags
category
icon
password
项目来源:
【黑马程序员 Java项目实战《苍穹外卖》】
@ZZHow(ZZHow1024)
- 以下笔记省略功能测试部分
- 测试方式:
- 通过接口文档测试。
- 通过前后端联调测试。
- 注意:由于开发阶段前端和后端是并行开发的,后端完成某个功能后,此时前端对应的功能可能还没有开发完成,导致无法进行前后端联调测试。所以在开发阶段,后端测试主要以接口文档测试为主。
新增员工
- 需求分析和设计
- 表单项:
- 账号必须是唯一的
- 手机号为合法的 11 位手机号码
- 身份证号为合法的 18 位身份证号码
- 密码默认为 123456
- 接口设计:
- Path:/admin/employee
- Method:POST
- 备注:
- 管理端发出的请求统一使用 /admin 作为前缀。
- 用户端发出的请求统一使用 /user 作为前缀。
- 数据库设计(employee 表)
- 代码开发
- 根据新员工接口设计对应的 DTO。
注意:当前端提交的数据和实体类中对应的属性差别比较大时,建议使用 DTO 来封装数据。
- 代码完善
- 存在的问题:
- 录入的用户名已存在,抛出异常后没有处理。
- 使用全局异常处理器。
- 新增员工时,创建人 ID 和修改人 ID 设置为了固定值。
- 使用 ThreadLocal。
- ThreadLocal 不是一个 Thread,而是 Thread 的局部变量。
- ThreadLocal 为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不
- 常用方法:
- 没置当前线程的线程局部变量的值:
public void set (T value)
- 返回当前线程所对应的线程局部变量的值:
public T get()
- 移除当前线程的线程局部变量:
public void remove()
员工分页查询
- 产品原型
- 业务规则:
- 根据页码展示员工信息。
- 每页展示 10 条数据。
- 分页查询时可以根据需要,输入员工姓名进行查询。
- 接口设计:
- Path:/admin/employee/page
- Method:GET
- 代码开发
- 根据分页查询接口设计对应的 DTO。
- 所有分页查询统一封装成 PageResult 对象。
- 员工信息分页查询后端返回的对象类型为 Result<PageResult>。
- 代码完善
- 存在的问题:后端返回的时间数据可读性较差。
- 解决方式:
- 方式一:在属性上加入注解,对日期进行格式化:
@JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss")
。 - 方式二:在 WebMvcConfiguration 中扩展 Spring MVC 的消息转换器,统一对日期类型进行格式化处理。
启用禁用员工账号
- 需求分析和设计
- 业务规则:
- 可以对状态为“启用”的员工账号进行“禁用”操作。
- 可以对状态为“禁用”的员工账号进行“启用”操作。
- 状态为“禁用”的员工账号不能登录系统。
- 接口设计:
- Path:/admin/employee/status/{status}
- Method:POST
- 代码开发
- 根据接口文档进行开发。
编辑员工
- 需求分析和设计
- 业务规则:
- 回显数据(根据 ID 查询员工信息)。
- 修改员工信息。
- 编辑员工功能涉及到两个接口:
- 根据 ID 查询员工信息
- Path:/admin/employee/{id}
- Method:GET
- 编辑员工信息
- Path:/admin/employee
- Method:PUT
- 代码开发
- 根据接口文档进行开发。
开发分类管理模块功能
- 需求分析和设计
- 业务规则:
- 分类名称必须是唯一的。
- 分类按照类型可以分为菜品分类和套餐分类。
- 新添加的分类状态默认为“禁用”。
- 接口设计:
- 新增分类
- 分类分页查询
- 根据 ID 删除分类
- 修改分类
- 启用禁用分类
- 根据类型查询分类
- 代码开发
- 此业务模块与上一部分(员工管理业务)模块实现类似。