From ab5684c1fdfbd53edf52aea9fc1a1e22a8cde6a2 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Tue, 02 Dec 2025 16:11:51 +0800
Subject: [PATCH] 在线用户监控修改模糊查询
---
ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 50 insertions(+), 5 deletions(-)
diff --git a/ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java b/ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java
index 6165bae..1cc4a66 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java
@@ -20,13 +20,13 @@
import com.ard.common.core.redis.RedisCache;
import com.ard.common.enums.BusinessType;
import com.ard.common.utils.StringUtils;
-import com.ard.system.system.domain.SysUserOnline;
-import com.ard.system.system.service.ISysUserOnlineService;
+import com.ard.system.domain.SysUserOnline;
+import com.ard.system.service.ISysUserOnlineService;
/**
* 在线用户监控
*
- * @author ruoyi
+ * @author ard
*/
@RestController
@RequestMapping("/monitor/online")
@@ -39,8 +39,8 @@
private RedisCache redisCache;
@PreAuthorize("@ss.hasPermi('monitor:online:list')")
- @GetMapping("/list")
- public TableDataInfo list(String ipaddr, String userName)
+ @GetMapping("/list1")
+ public TableDataInfo list1(String ipaddr, String userName)
{
Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
List<SysUserOnline> userOnlineList = new ArrayList<SysUserOnline>();
@@ -68,6 +68,51 @@
userOnlineList.removeAll(Collections.singleton(null));
return getDataTable(userOnlineList);
}
+ @PreAuthorize("@ss.hasPermi('monitor:online:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(String ipaddr, String userName)
+ {
+ startPage(); // ❗ Ruoyi 分页
+
+ Collection<String> keys = redisCache.keys(CacheConstants.LOGIN_TOKEN_KEY + "*");
+ List<SysUserOnline> resultList = new ArrayList<>();
+
+ boolean searchIp = StringUtils.isNotEmpty(ipaddr);
+ boolean searchName = StringUtils.isNotEmpty(userName);
+
+ for (String key : keys)
+ {
+ LoginUser loginUser = redisCache.getCacheObject(key);
+ if (loginUser == null || loginUser.getUser() == null)
+ continue;
+
+ // 转换成 SysUserOnline
+ SysUserOnline onlineUser = userOnlineService.loginUserToUserOnline(loginUser);
+ if (onlineUser == null) continue;
+
+ boolean match = true;
+
+ // ⭐ IP 模糊匹配
+ if (searchIp)
+ {
+ String userIp = loginUser.getIpaddr();
+ match = userIp != null && userIp.contains(ipaddr);
+ }
+
+ // ⭐ 用户名模糊匹配
+ if (match && searchName)
+ {
+ String nick = loginUser.getUsername();
+ match = nick != null && nick.contains(userName);
+ }
+
+ if (match)
+ resultList.add(onlineUser);
+ }
+
+ Collections.reverse(resultList);
+ return getDataTable(resultList);
+ }
/**
* 强退用户
--
Gitblit v1.9.3