From cb1e93d3f56cb5c1b9f8d2c6ee03a8142cd39c78 Mon Sep 17 00:00:00 2001 From: zlyx <1242874891@qq.com> Date: Tue, 30 Aug 2022 12:36:18 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E4=BF=AE=E6=AD=A3=20spring=20cache=20?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=9C=A8=E7=BA=BF=E7=94=A8=E6=88=B7=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E9=97=AE=E9=A2=98,=20=E5=9B=9E=E9=80=80=E4=B8=BA?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20redis=20=E5=B7=A5=E5=85=B7=E7=BC=93?= =?UTF-8?q?=E5=AD=98=20;=20update=20=E4=BC=98=E5=8C=96=20DictUtils,=20?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20CacheUtils=20=E7=BC=93=E5=AD=98=E5=AD=97?= =?UTF-8?q?=E5=85=B8=E6=95=B0=E6=8D=AE=20;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/listener/UserActionListener.java | 19 ++++++------- .../ruoyi/common/dict/utils/DictUtils.java | 28 ++++--------------- .../controller/SysUserOnlineController.java | 6 ++-- 3 files changed, 16 insertions(+), 37 deletions(-) diff --git a/ruoyi-auth/src/main/java/com/ruoyi/auth/listener/UserActionListener.java b/ruoyi-auth/src/main/java/com/ruoyi/auth/listener/UserActionListener.java index c434eca4..39fad0ad 100644 --- a/ruoyi-auth/src/main/java/com/ruoyi/auth/listener/UserActionListener.java +++ b/ruoyi-auth/src/main/java/com/ruoyi/auth/listener/UserActionListener.java @@ -6,11 +6,11 @@ import cn.dev33.satoken.stp.SaLoginModel; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; -import com.ruoyi.common.core.constant.CacheNames; +import com.ruoyi.common.core.constant.CacheConstants; import com.ruoyi.common.core.enums.UserType; import com.ruoyi.common.core.utils.ServletUtils; import com.ruoyi.common.core.utils.ip.AddressUtils; -import com.ruoyi.common.redis.utils.CacheUtils; +import com.ruoyi.common.redis.utils.RedisUtils; import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.system.api.domain.SysUserOnline; import com.ruoyi.system.api.model.LoginUser; @@ -18,6 +18,8 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.time.Duration; + /** * 用户行为 侦听器的实现 * @@ -51,12 +53,7 @@ public class UserActionListener implements SaTokenListener { if (ObjectUtil.isNotNull(user.getDeptName())) { userOnline.setDeptName(user.getDeptName()); } - String cacheNames = CacheNames.ONLINE_TOKEN; - if (tokenConfig.getTimeout() > 0) { - // 增加 ttl 过期时间 单位秒 - cacheNames = CacheNames.ONLINE_TOKEN + "#" + tokenConfig.getTimeout() + "s"; - } - CacheUtils.put(cacheNames, tokenValue, userOnline); + RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, userOnline, Duration.ofSeconds(tokenConfig.getTimeout())); log.info("user doLogin, useId:{}, token:{}", loginId, tokenValue); } else if (userType == UserType.APP_USER) { // app端 自行根据业务编写 @@ -68,7 +65,7 @@ public class UserActionListener implements SaTokenListener { */ @Override public void doLogout(String loginType, Object loginId, String tokenValue) { - CacheUtils.evict(CacheNames.ONLINE_TOKEN, tokenValue); + RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); log.info("user doLogout, useId:{}, token:{}", loginId, tokenValue); } @@ -77,7 +74,7 @@ public class UserActionListener implements SaTokenListener { */ @Override public void doKickout(String loginType, Object loginId, String tokenValue) { - CacheUtils.evict(CacheNames.ONLINE_TOKEN, tokenValue); + RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); log.info("user doLogoutByLoginId, useId:{}, token:{}", loginId, tokenValue); } @@ -86,7 +83,7 @@ public class UserActionListener implements SaTokenListener { */ @Override public void doReplaced(String loginType, Object loginId, String tokenValue) { - CacheUtils.evict(CacheNames.ONLINE_TOKEN, tokenValue); + RedisUtils.deleteObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue); log.info("user doReplaced, useId:{}, token:{}", loginId, tokenValue); } diff --git a/ruoyi-common/ruoyi-common-dict/src/main/java/com/ruoyi/common/dict/utils/DictUtils.java b/ruoyi-common/ruoyi-common-dict/src/main/java/com/ruoyi/common/dict/utils/DictUtils.java index 01d10e38..aed32124 100644 --- a/ruoyi-common/ruoyi-common-dict/src/main/java/com/ruoyi/common/dict/utils/DictUtils.java +++ b/ruoyi-common/ruoyi-common-dict/src/main/java/com/ruoyi/common/dict/utils/DictUtils.java @@ -1,11 +1,9 @@ package com.ruoyi.common.dict.utils; -import cn.hutool.core.util.ObjectUtil; -import com.ruoyi.common.core.constant.CacheConstants; -import com.ruoyi.common.redis.utils.RedisUtils; +import com.ruoyi.common.core.constant.CacheNames; +import com.ruoyi.common.redis.utils.CacheUtils; import com.ruoyi.system.api.domain.SysDictData; -import java.util.Collection; import java.util.List; /** @@ -21,7 +19,7 @@ public class DictUtils { * @param dictDatas 字典数据列表 */ public static void setDictCache(String key, List dictDatas) { - RedisUtils.setCacheObject(getCacheKey(key), dictDatas); + CacheUtils.put(CacheNames.SYS_DICT, key, dictDatas); } /** @@ -31,11 +29,7 @@ public class DictUtils { * @return dictDatas 字典数据列表 */ public static List getDictCache(String key) { - List dictDatas = RedisUtils.getCacheObject(getCacheKey(key)); - if (ObjectUtil.isNotNull(dictDatas)) { - return dictDatas; - } - return null; + return CacheUtils.get(CacheNames.SYS_DICT, key); } /** @@ -44,24 +38,14 @@ public class DictUtils { * @param key 字典键 */ public static void removeDictCache(String key) { - RedisUtils.deleteObject(getCacheKey(key)); + CacheUtils.evict(CacheNames.SYS_DICT, key); } /** * 清空字典缓存 */ public static void clearDictCache() { - Collection keys = RedisUtils.keys(CacheConstants.SYS_DICT_KEY + "*"); - RedisUtils.deleteObject(keys); + CacheUtils.clear(CacheNames.SYS_DICT); } - /** - * 设置cache key - * - * @param configKey 参数键 - * @return 缓存键key - */ - public static String getCacheKey(String configKey) { - return CacheConstants.SYS_DICT_KEY + configKey; - } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java index d4af40cc..eb721c5a 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysUserOnlineController.java @@ -4,7 +4,6 @@ import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.stp.StpUtil; import com.ruoyi.common.core.constant.CacheConstants; -import com.ruoyi.common.core.constant.CacheNames; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.core.utils.StreamUtils; import com.ruoyi.common.core.utils.StringUtils; @@ -12,7 +11,7 @@ import com.ruoyi.common.core.web.controller.BaseController; import com.ruoyi.common.log.annotation.Log; import com.ruoyi.common.log.enums.BusinessType; import com.ruoyi.common.mybatis.core.page.TableDataInfo; -import com.ruoyi.common.redis.utils.CacheUtils; +import com.ruoyi.common.redis.utils.RedisUtils; import com.ruoyi.system.api.domain.SysUserOnline; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; @@ -49,8 +48,7 @@ public class SysUserOnlineController extends BaseController { if (StpUtil.stpLogic.getTokenActivityTimeoutByToken(token) < 0) { continue; } - SysUserOnline dto = CacheUtils.get(CacheNames.ONLINE_TOKEN, token); - userOnlineList.add(dto); + userOnlineList.add(RedisUtils.getCacheObject(CacheConstants.ONLINE_TOKEN_KEY + token)); } if (StringUtils.isNotEmpty(ipaddr) && StringUtils.isNotEmpty(userName)) { userOnlineList = StreamUtils.filter(userOnlineList, userOnline ->