From 2d430d6c3287fa78adf58e1db39ee54b478293f7 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Sun, 9 Jun 2024 01:33:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=94=A8=E6=88=B7=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/SystemUserController.java | 8 +++++++ .../SystemUpdateUserPasswordRequestVO.java | 21 +++++++++++++++++++ .../server/web/service/SystemUserService.java | 4 ++++ .../service/impl/SystemUserServiceImpl.java | 21 +++++++++++++++---- 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/SystemUpdateUserPasswordRequestVO.java diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SystemUserController.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SystemUserController.java index cd1a20e5..c7f06c38 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SystemUserController.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/controller/SystemUserController.java @@ -5,6 +5,7 @@ import com.aizuda.snailjob.server.web.annotation.LoginRequired; import com.aizuda.snailjob.server.web.annotation.LoginUser; import com.aizuda.snailjob.server.web.annotation.RoleEnum; import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.SystemUpdateUserPasswordRequestVO; import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO; import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO; import com.aizuda.snailjob.server.web.model.request.UserSessionVO; @@ -83,4 +84,11 @@ public class SystemUserController { } return systemUserService.delUser(id); } + + @LoginRequired + @PutMapping("/update-user-password") + public void updateUserPassword(@RequestBody @Valid SystemUpdateUserPasswordRequestVO requestVO) { + systemUserService.updateUserPassword(requestVO); + } + } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/SystemUpdateUserPasswordRequestVO.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/SystemUpdateUserPasswordRequestVO.java new file mode 100644 index 00000000..2ecae01f --- /dev/null +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/model/request/SystemUpdateUserPasswordRequestVO.java @@ -0,0 +1,21 @@ +package com.aizuda.snailjob.server.web.model.request; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; +import org.springframework.web.bind.annotation.PutMapping; + +/** + * @author dhb52 + * @date 2024-06-09 + * @since 1.0.0 + */ +@Data +public class SystemUpdateUserPasswordRequestVO { + + @NotBlank(message = "原密码不能为空", groups = PutMapping.class) + private String oldPassword; + + @NotBlank(message = "新密码不能为空", groups = PutMapping.class) + private String newPassword; + +} diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SystemUserService.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SystemUserService.java index 644e0582..9140117d 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SystemUserService.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/SystemUserService.java @@ -1,6 +1,7 @@ package com.aizuda.snailjob.server.web.service; import com.aizuda.snailjob.server.web.model.base.PageResult; +import com.aizuda.snailjob.server.web.model.request.SystemUpdateUserPasswordRequestVO; import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO; import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO; import com.aizuda.snailjob.server.web.model.request.UserSessionVO; @@ -34,4 +35,7 @@ public interface SystemUserService { boolean delUser(Long id); List getSystemUserPermissionByUserName(Long id); + + void updateUserPassword(SystemUpdateUserPasswordRequestVO requestVO); + } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java index b58a42c4..a4f0b87c 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/SystemUserServiceImpl.java @@ -9,16 +9,14 @@ import com.aizuda.snailjob.common.core.util.StreamUtils; import com.aizuda.snailjob.server.common.exception.SnailJobServerException; import com.aizuda.snailjob.server.web.annotation.RoleEnum; import com.aizuda.snailjob.server.web.model.base.PageResult; -import com.aizuda.snailjob.server.web.model.request.SystemUserQueryVO; -import com.aizuda.snailjob.server.web.model.request.SystemUserRequestVO; -import com.aizuda.snailjob.server.web.model.request.UserPermissionRequestVO; -import com.aizuda.snailjob.server.web.model.request.UserSessionVO; +import com.aizuda.snailjob.server.web.model.request.*; import com.aizuda.snailjob.server.web.model.response.PermissionsResponseVO; import com.aizuda.snailjob.server.web.model.response.SystemUserResponseVO; import com.aizuda.snailjob.server.web.service.SystemUserService; import com.aizuda.snailjob.server.web.service.convert.NamespaceResponseVOConverter; import com.aizuda.snailjob.server.web.service.convert.PermissionsResponseVOConverter; import com.aizuda.snailjob.server.web.service.convert.SystemUserResponseVOConverter; +import com.aizuda.snailjob.server.web.util.UserSessionUtils; import com.aizuda.snailjob.template.datasource.persistence.mapper.NamespaceMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.SystemUserMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.SystemUserPermissionMapper; @@ -291,6 +289,21 @@ public class SystemUserServiceImpl implements SystemUserService { return response; } + @Override + public void updateUserPassword(SystemUpdateUserPasswordRequestVO requestVO) { + Long userId = UserSessionUtils.currentUserSession().getId(); + SystemUser systemUser = systemUserMapper.selectOne( + new LambdaQueryWrapper().eq(SystemUser::getId, userId)); + if (Objects.isNull(systemUser)) { + throw new SnailJobServerException("该用户不存在"); + } + if (!SecureUtil.sha256(requestVO.getOldPassword()).equals(systemUser.getPassword())) { + throw new SnailJobServerException("用户原密码错误"); + } + systemUser.setPassword(SecureUtil.sha256(requestVO.getNewPassword())); + Assert.isTrue(1 == systemUserMapper.updateById(systemUser), () -> new SnailJobServerException("更新用户密码失败")); + } + @Override @Transactional public boolean delUser(final Long id) {