From f9a9431958e58903d97a86cd08497165ae77beaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=96=AF=E7=8B=82=E7=9A=84=E7=8B=AE=E5=AD=90Li?= <15040126243@163.com> Date: Sun, 14 Aug 2022 01:49:05 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E4=BC=98=E5=8C=96=20pr215=20=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E4=B8=80=E4=BA=9B=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/system/SysOssController.java | 2 +- .../com/ruoyi/common/constant/CacheNames.java | 10 ++++++++ .../utils/{cache => redis}/CacheUtils.java | 23 +++++++++++++++---- .../com/ruoyi/oss/constant/OssConstant.java | 14 ++--------- .../com/ruoyi/oss/factory/OssFactory.java | 12 +++++----- .../ruoyi/system/service/ISysOssService.java | 2 +- .../service/impl/SysConfigServiceImpl.java | 2 +- .../service/impl/SysDictDataServiceImpl.java | 2 +- .../service/impl/SysDictTypeServiceImpl.java | 2 +- .../service/impl/SysOssConfigServiceImpl.java | 8 +++---- .../service/impl/SysOssServiceImpl.java | 19 +++++++-------- 11 files changed, 54 insertions(+), 42 deletions(-) rename ruoyi-common/src/main/java/com/ruoyi/common/utils/{cache => redis}/CacheUtils.java (65%) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java index f3c3cd9d7..d15a13d35 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java @@ -96,7 +96,7 @@ public class SysOssController extends BaseController { @SaCheckPermission("system:oss:download") @GetMapping("/download/{ossId}") public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { - SysOss sysOss = iSysOssService.getById(ossId); + SysOssVo sysOss = iSysOssService.getById(ossId); if (ObjectUtil.isNull(sysOss)) { throw new ServiceException("文件数据不存在!"); } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java index d36818bb9..591ca2546 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java @@ -30,9 +30,19 @@ public interface CacheNames { */ String SYS_DICT = "sys_dict"; + /** + * OSS内容 + */ + String SYS_OSS = "sys_oss#30d"; + /** * OSS配置 */ String SYS_OSS_CONFIG = "sys_oss_config"; + /** + * 在线用户 + */ + String ONLINE_TOKEN = "online_tokens"; + } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/cache/CacheUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java similarity index 65% rename from ruoyi-common/src/main/java/com/ruoyi/common/utils/cache/CacheUtils.java rename to ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java index 6f77ae8b8..9e0b09b07 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/cache/CacheUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java @@ -1,10 +1,14 @@ -package com.ruoyi.common.utils.cache; +package com.ruoyi.common.utils.redis; import com.ruoyi.common.utils.spring.SpringUtils; import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.redisson.api.RMap; +import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; +import java.util.Set; + /** * 缓存操作工具类 {@link } * @@ -12,19 +16,30 @@ import org.springframework.cache.CacheManager; * @date 2022/8/13 */ @NoArgsConstructor(access = AccessLevel.PRIVATE) -@SuppressWarnings(value = {"unchecked", "rawtypes"}) +@SuppressWarnings(value = {"unchecked"}) public class CacheUtils { private static final CacheManager CACHE_MANAGER = SpringUtils.getBean(CacheManager.class); + /** + * 获取缓存组内所有的KEY + * + * @param cacheNames 缓存组名称 + */ + public static Set keys(String cacheNames) { + RMap rmap = (RMap) CACHE_MANAGER.getCache(cacheNames).getNativeCache(); + return rmap.keySet(); + } + /** * 获取缓存值 * * @param cacheNames 缓存组名称 * @param key 缓存key */ - public static Object get(String cacheNames, Object key) { - return CACHE_MANAGER.getCache(cacheNames).get(key).get(); + public static T get(String cacheNames, Object key) { + Cache.ValueWrapper wrapper = CACHE_MANAGER.getCache(cacheNames).get(key); + return wrapper != null ? (T) wrapper.get() : null; } /** diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java index 1d1a77708..0f9a0528c 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java @@ -11,19 +11,9 @@ import java.util.List; public interface OssConstant { /** - * OSS模块KEY + * 默认配置KEY */ - String SYS_OSS_KEY = "sys_oss:"; - - /** - * 对象存储配置KEY - */ - String OSS_CONFIG_KEY = "OssConfig"; - - /** - * 缓存配置KEY - */ - String CACHE_CONFIG_KEY = SYS_OSS_KEY + OSS_CONFIG_KEY; + String DEFAULT_CONFIG_KEY = "sys_oss:default_config"; /** * 预览列表资源开关Key diff --git a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java index 68c37365b..c3312d730 100644 --- a/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java +++ b/ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java @@ -3,7 +3,7 @@ package com.ruoyi.oss.factory; import com.ruoyi.common.constant.CacheNames; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.cache.CacheUtils; +import com.ruoyi.common.utils.redis.CacheUtils; import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.core.OssClient; @@ -29,7 +29,7 @@ public class OssFactory { */ public static void init() { log.info("初始化OSS工厂"); - RedisUtils.subscribe(OssConstant.CACHE_CONFIG_KEY, String.class, configKey -> { + RedisUtils.subscribe(OssConstant.DEFAULT_CONFIG_KEY, String.class, configKey -> { OssClient client = getClient(configKey); // 未初始化不处理 if (client != null) { @@ -44,7 +44,7 @@ public class OssFactory { */ public static OssClient instance() { // 获取redis 默认类型 - String configKey = (String) CacheUtils.get(CacheNames.SYS_OSS_CONFIG, OssConstant.OSS_CONFIG_KEY); + String configKey = RedisUtils.getCacheObject(OssConstant.DEFAULT_CONFIG_KEY); if (StringUtils.isEmpty(configKey)) { throw new OssException("文件存储服务类型无法找到!"); } @@ -64,11 +64,11 @@ public class OssFactory { } private static void refresh(String configKey) { - Object json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey); - OssProperties properties = JsonUtils.parseObject(json.toString(), OssProperties.class); - if (properties == null) { + String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey); + if (json == null) { throw new OssException("系统异常, '" + configKey + "'配置信息不存在!"); } + OssProperties properties = JsonUtils.parseObject(json, OssProperties.class); CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java index c55e5bc12..f02ea3d98 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java @@ -21,7 +21,7 @@ public interface ISysOssService { List listByIds(Collection ossIds); - SysOss getById(Long ossId); + SysOssVo getById(Long ossId); SysOss upload(MultipartFile file); diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java index 6f0ebdca4..da0ee394f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java @@ -12,7 +12,7 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.service.ConfigService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.cache.CacheUtils; +import com.ruoyi.common.utils.redis.CacheUtils; import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.service.ISysConfigService; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java index c003f4744..6b80cf482 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java @@ -8,7 +8,7 @@ import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.cache.CacheUtils; +import com.ruoyi.common.utils.redis.CacheUtils; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.service.ISysDictDataService; import lombok.RequiredArgsConstructor; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java index b65bcc536..00e88b8a3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java @@ -15,7 +15,7 @@ import com.ruoyi.common.core.service.DictService; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StreamUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.cache.CacheUtils; +import com.ruoyi.common.utils.redis.CacheUtils; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.mapper.SysDictTypeMapper; import com.ruoyi.system.service.ISysDictTypeService; diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java index 1f9cece23..8ceff7cb5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java @@ -14,7 +14,7 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.cache.CacheUtils; +import com.ruoyi.common.utils.redis.CacheUtils; import com.ruoyi.common.utils.redis.RedisUtils; import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.factory.OssFactory; @@ -55,7 +55,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { for (SysOssConfig config : list) { String configKey = config.getConfigKey(); if ("0".equals(config.getStatus())) { - CacheUtils.put(CacheNames.SYS_OSS_CONFIG, OssConstant.OSS_CONFIG_KEY, configKey); + RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, configKey); } setConfigCache(true, config); } @@ -159,7 +159,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { .set(SysOssConfig::getStatus, "1")); row += baseMapper.updateById(sysOssConfig); if (row > 0) { - CacheUtils.put(CacheNames.SYS_OSS_CONFIG, OssConstant.OSS_CONFIG_KEY, sysOssConfig.getConfigKey()); + RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, sysOssConfig.getConfigKey()); } return row; } @@ -174,7 +174,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService { private boolean setConfigCache(boolean flag, SysOssConfig config) { if (flag) { CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); - RedisUtils.publish(OssConstant.CACHE_CONFIG_KEY, config.getConfigKey(), msg -> { + RedisUtils.publish(OssConstant.DEFAULT_CONFIG_KEY, config.getConfigKey(), msg -> { log.info("发布刷新OSS配置 => " + msg); }); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java index 03a6cfca8..514e68efb 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java @@ -4,12 +4,11 @@ import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.constant.CacheNames; import com.ruoyi.common.core.domain.PageQuery; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.common.utils.redis.RedisUtils; -import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.core.OssClient; import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.factory.OssFactory; @@ -19,11 +18,11 @@ import com.ruoyi.system.domain.vo.SysOssVo; import com.ruoyi.system.mapper.SysOssMapper; import com.ruoyi.system.service.ISysOssService; import lombok.RequiredArgsConstructor; +import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import java.io.IOException; -import java.time.Duration; import java.util.ArrayList; import java.util.Collection; import java.util.List; @@ -51,13 +50,10 @@ public class SysOssServiceImpl implements ISysOssService { public List listByIds(Collection ossIds) { List list = new ArrayList<>(); for (Long id : ossIds) { - String key = OssConstant.SYS_OSS_KEY + id; - SysOssVo vo = RedisUtils.getCacheObject(key); - if (ObjectUtil.isNull(vo)) { - vo = baseMapper.selectVoById(id); - RedisUtils.setCacheObject(key, vo, Duration.ofDays(30)); + SysOssVo vo = getById(id); + if (ObjectUtil.isNotNull(vo)) { + list.add(vo); } - list.add(vo); } return list; } @@ -76,9 +72,10 @@ public class SysOssServiceImpl implements ISysOssService { return lqw; } + @Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId") @Override - public SysOss getById(Long ossId) { - return baseMapper.selectById(ossId); + public SysOssVo getById(Long ossId) { + return baseMapper.selectVoById(ossId); } @Override