diff --git a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/controller/admin/auth/AuthController.java b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/controller/admin/auth/AuthController.java index 58e969b..8afe498 100644 --- a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/controller/admin/auth/AuthController.java +++ b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/controller/admin/auth/AuthController.java @@ -20,7 +20,7 @@ import org.agt.module.system.controller.admin.auth.vo.AuthLoginReqVO; import org.agt.module.system.controller.admin.auth.vo.AuthLoginRespVO; import org.agt.module.system.controller.admin.auth.vo.AuthPermissionInfoRespVO; import org.agt.module.system.controller.admin.auth.vo.AuthRegisterReqVO; -import org.agt.module.system.controller.admin.auth.vo.AuthResetPasswordReqVO; +import org.agt.module.system.controller.admin.auth.vo.AuthResetPasswordByNameReqVO; import org.agt.module.system.controller.admin.auth.vo.AuthSmsLoginReqVO; import org.agt.module.system.controller.admin.auth.vo.AuthSmsSendReqVO; import org.agt.module.system.controller.admin.auth.vo.AuthSocialLoginReqVO; @@ -164,8 +164,8 @@ public class AuthController { @PostMapping("/reset-password") @PermitAll @Operation(summary = "重置密码") - public CommonResult resetPassword(@RequestBody @Valid AuthResetPasswordReqVO reqVO) { - authService.resetPassword(reqVO); + public CommonResult resetPassword(@RequestBody @Valid AuthResetPasswordByNameReqVO reqVO) { + authService.resetPasswordByName(reqVO); return success(true); } diff --git a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/controller/admin/auth/vo/AuthResetPasswordByNameReqVO.java b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/controller/admin/auth/vo/AuthResetPasswordByNameReqVO.java new file mode 100644 index 0000000..777a1b4 --- /dev/null +++ b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/controller/admin/auth/vo/AuthResetPasswordByNameReqVO.java @@ -0,0 +1,26 @@ +package org.agt.module.system.controller.admin.auth.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.hibernate.validator.constraints.Length; + +@Schema(description = "管理后台 - 短信重置账号密码 Request VO") +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class AuthResetPasswordByNameReqVO { + + @Schema(description = "密码", requiredMode = Schema.RequiredMode.REQUIRED, example = "1234") + @NotEmpty(message = "密码不能为空") + @Length(min = 4, max = 16, message = "密码长度为 4-16 位") + private String password; + + @Schema(description = "用户名称", requiredMode = Schema.RequiredMode.REQUIRED, example = "test") + @NotEmpty(message = "用户名称不能为空") + private String username; +} \ No newline at end of file diff --git a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthService.java b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthService.java index 1d0b445..861442f 100644 --- a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthService.java +++ b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthService.java @@ -84,4 +84,11 @@ public interface AdminAuthService { */ void resetPassword(AuthResetPasswordReqVO reqVO); + /** + * 通过用户名称重置密码 + * + * @param reqVO 密码信息 + */ + void resetPasswordByName(AuthResetPasswordByNameReqVO reqVO); + } diff --git a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthServiceImpl.java b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthServiceImpl.java index e5dd405..0ca08ff 100644 --- a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthServiceImpl.java +++ b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/auth/AdminAuthServiceImpl.java @@ -1,6 +1,14 @@ package org.agt.module.system.service.auth; import cn.hutool.core.util.ObjectUtil; +import com.anji.captcha.model.common.ResponseModel; +import com.anji.captcha.model.vo.CaptchaVO; +import com.anji.captcha.service.CaptchaService; +import com.google.common.annotations.VisibleForTesting; +import jakarta.annotation.Resource; +import jakarta.validation.Validator; +import lombok.Setter; +import lombok.extern.slf4j.Slf4j; import org.agt.framework.common.enums.CommonStatusEnum; import org.agt.framework.common.enums.UserTypeEnum; import org.agt.framework.common.util.monitor.TracerUtils; @@ -24,14 +32,6 @@ import org.agt.module.system.service.member.MemberService; import org.agt.module.system.service.oauth2.OAuth2TokenService; import org.agt.module.system.service.social.SocialUserService; import org.agt.module.system.service.user.AdminUserService; -import com.anji.captcha.model.common.ResponseModel; -import com.anji.captcha.model.vo.CaptchaVO; -import com.anji.captcha.service.CaptchaService; -import com.google.common.annotations.VisibleForTesting; -import jakarta.annotation.Resource; -import jakarta.validation.Validator; -import lombok.Setter; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -104,6 +104,11 @@ public class AdminAuthServiceImpl implements AdminAuthService { // 使用账号密码,进行登录 AdminUserDO user = authenticate(reqVO.getUsername(), reqVO.getPassword()); + // 首次登录不返回token + if (user.getLoginDate() == null) { + return new AuthLoginRespVO(); + } + // 如果 socialType 非空,说明需要绑定社交用户 if (reqVO.getSocialType() != null) { socialUserService.bindSocialUser(new SocialUserBindReqDTO(user.getId(), getUserType().getValue(), @@ -300,4 +305,15 @@ public class AdminAuthServiceImpl implements AdminAuthService { userService.updateUserPassword(userByMobile.getId(), reqVO.getPassword()); } + + @Override + @Transactional(rollbackFor = Exception.class) + public void resetPasswordByName(AuthResetPasswordByNameReqVO reqVO) { + AdminUserDO user = userService.getUserByUsername(reqVO.getUsername()); + if (user == null) { + throw exception(USER_NOT_EXISTS); + } + + userService.updateUserPassword(user.getId(), reqVO.getPassword()); + } } diff --git a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/user/AdminUserServiceImpl.java b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/user/AdminUserServiceImpl.java index ee3ef67..b673d2d 100644 --- a/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/user/AdminUserServiceImpl.java +++ b/agt-module-system/agt-module-system-server/src/main/java/org/agt/module/system/service/user/AdminUserServiceImpl.java @@ -217,6 +217,7 @@ public class AdminUserServiceImpl implements AdminUserService { AdminUserDO updateObj = new AdminUserDO(); updateObj.setId(id); updateObj.setPassword(encodePassword(password)); // 加密密码 + updateObj.setLoginDate(LocalDateTime.now()); userMapper.updateById(updateObj); // 3. 记录操作日志上下文