RuoYi
2021-05-27 d1beac6029839b3bc91fac16b76d6d7fc62ae076
优化参数&字典缓存操作
已修改10个文件
207 ■■■■■ 文件已修改
src/main/java/com/ruoyi/common/utils/DictUtils.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/controller/SysConfigController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/ISysConfigService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java 65 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/ruoyi/common/utils/DictUtils.java
@@ -152,6 +152,16 @@
    }
    /**
     * 删除指定字典缓存
     *
     * @param key 字典键
     */
    public static void removeDictCache(String key)
    {
        SpringUtils.getBean(RedisCache.class).deleteObject(getCacheKey(key));
    }
    /**
     * 清空字典缓存
     */
    public static void clearDictCache()
src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
@@ -116,18 +116,19 @@
    @DeleteMapping("/{configIds}")
    public AjaxResult remove(@PathVariable Long[] configIds)
    {
        return toAjax(configService.deleteConfigByIds(configIds));
        configService.deleteConfigByIds(configIds);
        return success();
    }
    /**
     * 清空缓存
     * 刷新参数缓存
     */
    @PreAuthorize("@ss.hasPermi('system:config:remove')")
    @Log(title = "参数管理", businessType = BusinessType.CLEAN)
    @DeleteMapping("/clearCache")
    public AjaxResult clearCache()
    @DeleteMapping("/refreshCache")
    public AjaxResult refreshCache()
    {
        configService.clearCache();
        configService.resetConfigCache();
        return AjaxResult.success();
    }
}
src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
@@ -115,6 +115,7 @@
    @DeleteMapping("/{dictCodes}")
    public AjaxResult remove(@PathVariable Long[] dictCodes)
    {
        return toAjax(dictDataService.deleteDictDataByIds(dictCodes));
        dictDataService.deleteDictDataByIds(dictCodes);
        return success();
    }
}
src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
@@ -104,18 +104,19 @@
    @DeleteMapping("/{dictIds}")
    public AjaxResult remove(@PathVariable Long[] dictIds)
    {
        return toAjax(dictTypeService.deleteDictTypeByIds(dictIds));
        dictTypeService.deleteDictTypeByIds(dictIds);
        return success();
    }
    /**
     * 清空缓存
     * 刷新字典缓存
     */
    @PreAuthorize("@ss.hasPermi('system:dict:remove')")
    @Log(title = "字典类型", businessType = BusinessType.CLEAN)
    @DeleteMapping("/clearCache")
    public AjaxResult clearCache()
    @DeleteMapping("/refreshCache")
    public AjaxResult refreshCache()
    {
        dictTypeService.clearCache();
        dictTypeService.resetDictCache();
        return AjaxResult.success();
    }
src/main/java/com/ruoyi/project/system/service/ISysConfigService.java
@@ -56,12 +56,22 @@
     * @param configIds 需要删除的参数ID
     * @return 结果
     */
    public int deleteConfigByIds(Long[] configIds);
    public void deleteConfigByIds(Long[] configIds);
    /**
     * 清空缓存数据
     * 加载参数缓存数据
     */
    public void clearCache();
    public void loadingConfigCache();
    /**
     * 清空参数缓存数据
     */
    public void clearConfigCache();
    /**
     * 重置参数缓存数据
     */
    public void resetConfigCache();
    /**
     * 校验参数键名是否唯一
src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java
@@ -41,7 +41,7 @@
     * @param dictCodes 需要删除的字典数据ID
     * @return 结果
     */
    public int deleteDictDataByIds(Long[] dictCodes);
    public void deleteDictDataByIds(Long[] dictCodes);
    /**
     * 新增保存字典数据信息
src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java
@@ -56,12 +56,22 @@
     * @param dictIds 需要删除的字典ID
     * @return 结果
     */
    public int deleteDictTypeByIds(Long[] dictIds);
    public void deleteDictTypeByIds(Long[] dictIds);
    /**
     * 清空缓存数据
     * 加载字典缓存数据
     */
    public void clearCache();
    public void loadingDictCache();
    /**
     * 清空字典缓存数据
     */
    public void clearDictCache();
    /**
     * 重置字典缓存数据
     */
    public void resetDictCache();
    /**
     * 新增保存字典类型信息
src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
@@ -35,11 +35,7 @@
    @PostConstruct
    public void init()
    {
        List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
        for (SysConfig config : configsList)
        {
            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
        }
        loadingConfigCache();
    }
    /**
@@ -134,7 +130,7 @@
     * @return 结果
     */
    @Override
    public int deleteConfigByIds(Long[] configIds)
    public void deleteConfigByIds(Long[] configIds)
    {
        for (Long configId : configIds)
        {
@@ -143,27 +139,45 @@
            {
                throw new CustomException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey()));
            }
            configMapper.deleteConfigById(configId);
            redisCache.deleteObject(getCacheKey(config.getConfigKey()));
        }
        int count = configMapper.deleteConfigByIds(configIds);
        if (count > 0)
        {
            Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
            redisCache.deleteObject(keys);
        }
        return count;
    }
    /**
     * 清空缓存数据
     * 加载参数缓存数据
     */
    @Override
    public void clearCache()
    public void loadingConfigCache()
    {
        List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
        for (SysConfig config : configsList)
        {
            redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
        }
    }
    /**
     * 清空参数缓存数据
     */
    @Override
    public void clearConfigCache()
    {
        Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
        redisCache.deleteObject(keys);
    }
    /**
     * 重置参数缓存数据
     */
    @Override
    public void resetConfigCache()
    {
        clearConfigCache();
        loadingConfigCache();
    }
    /**
     * 校验参数键名是否唯一
     * 
     * @param config 参数配置信息
src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java
@@ -63,29 +63,31 @@
     * @return 结果
     */
    @Override
    public int deleteDictDataByIds(Long[] dictCodes)
    public void deleteDictDataByIds(Long[] dictCodes)
    {
        int row = dictDataMapper.deleteDictDataByIds(dictCodes);
        if (row > 0)
        for (Long dictCode : dictCodes)
        {
            DictUtils.clearDictCache();
            SysDictData data = selectDictDataById(dictCode);
            dictDataMapper.deleteDictDataById(dictCode);
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
            DictUtils.setDictCache(data.getDictType(), dictDatas);
        }
        return row;
    }
    /**
     * 新增保存字典数据信息
     * 
     * @param dictData 字典数据信息
     * @param data 字典数据信息
     * @return 结果
     */
    @Override
    public int insertDictData(SysDictData dictData)
    public int insertDictData(SysDictData data)
    {
        int row = dictDataMapper.insertDictData(dictData);
        int row = dictDataMapper.insertDictData(data);
        if (row > 0)
        {
            DictUtils.clearDictCache();
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
            DictUtils.setDictCache(data.getDictType(), dictDatas);
        }
        return row;
    }
