From b4917a88b2fb85c543f368cc61fb7ed75e5c6aa3 Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: Wed, 18 Mar 2026 13:18:30 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E6=B7=BB=E5=8A=A0=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E8=A7=A3=E9=94=81=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../monitor/SysLoginInfoController.java | 25 ++------------- .../controller/system/SysUserController.java | 32 ++++++++++++++++--- 2 files changed, 30 insertions(+), 27 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLoginInfoController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLoginInfoController.java index 2db084ba9..09df7635c 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLoginInfoController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysLoginInfoController.java @@ -4,15 +4,12 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import com.baomidou.lock.annotation.Lock4j; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; -import org.dromara.common.core.constant.CacheConstants; +import org.dromara.common.core.domain.PageResult; import org.dromara.common.core.domain.R; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.common.redis.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.core.domain.PageResult; -import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.web.core.BaseController; import org.dromara.system.domain.bo.SysLoginInfoBo; import org.dromara.system.domain.vo.SysLoginInfoVo; @@ -52,7 +49,7 @@ public class SysLoginInfoController extends BaseController { * 导出系统访问记录列表。 * * @param loginInfo 查询条件 - * @param response HTTP 响应 + * @param response HTTP 响应 */ @Log(title = "登录日志", businessType = BusinessType.EXPORT) @SaCheckPermission("monitor:logininfo:export") @@ -89,22 +86,4 @@ public class SysLoginInfoController extends BaseController { return R.ok(); } - /** - * 清除指定用户的登录失败锁定状态。 - * - * @param userName 用户名 - * @return 操作结果 - */ - @SaCheckPermission("monitor:logininfo:unlock") - @Log(title = "账户解锁", businessType = BusinessType.OTHER) - @RepeatSubmit() - @GetMapping("/unlock/{userName}") - public R unlock(@PathVariable("userName") String userName) { - String loginName = CacheConstants.PWD_ERR_CNT_KEY + userName; - if (RedisUtils.hasKey(loginName)) { - RedisUtils.deleteObject(loginName); - } - return R.ok(); - } - } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java index 238712106..214a61b68 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java @@ -8,7 +8,9 @@ import cn.hutool.crypto.digest.BCrypt; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotNull; import lombok.RequiredArgsConstructor; +import org.dromara.common.core.constant.CacheConstants; import org.dromara.common.core.constant.SystemConstants; +import org.dromara.common.core.domain.PageResult; import org.dromara.common.core.domain.R; import org.dromara.common.core.domain.model.LoginUser; import org.dromara.common.core.utils.StreamUtils; @@ -16,12 +18,12 @@ import org.dromara.common.core.utils.StringUtils; import org.dromara.common.encrypt.annotation.ApiEncrypt; import org.dromara.common.excel.core.ExcelResult; import org.dromara.common.excel.utils.ExcelUtil; -import org.dromara.common.redis.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; -import org.dromara.common.core.domain.PageResult; import org.dromara.common.mybatis.helper.DataPermissionHelper; +import org.dromara.common.redis.annotation.RepeatSubmit; +import org.dromara.common.redis.utils.RedisUtils; import org.dromara.common.satoken.utils.LoginHelper; import org.dromara.common.web.core.BaseController; import org.dromara.system.domain.bo.SysDeptBo; @@ -61,7 +63,7 @@ public class SysUserController extends BaseController { /** * 分页查询用户列表。 * - * @param user 用户查询条件 + * @param user 用户查询条件 * @param pageQuery 分页参数 * @return 用户分页列表 */ @@ -74,7 +76,7 @@ public class SysUserController extends BaseController { /** * 导出符合条件的用户列表。 * - * @param user 用户查询条件 + * @param user 用户查询条件 * @param response HTTP 响应 */ @Log(title = "用户管理", businessType = BusinessType.EXPORT) @@ -270,6 +272,28 @@ public class SysUserController extends BaseController { return toAjax(userService.updateUserStatus(user.getUserId(), user.getStatus())); } + /** + * 解锁用户 + * + * @param userId 用户ID + * @return 操作结果 + */ + @SaCheckPermission("system:user:unlock") + @Log(title = "用户解锁", businessType = BusinessType.OTHER) + @RepeatSubmit() + @GetMapping("/unlock/{userId}") + public R unlock(@PathVariable Long userId) { + SysUserVo user = userService.selectUserById(userId); + if (ObjectUtil.isNull(user)) { + return R.fail("用户不存在"); + } + String loginName = CacheConstants.PWD_ERR_CNT_KEY + user.getUserName(); + if (RedisUtils.hasKey(loginName)) { + RedisUtils.deleteObject(loginName); + } + return R.ok(); + } + /** * 根据用户编号获取授权角色 *