瀏覽代碼

update 优化 pr215 解决一些问题

疯狂的狮子Li 2 年之前
父節點
當前提交
f9a9431958

+ 1 - 1
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("文件数据不存在!");
         }

+ 10 - 0
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";
+
 }

+ 19 - 4
ruoyi-common/src/main/java/com/ruoyi/common/utils/cache/CacheUtils.java → 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<Object> keys(String cacheNames) {
+        RMap<Object, Object> rmap = (RMap<Object, Object>) 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> T get(String cacheNames, Object key) {
+        Cache.ValueWrapper wrapper = CACHE_MANAGER.getCache(cacheNames).get(key);
+        return wrapper != null ? (T) wrapper.get() : null;
     }
 
     /**

+ 2 - 12
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

+ 6 - 6
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));
     }
 

+ 1 - 1
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOssService.java

@@ -21,7 +21,7 @@ public interface ISysOssService {
 
     List<SysOssVo> listByIds(Collection<Long> ossIds);
 
-    SysOss getById(Long ossId);
+    SysOssVo getById(Long ossId);
 
     SysOss upload(MultipartFile file);
 

+ 1 - 1
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;

+ 1 - 1
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;

+ 1 - 1
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;

+ 4 - 4
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);
             });
         }

+ 8 - 11
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<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 @@ 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