/** * projectName: zq-erp * fileName: UserCacheManager.java * packageName: com.matrix.system.common.init * date: 2021-10-25 16:58 * copyright(c) 2021 http://www.hydee.cn/ Inc. All rights reserved. */ package com.matrix.system.common.init; import com.matrix.core.constance.SystemErrorCode; import com.matrix.core.exception.GlobleException; import com.matrix.core.tools.StringUtils; import com.matrix.core.tools.UUIDUtil; import com.matrix.core.tools.WebUtil; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.Objects; /** * @version: V1.0 * @author: JiangYouYao * @className: UserCacheManager * @packageName: com.matrix.system.common.init * @description: 用户缓存管理 * @data: 2021-10-25 16:58 **/ @Component public class UserCacheManager { @Value("${debug}") private String isDebug; /** * 判断用户是否已经登录过 * * @return * @author JIANGYOUYAO * @email 935090232@qq.com * @date 2018年1月19日 * 会从http请求投中获取token进行验证 */ public boolean isUserLogin() { String token = getUserToken(); if (StringUtils.isNotBlank(token)) { return LocalCache.get(token) != null; } else { return false; } } /** * 在本地缓存中保存用户信息,并且返回保存的token * * @author JIANGYOUYAO * @email 935090232@qq.com * @date 2018年1月19日 * @return 返回保存用户信息的token */ public String saveUserInfo(Object obj) { String token = UUIDUtil.getRandomID(); LocalCache.save(token, obj); return token; } /** * 用户退出 * * @author:吕敬瑛 * @date:2018年1月19日下午3:17:14 */ public void loginOut() { LocalCache.remove(getUserToken()); } /** * 更新用户缓存 */ public void updateUserInfo(Object user) { LocalCache.save(getUserToken(),user); } /** * 获取登录用户信息,如果 获取失败将会抛出异常 * * @return * @author JIANGYOUYAO * @email 935090232@qq.com * @date 2018年1月19日 */ public T getLoginUser() { String userToken = getUserToken(); if (userToken != null) { T user = LocalCache.get(userToken); if (Objects.nonNull(user)) { //重新设置key过期时间 LocalCache.resetExpire(userToken); return user; } else { throw new GlobleException(SystemErrorCode.REQUEST_INVALID); } } else { throw new GlobleException(SystemErrorCode.REQUEST_INVALID); } } public String getUserToken() { String token = WebUtil.getRequest().getHeader("token"); // debug模式可以从url参数中获取token if (StringUtils.isBlank(token) && "true".equals(isDebug)) { if (token == null) { token = WebUtil.getRequest().getParameter("token"); } } return token; } }