外卖笔记

对员工设置密码时,需要先用DigestUtils工具类中的md5DigestAsHex方法对密码进行md5加密。

employee.setPassword(DigestUtils.md5DigestAsHex((PasswordConstant.DEFAULT_PASSWORD.getBytes()))		//getBytes() 转化为数组

设置一个密码常量,方便修改:

public class PasswordConstant {

    public static final String DEFAULT_PASSWORD = "123456";
    
}

封装属性:

 		//设置当前记录的创建时间和修改时间
        //employee.setCreateTime(LocalDateTime.now());
        //employee.setUpdateTime(LocalDateTime.now());

        //设置当前记录 创建人和修改人id
		// TODO    后期需要改为当前登录用户的id
        //employee.setCreateUser(10L);
        //employee.setUpdateUser(10L);

调用持久层插入数据:

employeeMapper.insert(employee)				//把employee放进去

扩展insert方法:

/**
     * 插入员工数据
     * @param employee
     */
    @Insert("insert into employee (name, username, password, phone, sex, id_number, create_time, update_time, create_user, update_user ,status) " +
            "values " +
            "(#{name},#{username},#{password},#{phone},#{sex},#{idNumber},#{createTime},#{updateTime},#{createUser},#{updateUser},#{status})")				//@Insert是注解

void insert(Employee employee);

访问swagger接口文档:
localhost:8080/doc.html

因为EmployeeServicelmpl.java里面设置了md5加密:

所以数据库employee员工密码改成e10adc3949ba59abbe56e057f20f883e

不改登不上前端。

application-dev.yml里面:

    host: localhost
    port: 3306			//3306也是数据库端口号,别写成8080,死都登不上。
   	//修改成自己数据库的用户名和密码
	username: root
    password: "123456"
//封装数据,相应给前端页面。
EmployeeLoginVO employeeLoginVO = EmployeeLoginVO.builder()	//通过builder构建器封装,前提是需要在EmployeeLoginVO.java中,加上@Builder注解
                .id(employee.getId())
                .userName(employee.getUsername())
                .name(employee.getName())
                .token(token)
                .build();

        return Result.success(employeeLoginVO);	//再次把后端相应给前端的数据封装到Result中
// 对前端传过来的明文密码进行md5加密处理
         password = DigestUtils.md5DigestAsHex(password.getBytes());

使用了@Bean //表示由spring框架创建并且管理这个对象

新增员工功能测试:
进入swagger: 新增员工,自行添加数据。

在EmployeeController.java的:

log.info("新增员工: {}",employeeDTO); 处加断点

进入swagger点击发送,没有跳到断点。返回401。

原因:没有抓取到jwt令牌。

进入sky-server里的lnterceptor中的JwtTokenAdminlnterceptor.java (里面有进行令牌校验的拦截器)

在此处增加断点:

//1、从请求头中获取令牌
String token = request.getHeader(jwtProperties.getAdminTokenName());

再次去swagger发送,跳转到断点,断点处的token为null。

直接下一步放行,进入:

catch (Exception ex) {
    //4、不通过,响应401状态码
    response.setStatus(401);
    return false;
}

没有令牌就会返回401,我们现在需要获取令牌,进入swagger,调用接口的登录功能,底下有token,复制。

进入文档管理,全局参数设置,粘贴刚刚复制的token,参数类型为header,参数名称需要设为token,因为:

请求头中指定了参数名称(没有写死),在application.yml中有配置:

# 设置前端传递过来的令牌名称
admin-token-name: token
posted @ 2026-03-31 00:28  JDamaze  阅读(4)  评论(0)    收藏  举报