上个小节我们完成了用户登陆的功能,既然有登陆就一定有退出登陆。包括我们之前在小程序上面注册的超级管理员,默认密码是abc123456,这个密码也是能修改的,所以本小节我们还要完成修改密码的功能。
在main.vue页面的导航区域右侧放置的是员工头像和姓名,当鼠标悬停在其上的时候,会自动弹出菜单,可以让用户修改密码或者退出系统。这节课我们先来把后端的代码给实现了,下节课再去弄前端的程序。
在TbUserDao.xml
文件中声明修改密码的SQL语句。由于退出系统不需要操作数据库,所以不需要用到持久层。
<update id="updatePassword" parameterType="HashMap"> UPDATE tb_user SET password = HEX(AES_ENCRYPT(#{newPassword}, username)) WHERE id = #{userId} AND password = HEX(AES_ENCRYPT(#{password}, username)) </update>
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
在TbUserDao.java
接口中定义抽象方法。
public interface TbUserDao { …… public int updatePassword(HashMap param); }
代码块预览 复制
- 1
- 2
- 3
- 4
在UserService.java
接口中声明抽象方法。
public interface UserService { …… public int updatePassword(HashMap param); }
代码块预览 复制
- 1
- 2
- 3
- 4
在UserServiceImpl.java
中实现抽象方法。
public class UserServiceImpl implements UserService { …… @Override public int updatePassword(HashMap param) { int rows = userDao.updatePassword(param); return rows; } }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
创建UpdatePasswordForm.java
类,用于保存前端提交的数据。
@Schema(description = "修改密码表单") @Data public class UpdatePasswordForm { @NotBlank(message = "password不能为空") @Pattern(regexp = "^[a-zA-Z0-9]{6,20}$",message = "password内容不正确") @Schema(description = "密码") String password; @NotBlank(message = "newPassword") @Pattern(regexp = "^[a-zA-Z0-9]{6,20}$",message = "newPassword内容不正确") @Schema(description = "密码") private String newPassword }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
在UserController.java
中声明退出系统和修改密码的两个Web方法。
public class UserController { …… @GetMapping("/logout") @Operation(summary = "退出系统") public R logout() { StpUtil.logout(); return R.ok(); } @PostMapping("/updatePassword") @SaCheckLogin @Operation(summary = "修改密码") public R updatePassword(@Valid @RequestBody UpdatePasswordForm form) { int userId = StpUtil.getLoginIdAsInt(); HashMap param = new HashMap() {{ put("userId", userId); put("password", form.getPassword()); put("newPassword", form.getNewPassword()); }}; int rows = userService.updatePassword(param); return R.ok().put("rows", rows); } }
代码块预览 复制
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23