From 1ced64b627c79dcb51be852a7974f8743460df79 Mon Sep 17 00:00:00 2001
From: zhaowenyu <35589726@qq.com>
Date: Tue, 02 Dec 2025 16:29:39 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev

---
 ard-admin/src/main/java/com/ard/web/controller/monitor/SysUserOnlineController.java |   49 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 47 insertions(+), 2 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 504a20b..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
@@ -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