From 9ed5b521d613edb51b160cca931ee680019e2896 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期二, 07 三月 2023 22:26:13 +0800 Subject: [PATCH] fix 修复 用户密码暴露问题 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java | 64 ++++++++++++++----------------- 1 files changed, 29 insertions(+), 35 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java index fe97a9e..7031f71 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOssConfigServiceImpl.java @@ -1,6 +1,5 @@ package com.ruoyi.system.service.impl; -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; @@ -8,17 +7,18 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.constant.CacheNames; -import com.ruoyi.common.core.constant.UserConstants; import com.ruoyi.common.core.exception.ServiceException; -import com.ruoyi.common.core.utils.SpringUtils; +import com.ruoyi.common.core.utils.MapstructUtils; +import com.ruoyi.common.core.utils.StreamUtils; import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.json.utils.JsonUtils; import com.ruoyi.common.mybatis.core.page.PageQuery; import com.ruoyi.common.mybatis.core.page.TableDataInfo; import com.ruoyi.common.oss.constant.OssConstant; -import com.ruoyi.common.oss.factory.OssFactory; import com.ruoyi.common.redis.utils.CacheUtils; import com.ruoyi.common.redis.utils.RedisUtils; +import com.ruoyi.common.tenant.core.TenantEntity; +import com.ruoyi.common.tenant.helper.TenantHelper; import com.ruoyi.system.domain.SysOssConfig; import com.ruoyi.system.domain.bo.SysOssConfigBo; import com.ruoyi.system.domain.vo.SysOssConfigVo; @@ -26,12 +26,12 @@ import com.ruoyi.system.service.ISysOssConfigService; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Collection; import java.util.List; +import java.util.Map; /** * 瀵硅薄瀛樺偍閰嶇疆Service涓氬姟灞傚鐞� @@ -52,17 +52,23 @@ */ @Override public void init() { - List<SysOssConfig> list = baseMapper.selectList(); - // 鍔犺浇OSS鍒濆鍖栭厤缃� - for (SysOssConfig config : list) { - String configKey = config.getConfigKey(); - if ("0".equals(config.getStatus())) { - RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, configKey); + TenantHelper.enableIgnore(); + List<SysOssConfig> list = baseMapper.selectList( + new LambdaQueryWrapper<SysOssConfig>().orderByAsc(TenantEntity::getTenantId)); + TenantHelper.disableIgnore(); + Map<String, List<SysOssConfig>> map = StreamUtils.groupByKey(list, SysOssConfig::getTenantId); + for (String tenantId : map.keySet()) { + TenantHelper.setDynamic(tenantId); + // 鍔犺浇OSS鍒濆鍖栭厤缃� + for (SysOssConfig config : map.get(tenantId)) { + String configKey = config.getConfigKey(); + if ("0".equals(config.getStatus())) { + RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, configKey); + } + CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); } - SpringUtils.context().publishEvent(config); } - // 鍒濆鍖朞SS宸ュ巶 - OssFactory.init(); + TenantHelper.clearDynamic(); } @Override @@ -88,18 +94,18 @@ @Override public Boolean insertByBo(SysOssConfigBo bo) { - SysOssConfig config = BeanUtil.toBean(bo, SysOssConfig.class); + SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class); validEntityBeforeSave(config); boolean flag = baseMapper.insert(config) > 0; if (flag) { - SpringUtils.context().publishEvent(config); + CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); } return flag; } @Override public Boolean updateByBo(SysOssConfigBo bo) { - SysOssConfig config = BeanUtil.toBean(bo, SysOssConfig.class); + SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class); validEntityBeforeSave(config); LambdaUpdateWrapper<SysOssConfig> luw = new LambdaUpdateWrapper<>(); luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, ""); @@ -109,7 +115,7 @@ luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId()); boolean flag = baseMapper.update(config, luw) > 0; if (flag) { - SpringUtils.context().publishEvent(config); + CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); } return flag; } @@ -119,7 +125,7 @@ */ private void validEntityBeforeSave(SysOssConfig entity) { if (StringUtils.isNotEmpty(entity.getConfigKey()) - && UserConstants.NOT_UNIQUE.equals(checkConfigKeyUnique(entity))) { + && !checkConfigKeyUnique(entity)) { throw new ServiceException("鎿嶄綔閰嶇疆'" + entity.getConfigKey() + "'澶辫触, 閰嶇疆key宸插瓨鍦�!"); } } @@ -147,15 +153,15 @@ /** * 鍒ゆ柇configKey鏄惁鍞竴 */ - private String checkConfigKeyUnique(SysOssConfig sysOssConfig) { + private boolean checkConfigKeyUnique(SysOssConfig sysOssConfig) { long ossConfigId = ObjectUtil.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId(); SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysOssConfig>() .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey) .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey())); if (ObjectUtil.isNotNull(info) && info.getOssConfigId() != ossConfigId) { - return UserConstants.NOT_UNIQUE; + return false; } - return UserConstants.UNIQUE; + return true; } /** @@ -164,7 +170,7 @@ @Override @Transactional(rollbackFor = Exception.class) public int updateOssConfigStatus(SysOssConfigBo bo) { - SysOssConfig sysOssConfig = BeanUtil.toBean(bo, SysOssConfig.class); + SysOssConfig sysOssConfig = MapstructUtils.convert(bo, SysOssConfig.class); int row = baseMapper.update(null, new LambdaUpdateWrapper<SysOssConfig>() .set(SysOssConfig::getStatus, "1")); row += baseMapper.updateById(sysOssConfig); @@ -174,16 +180,4 @@ return row; } - /** - * 鏇存柊閰嶇疆缂撳瓨 - * - * @param config 閰嶇疆 - */ - @EventListener - public void updateConfigCache(SysOssConfig config) { - CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config)); - RedisUtils.publish(OssConstant.DEFAULT_CONFIG_KEY, config.getConfigKey(), msg -> { - log.info("鍙戝竷鍒锋柊OSS閰嶇疆 => " + msg); - }); - } } -- Gitblit v1.9.3