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