From 162d2e77825403f147466268ca6d1d12188dc333 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Tue, 22 Oct 2024 16:40:33 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=87=AA=E8=BA=AB=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bunny/dao/pojo/result/ResultCodeEnum.java | 1 + .../services/controller/UserController.java | 21 ++++++--- .../bunny/services/service/UserService.java | 7 +++ .../service/impl/UserServiceImpl.java | 43 ++++++++++++++++--- 4 files changed, 60 insertions(+), 12 deletions(-) diff --git a/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java b/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java index 3f5fab8..bbbb9ff 100644 --- a/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java +++ b/dao/src/main/java/cn/bunny/dao/pojo/result/ResultCodeEnum.java @@ -45,6 +45,7 @@ public enum ResultCodeEnum { DATA_NOT_EXIST(206, "数据不存在"), USER_IS_EMPTY(206, "用户不存在"), FILE_NOT_EXIST(206, "文件不存在"), + NEW_PASSWORD_SAME_OLD_PASSWORD(206, "新密码不能和旧密码相同"), // 身份过期 208 LOGIN_AUTH(208, "请先登陆"), diff --git a/service/src/main/java/cn/bunny/services/controller/UserController.java b/service/src/main/java/cn/bunny/services/controller/UserController.java index 0a1cbc0..0a92976 100644 --- a/service/src/main/java/cn/bunny/services/controller/UserController.java +++ b/service/src/main/java/cn/bunny/services/controller/UserController.java @@ -77,6 +77,20 @@ public class UserController { return Result.success(ResultCodeEnum.UPDATE_SUCCESS); } + @Operation(summary = "更新本地用户密码", description = "更新本地用户密码") + @PutMapping("noManage/updateUserPasswordByLocalUser") + public Result updateUserPasswordByLocalUser(String password) { + userService.updateUserPasswordByLocalUser(password); + return Result.success(ResultCodeEnum.UPDATE_SUCCESS); + } + + @Operation(summary = "管理员修改用户密码", description = "管理员修改管理员用户密码") + @PutMapping("updateUserPasswordByAdmin") + public Result updateUserPasswordByAdmin(@Valid @RequestBody AdminUserUpdateWithPasswordDto dto) { + userService.updateUserPasswordByAdmin(dto); + return Result.success(ResultCodeEnum.UPDATE_SUCCESS); + } + @Operation(summary = "修改用户状态", description = "管理员修改用户状态") @PutMapping("updateUserStatusByAdmin") public Result updateUserStatusByAdmin(@Valid @RequestBody AdminUserUpdateUserStatusDto dto) { @@ -84,13 +98,6 @@ public class UserController { return Result.success(ResultCodeEnum.UPDATE_SUCCESS); } - @Operation(summary = "修改管理员用户密码", description = "管理员修改管理员用户密码") - @PutMapping("updateUserPasswordByAdmin") - public Result updateUserPasswordByAdmin(@Valid @RequestBody AdminUserUpdateWithPasswordDto dto) { - userService.updateUserPasswordByAdmin(dto); - return Result.success(ResultCodeEnum.UPDATE_SUCCESS); - } - @Operation(summary = "修改用户头像", description = "管理员修改用户头像") @PutMapping("uploadAvatarByAdmin") public Result uploadAvatarByAdmin(@Valid UserUpdateWithAvatarDto dto) { diff --git a/service/src/main/java/cn/bunny/services/service/UserService.java b/service/src/main/java/cn/bunny/services/service/UserService.java index bbdbf95..9d8d594 100644 --- a/service/src/main/java/cn/bunny/services/service/UserService.java +++ b/service/src/main/java/cn/bunny/services/service/UserService.java @@ -129,4 +129,11 @@ public interface UserService extends IService { * @param dto 用户信息 */ void updateAdminUserByLocalUser(AdminUserUpdateByLocalUserDto dto); + + /** + * * 更新本地用户密码 + * + * @param password 更新本地用户密码 + */ + void updateUserPasswordByLocalUser(@Valid String password); } diff --git a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java index a6cdb5b..64e61f4 100644 --- a/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java +++ b/service/src/main/java/cn/bunny/services/service/impl/UserServiceImpl.java @@ -202,15 +202,15 @@ public class UserServiceImpl extends ServiceImpl implemen AdminUser adminUser = getOne(Wrappers.lambdaQuery().eq(AdminUser::getId, userId)); // 判断是否存在这个用户 - if (adminUser == null) { - throw new BunnyException(ResultCodeEnum.USER_IS_EMPTY); - } + if (adminUser == null) throw new BunnyException(ResultCodeEnum.USER_IS_EMPTY); // 判断新密码是否与旧密码相同 - if (adminUser.getPassword().equals(md5Password)) { + if (adminUser.getPassword().equals(md5Password)) throw new BunnyException(ResultCodeEnum.UPDATE_NEW_PASSWORD_SAME_AS_OLD_PASSWORD); - } + // 删除Redis中登录用户信息 + redisTemplate.delete(RedisUserConstant.getAdminLoginInfoPrefix(adminUser.getEmail())); + // 更新用户密码 adminUser = new AdminUser(); adminUser.setPassword(md5Password); @@ -348,6 +348,39 @@ public class UserServiceImpl extends ServiceImpl implemen updateById(adminUser); } + /** + * * 更新本地用户密码 + * + * @param password 更新本地用户密码 + */ + @Override + public void updateUserPasswordByLocalUser(@Valid String password) { + // 根据当前用户查询用户信息 + Long userId = BaseContext.getUserId(); + AdminUser adminUser = getOne(Wrappers.lambdaQuery().eq(AdminUser::getId, userId)); + + // 判断用户是否存在 + if (adminUser == null) throw new BunnyException(ResultCodeEnum.USER_IS_EMPTY); + + // 数据库中的密码 + String dbPassword = adminUser.getPassword(); + password = DigestUtils.md5DigestAsHex(password.getBytes()); + + // 判断数据库中密码是否和更新用户密码相同 + if (dbPassword.equals(password)) throw new BunnyException(ResultCodeEnum.NEW_PASSWORD_SAME_OLD_PASSWORD); + + // 删除Redis中登录用户信息 + redisTemplate.delete(RedisUserConstant.getAdminLoginInfoPrefix(adminUser.getEmail())); + + // 更新用户密码 + adminUser = new AdminUser(); + adminUser.setId(userId); + adminUser.setPassword(password); + updateById(adminUser); + + + } + /** * * 用户信息 服务实现类 *