@@ -93,16 +95,17 @@
    /**
     * 修改保存字典数据信息
     * 
     * @param dictData 字典数据信息
     * @param data 字典数据信息
     * @return 结果
     */
    @Override
    public int updateDictData(SysDictData dictData)
    public int updateDictData(SysDictData data)
    {
        int row = dictDataMapper.updateDictData(dictData);
        int row = dictDataMapper.updateDictData(data);
        if (row > 0)
        {
            DictUtils.clearDictCache();
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType());
            DictUtils.setDictCache(data.getDictType(), dictDatas);
        }
        return row;
    }
src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
@@ -35,12 +35,7 @@
    @PostConstruct
    public void init()
    {
        List<SysDictType> dictTypeList = dictTypeMapper.selectDictTypeAll();
        for (SysDictType dictType : dictTypeList)
        {
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType());
            DictUtils.setDictCache(dictType.getDictType(), dictDatas);
        }
        loadingDictCache();
    }
    /**
@@ -120,7 +115,7 @@
     * @return 结果
     */
    @Override
    public int deleteDictTypeByIds(Long[] dictIds)
    public void deleteDictTypeByIds(Long[] dictIds)
    {
        for (Long dictId : dictIds)
        {
@@ -129,37 +124,54 @@
            {
                throw new CustomException(String.format("%1$s已分配,不能删除", dictType.getDictName()));
            }
            dictTypeMapper.deleteDictTypeById(dictId);
            DictUtils.removeDictCache(dictType.getDictType());
        }
        int count = dictTypeMapper.deleteDictTypeByIds(dictIds);
        if (count > 0)
        {
            DictUtils.clearDictCache();
        }
        return count;
    }
    /**
     * 清空缓存数据
     * 加载字典缓存数据
     */
    @Override
    public void clearCache()
    public void loadingDictCache()
    {
        List<SysDictType> dictTypeList = dictTypeMapper.selectDictTypeAll();
        for (SysDictType dictType : dictTypeList)
        {
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType());
            DictUtils.setDictCache(dictType.getDictType(), dictDatas);
        }
    }
    /**
     * 清空字典缓存数据
     */
    public void clearDictCache()
    {
        DictUtils.clearDictCache();
    }
    /**
     * 重置字典缓存数据
     */
    public void resetDictCache()
    {
        clearDictCache();
        loadingDictCache();
    }
    /**
     * 新增保存字典类型信息
     * 
     * @param dictType 字典类型信息
     * @param dict 字典类型信息
     * @return 结果
     */
    @Override
    public int insertDictType(SysDictType dictType)
    public int insertDictType(SysDictType dict)
    {
        int row = dictTypeMapper.insertDictType(dictType);
        int row = dictTypeMapper.insertDictType(dict);
        if (row > 0)
        {
            DictUtils.clearDictCache();
            DictUtils.setDictCache(dict.getDictType(), null);
        }
        return row;
    }
@@ -167,19 +179,20 @@
    /**
     * 修改保存字典类型信息
     * 
     * @param dictType 字典类型信息
     * @param dict 字典类型信息
     * @return 结果
     */
    @Override
    @Transactional
    public int updateDictType(SysDictType dictType)
    public int updateDictType(SysDictType dict)
    {
        SysDictType oldDict = dictTypeMapper.selectDictTypeById(dictType.getDictId());
        dictDataMapper.updateDictDataType(oldDict.getDictType(), dictType.getDictType());
        int row = dictTypeMapper.updateDictType(dictType);
        SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId());
        dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType());
        int row = dictTypeMapper.updateDictType(dict);
        if (row > 0)
        {
            DictUtils.clearDictCache();
            List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType());
            DictUtils.setDictCache(dict.getDictType(), dictDatas);
        }
        return row;
    }