diff --git a/src/main/java/com/example/demo/service/AdminService.java b/src/main/java/com/example/demo/service/AdminService.java index 5001d7f..106b9a3 100644 --- a/src/main/java/com/example/demo/service/AdminService.java +++ b/src/main/java/com/example/demo/service/AdminService.java @@ -18,4 +18,6 @@ public interface AdminService { String getId(String account); Result updatePassword(Password password); + + Result resetPassword(Password password); } diff --git a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java index 0ff080d..a880423 100644 --- a/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java +++ b/src/main/java/com/example/demo/serviceImpl/AdminServiceImpl.java @@ -137,4 +137,42 @@ public class AdminServiceImpl implements AdminService { return Result.error("密码更新失败"); } } + + + + @Override + public Result resetPassword(Password password) { + + String newPassword = password.getNewPassword(); + if(newPassword == null ||password.getAccount() == null) { + return Result.error("输入不能为空"); + } + + // 检查新密码是否符合复杂度要求 + if (!PASSWORD_PATTERN.matcher(newPassword).matches()) { + return Result.error("新密码必须为8-16位数字、字母或符号组成,且至少包含其中两种"); + } + if(adminMapper.getAdmin(password.getAccount())==null) + { + return Result.error("用户不存在"); + } + try { + // 获取认证后的用户信息 + Admin admin = adminMapper.getAdmin(password.getAccount()); + + BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); + // 使用Spring管理的密码编码器(不要手动new) + String encodedPassword = passwordEncoder.encode(newPassword); + + // 更新数据库中的密码 + admin.setPassword(encodedPassword); + admin.setUpdateTime(new Date()); // 更新修改时间 + adminMapper.updatePassword(admin); + + return Result.success("密码重置成功"); + } + catch (Exception e) { + return Result.error("密码重置失败"); + } + } } \ No newline at end of file