diff --git a/src/main/java/com/gaotao/modules/sys/controller/SysUserController.java b/src/main/java/com/gaotao/modules/sys/controller/SysUserController.java index 8e22bf6..d59c605 100644 --- a/src/main/java/com/gaotao/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/gaotao/modules/sys/controller/SysUserController.java @@ -15,6 +15,7 @@ import com.gaotao.modules.sys.entity.SysUserEntity; import com.gaotao.modules.sys.form.PasswordForm; import com.gaotao.modules.sys.service.SysUserRoleService; import com.gaotao.modules.sys.service.SysUserService; +import com.gaotao.modules.sys.service.SysUserTokenService; import com.gaotao.modules.warehouse.entity.AccessWarehouse; import com.gaotao.modules.warehouse.service.WarehouseService; import org.apache.commons.lang.ArrayUtils; @@ -39,6 +40,8 @@ public class SysUserController extends AbstractController { private SysUserRoleService sysUserRoleService; @Autowired private WarehouseService warehouseService; + @Autowired + private SysUserTokenService sysUserTokenService; /** @@ -246,4 +249,36 @@ public class SysUserController extends AbstractController { return R.error("获取仓库授权失败"); } } + + /** + * @Description 强制踢出用户登录 - rqrq + * @param params 包含userId的参数 + * @return R + * @author rqrq + * @date 2026/02/26 + */ + @SysLog("踢出用户登录") + @PostMapping("/forceLogout") + public R forceLogout(@RequestBody Map params) throws Exception { + Long userId = Long.parseLong(params.get("userId").toString()); + + if (userId == null) { + return R.error("用户ID不能为空"); + } + + // 不允许踢出超级管理员 + // if (userId == Constant.SUPER_ADMIN) { + // return R.error("不能踢出超级管理员"); + // } + + // 不允许踢出自己 + if (userId.equals(getUserId())) { + return R.error("不能踢出自己"); + } + + // 调用service清空用户token - rqrq + sysUserTokenService.forceLogout(userId); + + return R.ok("已成功踢出该用户"); + } } diff --git a/src/main/java/com/gaotao/modules/sys/service/SysUserTokenService.java b/src/main/java/com/gaotao/modules/sys/service/SysUserTokenService.java index 3799cf8..d79820a 100644 --- a/src/main/java/com/gaotao/modules/sys/service/SysUserTokenService.java +++ b/src/main/java/com/gaotao/modules/sys/service/SysUserTokenService.java @@ -32,4 +32,12 @@ public interface SysUserTokenService extends IService { */ boolean isUserLoggedIn(long userId); + /** + * @Description 强制用户退出登录(清空token)- rqrq + * @param userId 用户ID + * @author rqrq + * @date 2026/02/26 + */ + void forceLogout(long userId); + } diff --git a/src/main/java/com/gaotao/modules/sys/service/impl/SysUserTokenServiceImpl.java b/src/main/java/com/gaotao/modules/sys/service/impl/SysUserTokenServiceImpl.java index db8c5fb..5d39583 100644 --- a/src/main/java/com/gaotao/modules/sys/service/impl/SysUserTokenServiceImpl.java +++ b/src/main/java/com/gaotao/modules/sys/service/impl/SysUserTokenServiceImpl.java @@ -83,4 +83,14 @@ public class SysUserTokenServiceImpl extends ServiceImpl