package com.ruoyi.system.service.impl; import com.ruoyi.common.utils.DateUtil; import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.mapper.SysUserOnlineMapper; import com.ruoyi.system.service.ISysUserOnlineService; import cn.hutool.core.util.ObjectUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; import java.util.List; /** * 在线用户 服务层处理 * * @author ruoyi */ @Service public class SysUserOnlineServiceImpl implements ISysUserOnlineService { private final SysUserOnlineMapper userOnlineDao; @Autowired public SysUserOnlineServiceImpl(SysUserOnlineMapper userOnlineDao) { this.userOnlineDao = userOnlineDao; } /** * 通过会话序号查询信息 * * @param sessionId 会话ID * @return 在线用户信息 */ @Override public SysUserOnline selectOnlineById(String sessionId) { return userOnlineDao.selectOnlineById(sessionId); } /** * 通过会话序号删除信息 * * @param sessionId 会话ID */ @Override public void deleteOnlineById(String sessionId) { SysUserOnline userOnline = selectOnlineById(sessionId); if (ObjectUtil.isNotNull(userOnline)) { userOnlineDao.deleteOnlineById(sessionId); } } /** * 通过会话序号删除信息 * * @param sessions 会话ID集合 */ @Override public void batchDeleteOnline(List<String> sessions) { sessions.forEach(sessionId -> { SysUserOnline userOnline = selectOnlineById(sessionId); if (ObjectUtil.isNotNull(userOnline)) { userOnlineDao.deleteOnlineById(sessionId); } }); } /** * 保存会话信息 * * @param online 会话信息 */ @Override public void saveOnline(SysUserOnline online) { userOnlineDao.saveOnline(online); } /** * 查询会话集合 * * @param userOnline 在线用户 */ @Override public List<SysUserOnline> selectUserOnlineList(SysUserOnline userOnline) { return userOnlineDao.selectUserOnlineList(userOnline); } /** * 强退用户 * * @param sessionId 会话ID */ @Override public void forceLogout(String sessionId) { userOnlineDao.deleteOnlineById(sessionId); } /** * 查询会话集合 * * @param expiredDate 失效日期 */ @Override public List<SysUserOnline> selectOnlineByExpired(Date expiredDate) { String lastAccessTime = DateUtil.formatDateTime(expiredDate); return userOnlineDao.selectOnlineByExpired(lastAccessTime); } }