package com.bcxin.sp.shiro.service; import com.bcxin.sp.shiro.session.OnlineSession; import com.bcxin.sp.work.entity.domain.user.UserOnline; import com.bcxin.sp.work.service.user.UserOnlineService; import org.apache.shiro.session.Session; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.io.Serializable; /** * 会话db操作处理 * * @author task */ @Component public class SysShiroService { @Autowired private UserOnlineService onlineService; /** * 删除会话 * * @param onlineSession 会话信息 */ public void deleteSession(OnlineSession onlineSession) { onlineService.deleteOnlineById(String.valueOf(onlineSession.getId())); } /** * 获取会话信息 * * @param sessionId * @return */ public Session getSession(Serializable sessionId) { UserOnline userOnline = onlineService.selectOnlineById(String.valueOf(sessionId)); return userOnline == null ? null : createSession(userOnline); } public Session createSession(UserOnline userOnline) { OnlineSession onlineSession = new OnlineSession(); if (userOnline != null){ onlineSession.setId(userOnline.getSessionId()); onlineSession.setHost(userOnline.getIpaddr()); onlineSession.setBrowser(userOnline.getBrowser()); onlineSession.setOs(userOnline.getOs()); onlineSession.setDeptName(userOnline.getDeptName()); onlineSession.setLoginName(userOnline.getLoginName()); onlineSession.setStartTimestamp(userOnline.getStartTimestamp()); onlineSession.setLastAccessTime(userOnline.getLastAccessTime()); onlineSession.setTimeout(userOnline.getExpireTime()); } return onlineSession; } }