package com.estate.expert.admin.service.impl; import com.estate.expert.admin.domain.session.UserSession; import com.estate.expert.admin.domain.session.UserSessionRepository; import com.estate.expert.admin.enums.BizResultCode; import com.estate.expert.admin.service.UserSessionService; import com.estate.expert.common.domain.Session; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.time.LocalDateTime; /** * 用户会话服务实现 * @author ligf * @date 2023-09-02 **/ @Service public class UserSessionServiceImpl implements UserSessionService { /** * 用户会话仓库 */ @Resource private UserSessionRepository userSessionRepository; /** * 触碰会话 * @param token 会话token * @return 会话 */ @Override public Session touchSession(String token) { LocalDateTime now = LocalDateTime.now(); //查询数据库验证token的有效性 UserSession userSession = userSessionRepository.findByTokenOrderByIdDesc(token).orElse(null); BizResultCode.SESSION_INVALID.check(userSession == null); Session session = new Session();//convertToSession(userSession); session.setToken(token); var user = userSession.getUser(); session.setUser(user); session.setUserId(user.getId()); session.setClientCode(userSession.getClientCode()); session.setLastAccessTime(userSession.getLastAccessTime()); // sessionCacheService.cache(token, session); return session; } }