update 添加用户解锁功能

This commit is contained in:
AprilWind
2026-03-18 13:18:30 +08:00
parent 72ac989614
commit b4917a88b2
2 changed files with 30 additions and 27 deletions

View File

@@ -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<Void> unlock(@PathVariable("userName") String userName) {
String loginName = CacheConstants.PWD_ERR_CNT_KEY + userName;
if (RedisUtils.hasKey(loginName)) {
RedisUtils.deleteObject(loginName);
}
return R.ok();
}
}

View File

@@ -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<Void> 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();
}
/**
* 根据用户编号获取授权角色
*