苍穹外卖

发布时间 2023-08-14 22:26:55作者: 阿朱朱

 POJO :又分为了  Entity  DTO  VO

 1、GIT 

在idea创建git   再点击对勾, 再点击绿色指向的, 传到gitee

 

2、进行MD5加密    DigestUtils.md5DigestAsHex      getBytes()是将password输出为编码格式iso-8859-1

password = DigestUtils.md5DigestAsHex(password.getBytes());

 

3、swagger   主要帮助后端做接口测试

Knife4j对swagger进行增强封装

 {1}、

{2}、  这两个都是写在配置内里面的

@Configuration
@Slf4j
public class WebMvcConfiguration extends WebMvcConfigurationSupport {
@Bean
public Docket docket() {
log.info("准备生成接口文档");
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、
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始生成静态资源映射");
registry.addResourceHandler("/doc.html").addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
{4}swagger  常用注解 用于解释说明用处的和swagger上面的显示 让swagger接口文档有更好的可读性

 例:

 

 

二、CRUD

1、我们先把项目接口以json格式传到apifox里面  方便看文档写CRUD

以YApi的方式导入

 登录后可以看到的

 

2、新增员工

{1}  DTO为前端页面传过来的数据 而entity实体类里面的数据是完整的  DTO可能不完整(因为前端导入的数据不完整)

   最后传到service层

 

 {2}  首先传到service层    再到serviceImpl现实

  这里由于EmployeeDTO是个不完整的数据, 现在Employee传入mapper层 

 所以现在需要把EmployeeDTO数据复制到Employee里面,以及把Employee里的属性值补齐

    (1)MD5加密   DigestUtils.md5DigestAsHex

    (2)LocalDateTime.now() 当前时间

    (3)StatusConstant.ENABLE PasswordConstant.DEFAULT_PASSWORD 都为写好了的类,直接调用

    (4)最后传给mapper

 

{3} mapper层

因为sql内容简单,这里直接使用注解完成

 

{4} 功能测试 这里我们使用到接口进行测试

(1)首先需要设置全局参数,因为jwt令牌会检验   如果不进行jwt检验 则会报401错误

  参数名称:token   yml文件配置的

  参数值: 可以通过员工登录来获取token的值,来用于crud的jwt检验

  参数类型: hearder  

 

 

 

{5}完善代码 : username设置的是唯一的,当出现重复会报500

现将写入异常管理

MessageConstant.ACCOUNT_EXISTS_FOUND 为参数不存在

MessageConstant.UNKNOWN_ERROR为参数未知错误

String[] split1 = message.split(" ") 将空格做为分离   保存在数组中

 

{6} 完善代码2   将添加的 createUser updateUser动态的注入

这里就需要得到用户的id

这里我们就用到了 ThreadLocal

在jwt这里可以得到id

 ThreadLocal的三大类   set get remove

 JWT这里获取

 最后动态注入

 

3、分页查询

{1} 首先查看api文档

请求参数:name page pageSize  对应我们的EmployeeLoginDTO 类

响应: data: 为 PageResult 类里面的属性值

 

 {2} controller  现在我们已经知道了 请求参数和响应的数据内容

通过前端请求的EmployeeLoginDTO 来响应PageResult  调用service层

 {3} service 

1、这里通过插件 pagehelper进行分页查询

2、 employeeMapper.pagequery(employeePageQueryDTO)通过调用mapper执行sql语句来获取查询的数据

3、这里利用了插件 pagehelper 所有需要使用page来放回

3、 这里的page获取的查询的数据,通过page来得到PageResult里面属性的值

 

 

{4}mapper

1、这里通过执行sql语句来获取数据 ,放在page集合里面

2、concat是包含的意思

 

 

{5} 测试发现这里的时间格式不一致

1、直接在实体内加上@JsonFormat

 2、统一放在配置类中