From 4351e71d782741143a98f86f6648acd16689165f Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Fri, 27 May 2022 19:48:02 +0800 Subject: [PATCH] Merge branch 'developer' into hive2.0 --- zq-erp/src/main/java/com/matrix/system/common/init/UserCacheManager.java | 122 ++++++++++++++++++++++++++++++++++++++++ 1 files changed, 122 insertions(+), 0 deletions(-) diff --git a/zq-erp/src/main/java/com/matrix/system/common/init/UserCacheManager.java b/zq-erp/src/main/java/com/matrix/system/common/init/UserCacheManager.java new file mode 100644 index 0000000..18b0ae8 --- /dev/null +++ b/zq-erp/src/main/java/com/matrix/system/common/init/UserCacheManager.java @@ -0,0 +1,122 @@ +/** + * 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.alibaba.fastjson.TypeReference; +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 com.matrix.system.hive.bean.SysVipInfo; +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,new TypeReference<String>(){}) != 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> T getLoginUser() { + String userToken = getUserToken(); + if (userToken != null) { + T user = LocalCache.get(userToken,new TypeReference<SysVipInfo>(){}); + 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; + } + + +} \ No newline at end of file -- Gitblit v1.9.1