update 优化 pr215 解决一些问题

This commit is contained in:
疯狂的狮子Li 2022-08-14 01:49:05 +08:00
parent 56d209cd20
commit f9a9431958
11 changed files with 54 additions and 42 deletions

View File

@ -96,7 +96,7 @@ public class SysOssController extends BaseController {
@SaCheckPermission("system:oss:download") @SaCheckPermission("system:oss:download")
@GetMapping("/download/{ossId}") @GetMapping("/download/{ossId}")
public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException { public void download(@PathVariable Long ossId, HttpServletResponse response) throws IOException {
SysOss sysOss = iSysOssService.getById(ossId); SysOssVo sysOss = iSysOssService.getById(ossId);
if (ObjectUtil.isNull(sysOss)) { if (ObjectUtil.isNull(sysOss)) {
throw new ServiceException("文件数据不存在!"); throw new ServiceException("文件数据不存在!");
} }

View File

@ -30,9 +30,19 @@ public interface CacheNames {
*/ */
String SYS_DICT = "sys_dict"; String SYS_DICT = "sys_dict";
/**
* OSS内容
*/
String SYS_OSS = "sys_oss#30d";
/** /**
* OSS配置 * OSS配置
*/ */
String SYS_OSS_CONFIG = "sys_oss_config"; String SYS_OSS_CONFIG = "sys_oss_config";
/**
* 在线用户
*/
String ONLINE_TOKEN = "online_tokens";
} }

View File

@ -1,10 +1,14 @@
package com.ruoyi.common.utils.cache; package com.ruoyi.common.utils.redis;
import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.common.utils.spring.SpringUtils;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import org.redisson.api.RMap;
import org.springframework.cache.Cache;
import org.springframework.cache.CacheManager; import org.springframework.cache.CacheManager;
import java.util.Set;
/** /**
* 缓存操作工具类 {@link } * 缓存操作工具类 {@link }
* *
@ -12,19 +16,30 @@ import org.springframework.cache.CacheManager;
* @date 2022/8/13 * @date 2022/8/13
*/ */
@NoArgsConstructor(access = AccessLevel.PRIVATE) @NoArgsConstructor(access = AccessLevel.PRIVATE)
@SuppressWarnings(value = {"unchecked", "rawtypes"}) @SuppressWarnings(value = {"unchecked"})
public class CacheUtils { public class CacheUtils {
private static final CacheManager CACHE_MANAGER = SpringUtils.getBean(CacheManager.class); 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 cacheNames 缓存组名称
* @param key 缓存key * @param key 缓存key
*/ */
public static Object get(String cacheNames, Object key) { public static <T> T get(String cacheNames, Object key) {
return CACHE_MANAGER.getCache(cacheNames).get(key).get(); Cache.ValueWrapper wrapper = CACHE_MANAGER.getCache(cacheNames).get(key);
return wrapper != null ? (T) wrapper.get() : null;
} }
/** /**

View File

@ -11,19 +11,9 @@ import java.util.List;
public interface OssConstant { public interface OssConstant {
/** /**
* OSS模块KEY * 默认配置KEY
*/ */
String SYS_OSS_KEY = "sys_oss:"; String DEFAULT_CONFIG_KEY = "sys_oss:default_config";
/**
* 对象存储配置KEY
*/
String OSS_CONFIG_KEY = "OssConfig";
/**
* 缓存配置KEY
*/
String CACHE_CONFIG_KEY = SYS_OSS_KEY + OSS_CONFIG_KEY;
/** /**
* 预览列表资源开关Key * 预览列表资源开关Key

View File

@ -3,7 +3,7 @@ package com.ruoyi.oss.factory;
import com.ruoyi.common.constant.CacheNames; import com.ruoyi.common.constant.CacheNames;
import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.JsonUtils;
import com.ruoyi.common.utils.StringUtils; 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.common.utils.redis.RedisUtils;
import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.constant.OssConstant;
import com.ruoyi.oss.core.OssClient; import com.ruoyi.oss.core.OssClient;
@ -29,7 +29,7 @@ public class OssFactory {
*/ */
public static void init() { public static void init() {
log.info("初始化OSS工厂"); 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); OssClient client = getClient(configKey);
// 未初始化不处理 // 未初始化不处理
if (client != null) { if (client != null) {
@ -44,7 +44,7 @@ public class OssFactory {
*/ */
public static OssClient instance() { public static OssClient instance() {
// 获取redis 默认类型 // 获取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)) { if (StringUtils.isEmpty(configKey)) {
throw new OssException("文件存储服务类型无法找到!"); throw new OssException("文件存储服务类型无法找到!");
} }
@ -64,11 +64,11 @@ public class OssFactory {
} }
private static void refresh(String configKey) { private static void refresh(String configKey) {
Object json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey); String json = CacheUtils.get(CacheNames.SYS_OSS_CONFIG, configKey);
OssProperties properties = JsonUtils.parseObject(json.toString(), OssProperties.class); if (json == null) {
if (properties == null) {
throw new OssException("系统异常, '" + configKey + "'配置信息不存在!"); throw new OssException("系统异常, '" + configKey + "'配置信息不存在!");
} }
OssProperties properties = JsonUtils.parseObject(json, OssProperties.class);
CLIENT_CACHE.put(configKey, new OssClient(configKey, properties)); CLIENT_CACHE.put(configKey, new OssClient(configKey, properties));
} }

View File

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

View File

@ -12,7 +12,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.service.ConfigService; import com.ruoyi.common.core.service.ConfigService;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils; 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.domain.SysConfig;
import com.ruoyi.system.mapper.SysConfigMapper; import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;

View File

@ -8,7 +8,7 @@ import com.ruoyi.common.core.domain.entity.SysDictData;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils; 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.SysDictDataMapper;
import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictDataService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@ -15,7 +15,7 @@ import com.ruoyi.common.core.service.DictService;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StreamUtils; import com.ruoyi.common.utils.StreamUtils;
import com.ruoyi.common.utils.StringUtils; 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.SysDictDataMapper;
import com.ruoyi.system.mapper.SysDictTypeMapper; import com.ruoyi.system.mapper.SysDictTypeMapper;
import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysDictTypeService;

View File

@ -14,7 +14,7 @@ import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.JsonUtils;
import com.ruoyi.common.utils.StringUtils; 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.common.utils.redis.RedisUtils;
import com.ruoyi.oss.constant.OssConstant; import com.ruoyi.oss.constant.OssConstant;
import com.ruoyi.oss.factory.OssFactory; import com.ruoyi.oss.factory.OssFactory;
@ -55,7 +55,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService {
for (SysOssConfig config : list) { for (SysOssConfig config : list) {
String configKey = config.getConfigKey(); String configKey = config.getConfigKey();
if ("0".equals(config.getStatus())) { 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); setConfigCache(true, config);
} }
@ -159,7 +159,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService {
.set(SysOssConfig::getStatus, "1")); .set(SysOssConfig::getStatus, "1"));
row += baseMapper.updateById(sysOssConfig); row += baseMapper.updateById(sysOssConfig);
if (row > 0) { 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; return row;
} }
@ -174,7 +174,7 @@ public class SysOssConfigServiceImpl implements ISysOssConfigService {
private boolean setConfigCache(boolean flag, SysOssConfig config) { private boolean setConfigCache(boolean flag, SysOssConfig config) {
if (flag) { if (flag) {
CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); 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); log.info("发布刷新OSS配置 => " + msg);
}); });
} }

View File

@ -4,12 +4,11 @@ import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 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.domain.PageQuery;
import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.StringUtils; 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.core.OssClient;
import com.ruoyi.oss.entity.UploadResult; import com.ruoyi.oss.entity.UploadResult;
import com.ruoyi.oss.factory.OssFactory; 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.mapper.SysOssMapper;
import com.ruoyi.system.service.ISysOssService; import com.ruoyi.system.service.ISysOssService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import java.io.IOException; import java.io.IOException;
import java.time.Duration;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -51,13 +50,10 @@ public class SysOssServiceImpl implements ISysOssService {
public List<SysOssVo> listByIds(Collection<Long> ossIds) { public List<SysOssVo> listByIds(Collection<Long> ossIds) {
List<SysOssVo> list = new ArrayList<>(); List<SysOssVo> list = new ArrayList<>();
for (Long id : ossIds) { for (Long id : ossIds) {
String key = OssConstant.SYS_OSS_KEY + id; SysOssVo vo = getById(id);
SysOssVo vo = RedisUtils.getCacheObject(key); if (ObjectUtil.isNotNull(vo)) {
if (ObjectUtil.isNull(vo)) { list.add(vo);
vo = baseMapper.selectVoById(id);
RedisUtils.setCacheObject(key, vo, Duration.ofDays(30));
} }
list.add(vo);
} }
return list; return list;
} }
@ -76,9 +72,10 @@ public class SysOssServiceImpl implements ISysOssService {
return lqw; return lqw;
} }
@Cacheable(cacheNames = CacheNames.SYS_OSS, key = "#ossId")
@Override @Override
public SysOss getById(Long ossId) { public SysOssVo getById(Long ossId) {
return baseMapper.selectById(ossId); return baseMapper.selectVoById(ossId);
} }
@Override @Override