黑马程序员2023最新Java项目实战《苍穹外卖》,最适合新手的SpringBo

看到视频好像没教修改员工密码的接口,Java萌新来放个代码。
先放个图片版清晰一点:

可复制代码版:
@PutMapping("/editPassword") @ApiOperation(value = "修改员工密码") public Result updatePassword(@RequestBody PasswordEditDTO passwordEditDTO){ //1.根据id查出员工信息 //先把当前员工id搞出来封装进EmployeeDTO里 Long currentId = BaseContext.getCurrentId(); passwordEditDTO.setEmpId(currentId); //通过id查出当前员工的信息 Employee employee = employeeService.getById(currentId); //2.修改密码 String oldPassword=passwordEditDTO.getOldPassword(); oldPassword= DigestUtils.md5DigestAsHex(oldPassword.getBytes()); //如果原密码正确,那么修改密码 if (oldPassword.equals(employee.getPassword())){ employee.setPassword(DigestUtils.md5DigestAsHex(passwordEditDTO.getNewPassword().getBytes())); employeeService.updateById(employee); }else { return Result.error(MessageConstant.OLDPASSWORD_ERROR); } return Result.success(MessageConstant.UPDATE_SUCCESS); }
稍微讲讲,我的思路就是获取到当前员工的id,查出来员工数据,然后对比前端用户输入的原密码和数据库里的是否一致,一致就修改成功,不一致就error自己定义一个常亮就可以。
注意比对密码时用equals方法而不是==,我一开始犯了这个错误,前端密码输对了也给我报错,找了半天发现是这个问题,这也是一个很基础的问题了,属于面试八股的Java基础部分,==比较引用数据类型时,会比较地址值,所以尽管密码一样还会报错。