Commit 5803258ed7c0b8c4c092557695f29709cc05e195

Authored by Lyon
1 parent 2cb7302d

移除超时的在线用户-完成

src/main/java/cn/iocoder/dashboard/modules/system/job/auth/SysUserSessionTimeoutJob.java
@@ -21,9 +21,9 @@ public class SysUserSessionTimeoutJob implements JobHandler { @@ -21,9 +21,9 @@ public class SysUserSessionTimeoutJob implements JobHandler {
21 21
22 @Override 22 @Override
23 public String execute(String param) throws Exception { 23 public String execute(String param) throws Exception {
24 - log.info("[execute][执行任务:{}]", "清除过期用户信息"); 24 + log.info("[execute][执行任务:{}]", "移除超时的在线用户");
25 long timeoutCount = sysUserSessionService.clearSessionTimeout(); 25 long timeoutCount = sysUserSessionService.clearSessionTimeout();
26 - log.info("[execute][执行任务:{}]", "清楚过期用户信息完成" + timeoutCount); 26 + log.info("[execute][执行任务:{}]", "移除超时的在线用户完成" + timeoutCount);
27 return null; 27 return null;
28 } 28 }
29 29
src/main/java/cn/iocoder/dashboard/modules/system/service/auth/impl/SysUserSessionServiceImpl.java
@@ -105,9 +105,11 @@ public class SysUserSessionServiceImpl implements SysUserSessionService { @@ -105,9 +105,11 @@ public class SysUserSessionServiceImpl implements SysUserSessionService {
105 105
106 @Override 106 @Override
107 public long clearSessionTimeout() { 107 public long clearSessionTimeout() {
  108 + // 获取db里已经超时的用户列表
108 Long timeoutCount = 0L; 109 Long timeoutCount = 0L;
109 - List<SysUserSessionDO> sessionDOS = userSessionMapper.selectSessionTimeout();  
110 - for (SysUserSessionDO sessionDO : sessionDOS) { 110 + List<SysUserSessionDO> sessionTimeoutDOS = userSessionMapper.selectSessionTimeout();
  111 + for (SysUserSessionDO sessionDO : sessionTimeoutDOS) {
  112 + // 确认已经超时,移出在线用户列表
111 if (loginUserRedisDAO.get(sessionDO.getId()) == null) { 113 if (loginUserRedisDAO.get(sessionDO.getId()) == null) {
112 timeoutCount += userSessionMapper.deleteById(sessionDO.getId()); 114 timeoutCount += userSessionMapper.deleteById(sessionDO.getId());
113 } 115 }