ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysOssController.java
@@ -96,7 +96,7 @@ @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("æä»¶æ°æ®ä¸åå¨!"); } ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheNames.java
@@ -31,8 +31,18 @@ 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"; } ruoyi-common/src/main/java/com/ruoyi/common/utils/redis/CacheUtils.java
ÎļþÃû´Ó ruoyi-common/src/main/java/com/ruoyi/common/utils/cache/CacheUtils.java ÐÞ¸Ä @@ -1,9 +1,13 @@ 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,10 +16,20 @@ * @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<Object> keys(String cacheNames) { RMap<Object, Object> rmap = (RMap<Object, Object>) CACHE_MANAGER.getCache(cacheNames).getNativeCache(); return rmap.keySet(); } /** * è·åç¼åå¼ @@ -23,8 +37,9 @@ * @param cacheNames ç¼åç»åç§° * @param key ç¼åkey */ public static Object get(String cacheNames, Object key) { return CACHE_MANAGER.getCache(cacheNames).get(key).get(); public static <T> T get(String cacheNames, Object key) { Cache.ValueWrapper wrapper = CACHE_MANAGER.getCache(cacheNames).get(key); return wrapper != null ? (T) wrapper.get() : null; } /** ruoyi-oss/src/main/java/com/ruoyi/oss/constant/OssConstant.java
@@ -11,19 +11,9 @@ 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 ruoyi-oss/src/main/java/com/ruoyi/oss/factory/OssFactory.java
@@ -3,7 +3,7 @@ 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 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 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 @@ } 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)); } ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java
@@ -21,7 +21,7 @@ List<SysOssVo> listByIds(Collection<Long> ossIds); SysOss getById(Long ossId); SysOssVo getById(Long ossId); SysOss upload(MultipartFile file); ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
@@ -12,7 +12,7 @@ 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; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
@@ -8,7 +8,7 @@ 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; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -15,7 +15,7 @@ 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; ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java
@@ -14,7 +14,7 @@ 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 @@ 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 @@ .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 @@ 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); }); } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssServiceImpl.java
@@ -4,12 +4,11 @@ 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.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 List<SysOssVo> listByIds(Collection<Long> ossIds) { List<SysOssVo> 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 @@ 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