From 2af534eea471f4adb104906c7a814bcc66d4d68d Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期一, 13 九月 2021 13:03:58 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev --- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java | 105 +++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 78 insertions(+), 27 deletions(-) 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 95f0869..848f4d6 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 @@ -2,7 +2,6 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -10,36 +9,53 @@ import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.PagePlus; import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.exception.CustomException; +import com.ruoyi.common.exception.ServiceException; +import com.ruoyi.common.utils.JsonUtils; import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.oss.constant.CloudConstant; -import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.SysOssConfig; import com.ruoyi.system.domain.bo.SysOssConfigBo; import com.ruoyi.system.domain.vo.SysOssConfigVo; import com.ruoyi.system.mapper.SysOssConfigMapper; -import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysOssConfigService; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.PostConstruct; import java.util.Collection; +import java.util.List; /** - * 浜戝瓨鍌ㄩ厤缃甋ervice涓氬姟灞傚鐞� + * 瀵硅薄瀛樺偍閰嶇疆Service涓氬姟灞傚鐞� * * @author Lion Li * @author 瀛よ垷鐑熼洦 * @date 2021-08-13 */ +@Slf4j @RequiredArgsConstructor(onConstructor_ = @Autowired) @Service public class SysOssConfigServiceImpl extends ServicePlusImpl<SysOssConfigMapper, SysOssConfig, SysOssConfigVo> implements ISysOssConfigService { - private final ISysConfigService iSysConfigService; + /** + * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧弬鏁板埌缂撳瓨锛屽姞杞介厤缃被 + */ + @PostConstruct + public void init() { + List<SysOssConfig> list = list(); + for (SysOssConfig config : list) { + String configKey = config.getConfigKey(); + if ("0".equals(config.getStatus())) { + RedisUtils.setCacheObject(CloudConstant.CACHE_CONFIG_KEY, configKey); + } + setConfigCache(true, config); + } + } @Override public SysOssConfigVo queryById(Integer ossConfigId){ @@ -63,16 +79,21 @@ @Override public Boolean insertByBo(SysOssConfigBo bo) { - SysOssConfig add = BeanUtil.toBean(bo, SysOssConfig.class); - validEntityBeforeSave(add); - return save(add); + SysOssConfig config = BeanUtil.toBean(bo, SysOssConfig.class); + validEntityBeforeSave(config); + return setConfigCache(save(config), config); } @Override public Boolean updateByBo(SysOssConfigBo bo) { - SysOssConfig update = BeanUtil.toBean(bo, SysOssConfig.class); - validEntityBeforeSave(update); - return updateById(update); + SysOssConfig config = BeanUtil.toBean(bo, SysOssConfig.class); + validEntityBeforeSave(config); + LambdaUpdateWrapper<SysOssConfig> luw = new LambdaUpdateWrapper<>(); + luw.set(StringUtils.isBlank(config.getPrefix()), SysOssConfig::getPrefix, ""); + luw.set(StringUtils.isBlank(config.getRegion()), SysOssConfig::getRegion, ""); + luw.set(StringUtils.isBlank(config.getExt1()), SysOssConfig::getExt1, ""); + luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId()); + return setConfigCache(update(config, luw), config); } /** @@ -81,18 +102,25 @@ private void validEntityBeforeSave(SysOssConfig entity){ if (StringUtils.isNotEmpty(entity.getConfigKey()) && UserConstants.NOT_UNIQUE.equals(checkConfigKeyUnique(entity))) { - throw new CustomException("鎿嶄綔閰嶇疆'" + entity.getConfigKey() + "'澶辫触, 閰嶇疆key宸插瓨鍦�!"); + throw new ServiceException("鎿嶄綔閰嶇疆'" + entity.getConfigKey() + "'澶辫触, 閰嶇疆key宸插瓨鍦�!"); } } @Override - public Boolean deleteWithValidByIds(Collection<Integer> ids, Boolean isValid) { + public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { if(isValid) { - if (CollUtil.containsAny(ids, CollUtil.newArrayList(1, 2, 3, 4))) { - throw new CustomException("绯荤粺鍐呯疆, 涓嶅彲鍒犻櫎!"); + if (CollUtil.containsAny(ids, CloudConstant.SYSTEM_DATA_IDS)) { + throw new ServiceException("绯荤粺鍐呯疆, 涓嶅彲鍒犻櫎!"); } } - return removeByIds(ids); + boolean flag = removeByIds(ids); + if (flag) { + for (Long configId : ids) { + SysOssConfig config = getById(configId); + RedisUtils.deleteObject(getCacheKey(config.getConfigKey())); + } + } + return flag; } /** @@ -115,18 +143,41 @@ @Override @Transactional(rollbackFor = Exception.class) public int updateOssConfigStatus(SysOssConfigBo bo) { - SysConfig sysConfig = iSysConfigService.getOne(new LambdaQueryWrapper<SysConfig>() - .eq(SysConfig::getConfigKey, CloudConstant.CLOUD_STORAGE_CONFIG_KEY)); - if(ObjectUtil.isNotNull(sysConfig)){ - sysConfig.setConfigValue(bo.getConfigKey()); - iSysConfigService.updateConfig(sysConfig); - } else { - throw new CustomException("缂哄皯'浜戝瓨鍌ㄩ厤缃甂EY'鍙傛暟!"); - } SysOssConfig sysOssConfig = BeanUtil.toBean(bo, SysOssConfig.class); - baseMapper.update(null, new LambdaUpdateWrapper<SysOssConfig>() + int row = baseMapper.update(null, new LambdaUpdateWrapper<SysOssConfig>() .set(SysOssConfig::getStatus, "1")); - return baseMapper.updateById(sysOssConfig); + row += baseMapper.updateById(sysOssConfig); + if (row > 0) { + RedisUtils.setCacheObject(CloudConstant.CACHE_CONFIG_KEY, sysOssConfig.getConfigKey()); + } + return row; } + /** + * 璁剧疆cache key + * + * @param configKey 鍙傛暟閿� + * @return 缂撳瓨閿甼ey + */ + private String getCacheKey(String configKey) { + return CloudConstant.SYS_OSS_KEY + configKey; + } + + /** + * 濡傛灉鎿嶄綔鎴愬姛 鍒欐洿鏂扮紦瀛� + * @param flag 鎿嶄綔鐘舵�� + * @param config 閰嶇疆 + * @return 杩斿洖鎿嶄綔鐘舵�� + */ + private boolean setConfigCache(boolean flag, SysOssConfig config) { + if (flag) { + RedisUtils.setCacheObject( + getCacheKey(config.getConfigKey()), + JsonUtils.toJsonString(config)); + RedisUtils.publish(CloudConstant.CACHE_CONFIG_KEY, config.getConfigKey(), msg -> { + log.info("鍙戝竷鍒锋柊OSS閰嶇疆 => " + msg); + }); + } + return flag; + } } -- Gitblit v1.9.3