From e1b94d6a28157b7658d7020851e2db0508099b1a Mon Sep 17 00:00:00 2001 From: AprilWind <2100166581@qq.com> Date: 星期五, 19 四月 2024 13:00:57 +0800 Subject: [PATCH] !517 在线设备管理 * update 在线登录设备管理与前端请求一致 * update 在线登录设备管理增加退出日志 * add 新增在线登录设备管理 --- ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java | 1 - ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java index def448d..9b08c2d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/SysUserOnlineController.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.stream.Collectors; /** * 鍦ㄧ嚎鐢ㄦ埛鐩戞帶 @@ -87,4 +88,43 @@ } return R.ok(); } + + /** + * 鑾峰彇褰撳墠鐢ㄦ埛鐧诲綍鍦ㄧ嚎璁惧 + */ + @GetMapping() + public TableDataInfo<SysUserOnline> getInfo() { + // 鑾峰彇鎸囧畾璐﹀彿 id 鐨� token 闆嗗悎 + List<String> tokenIds = StpUtil.getTokenValueListByLoginId(StpUtil.getLoginIdAsString()); + List<UserOnlineDTO> userOnlineDTOList = tokenIds.stream() + .filter(token -> StpUtil.stpLogic.getTokenActiveTimeoutByToken(token) >= -1) + .map(token -> (UserOnlineDTO) RedisUtils.getCacheObject(CacheConstants.ONLINE_TOKEN_KEY + token)) + .collect(Collectors.toList()); + //澶嶅埗鍜屽鐞� SysUserOnline 瀵硅薄鍒楄〃 + Collections.reverse(userOnlineDTOList); + userOnlineDTOList.removeAll(Collections.singleton(null)); + List<SysUserOnline> userOnlineList = BeanUtil.copyToList(userOnlineDTOList, SysUserOnline.class); + return TableDataInfo.build(userOnlineList); + } + + /** + * 寮洪��褰撳墠鍦ㄧ嚎璁惧 + * + * @param tokenId token鍊� + */ + @Log(title = "鍦ㄧ嚎璁惧", businessType = BusinessType.FORCE) + @PostMapping("/{tokenId}") + public R<Void> remove(@PathVariable("tokenId") String tokenId) { + try { + // 鑾峰彇鎸囧畾璐﹀彿 id 鐨� token 闆嗗悎 + List<String> keys = StpUtil.getTokenValueListByLoginId(StpUtil.getLoginIdAsString()); + keys.stream() + .filter(key -> key.equals(tokenId)) + .findFirst() + .ifPresent(key -> StpUtil.kickoutByTokenValue(tokenId)); + } catch (NotLoginException ignored) { + } + return R.ok(); + } + } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java index 6def906..ba30eb6 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/domain/SysUserOnline.java @@ -7,7 +7,6 @@ * * @author Lion Li */ - @Data public class SysUserOnline { -- Gitblit v1.9.3