ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java
@@ -20,7 +20,7 @@ /** * 参数配置 信息操作处理 * * * @author ruoyi */ @RestController @@ -110,18 +110,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(); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java
@@ -21,7 +21,7 @@ /** * 数据字典信息 * * * @author ruoyi */ @RestController @@ -107,6 +107,7 @@ @DeleteMapping("/{dictCodes}") public AjaxResult remove(@PathVariable Long[] dictCodes) { return toAjax(dictDataService.deleteDictDataByIds(dictCodes)); dictDataService.deleteDictDataByIds(dictCodes); return success(); } } ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java
@@ -19,7 +19,7 @@ /** * 数据字典信息 * * * @author ruoyi */ @RestController @@ -96,18 +96,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(); } ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
@@ -156,6 +156,16 @@ } /** * 删除指定字典缓存 * * @param key 字典键 */ public static void removeDictCache(String key) { SpringUtils.getBean(RedisCache.class).deleteObject(getCacheKey(key)); } /** * 清空字典缓存 */ public static void clearDictCache() ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataScopeAspect.java
@@ -68,6 +68,7 @@ @Before("dataScopePointCut()") public void doBefore(JoinPoint point) throws Throwable { clearDataScope(point); handleDataScope(point); } @@ -173,4 +174,17 @@ } return null; } /** * 拼接权限sql前先清空params.dataScope参数防止注入 */ private void clearDataScope(final JoinPoint joinPoint) { Object params = joinPoint.getArgs()[0]; if (StringUtils.isNotNull(params) && params instanceof BaseEntity) { BaseEntity baseEntity = (BaseEntity) params; baseEntity.getParams().put(DATA_SCOPE, ""); } } } ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
@@ -62,12 +62,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(); /** * 校验参数键名是否唯一 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
@@ -47,7 +47,7 @@ * @param dictCodes 需要删除的字典数据ID * @return 结果 */ public int deleteDictDataByIds(Long[] dictCodes); public void deleteDictDataByIds(Long[] dictCodes); /** * 新增保存字典数据信息 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
@@ -62,12 +62,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(); /** * 新增保存字典类型信息 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
@@ -33,7 +33,10 @@ @Service public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig> implements ISysConfigService { @Autowired @Autowired private SysConfigMapper configMapper; @Autowired private RedisCache redisCache; /** @@ -41,10 +44,7 @@ */ @PostConstruct public void init() { List<SysConfig> configsList = baseMapper.selectList(new LambdaQueryWrapper<>()); for (SysConfig config : configsList) { redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); } loadingConfigCache(); } @Override @@ -155,31 +155,51 @@ * @return 结果 */ @Override public int deleteConfigByIds(Long[] configIds) { public void deleteConfigByIds(Long[] configIds) { for (Long configId : configIds) { SysConfig config = selectConfigById(configId); if (StrUtil.equals(UserConstants.YES, config.getConfigType())) { throw new CustomException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); } configMapper.deleteConfigById(configId); redisCache.deleteObject(getCacheKey(config.getConfigKey())); } int count = baseMapper.deleteBatchIds(Arrays.asList(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 参数配置信息 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
@@ -22,6 +22,9 @@ @Service public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService { @Autowired private SysDictDataMapper dictDataMapper; @Override public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData) { LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<SysDictData>() @@ -81,25 +84,31 @@ * @return 结果 */ @Override public int deleteDictDataByIds(Long[] dictCodes) { int row = baseMapper.deleteBatchIds(Arrays.asList(dictCodes)); if (row > 0) { DictUtils.clearDictCache(); public void deleteDictDataByIds(Long[] dictCodes) { for (Long dictCode : dictCodes) { 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) { int row = baseMapper.insert(dictData); if (row > 0) { DictUtils.clearDictCache(); public int insertDictData(SysDictData data) { int row = baseMapper.insert(data); if (row > 0) { List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); DictUtils.setDictCache(data.getDictType(), dictDatas); } return row; } @@ -107,14 +116,17 @@ /** * 修改保存字典数据信息 * * @param dictData 字典数据信息 * @param data 字典数据信息 * @return 结果 */ @Override public int updateDictData(SysDictData dictData) { int row = baseMapper.updateById(dictData); if (row > 0) { DictUtils.clearDictCache(); public int updateDictData(SysDictData data) { int row = baseMapper.updateById(data); if (row > 0) { List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); DictUtils.setDictCache(data.getDictType(), dictDatas); } return row; } ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -33,6 +33,9 @@ @Service public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements ISysDictTypeService { @Autowired private SysDictTypeMapper dictTypeMapper; @Autowired private SysDictDataMapper dictDataMapper; @@ -41,15 +44,7 @@ */ @PostConstruct public void init() { List<SysDictType> dictTypeList = list(); for (SysDictType dictType : dictTypeList) { List<SysDictData> dictDatas = dictDataMapper.selectList( new LambdaQueryWrapper<SysDictData>() .eq(SysDictData::getStatus, 0) .eq(SysDictData::getDictType, dictType.getDictType()) .orderByAsc(SysDictData::getDictSort)); DictUtils.setDictCache(dictType.getDictType(), dictDatas); } loadingDictCache(); } @Override @@ -151,60 +146,81 @@ * @return 结果 */ @Override public int deleteDictTypeByIds(Long[] dictIds) { public void deleteDictTypeByIds(Long[] dictIds) { for (Long dictId : dictIds) { SysDictType dictType = selectDictTypeById(dictId); if (dictDataMapper.selectCount(new LambdaQueryWrapper<SysDictData>() .eq(SysDictData::getDictType, dictType.getDictType())) > 0) { throw new CustomException(String.format("%1$s已分配,不能删除", dictType.getDictName())); } dictTypeMapper.deleteDictTypeById(dictId); DictUtils.removeDictCache(dictType.getDictType()); } int count = baseMapper.deleteBatchIds(Arrays.asList(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) { int row = baseMapper.insert(dictType); public int insertDictType(SysDictType dict) { int row = baseMapper.insert(dict); if (row > 0) { DictUtils.clearDictCache(); DictUtils.setDictCache(dict.getDictType(), null); } return row; } /** * 修改保存字典类型信息 * * @param dictType 字典类型信息 * @param dict 字典类型信息 * @return 结果 */ @Override @Transactional public int updateDictType(SysDictType dictType) { SysDictType oldDict = getById(dictType.getDictId()); dictDataMapper.update(null, new LambdaUpdateWrapper<SysDictData>() .set(SysDictData::getDictType, dictType.getDictType()) .eq(SysDictData::getDictType, oldDict.getDictType())); int row = baseMapper.updateById(dictType); if (row > 0) { DictUtils.clearDictCache(); public int updateDictType(SysDictType dict) { SysDictType oldDict = getById(dict.getDictId()); dictDataMapper.update(null, new LambdaUpdateWrapper<SysDictData>() .set(SysDictData::getDictType, dict.getDictType()) .eq(SysDictData::getDictType, oldDict.getDictType())); int row = baseMapper.updateById(dict); if (row > 0) { List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); DictUtils.setDictCache(dict.getDictType(), dictDatas); } return row; } ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -49,11 +49,10 @@ from sys_dept d left join sys_role_dept rd on d.dept_id = rd.dept_id where rd.role_id = #{roleId} <if test="deptCheckStrictly"> and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId}) </if> <if test="deptCheckStrictly"> and d.dept_id not in (select d.parent_id from sys_dept d inner join sys_role_dept rd on d.dept_id = rd.dept_id and rd.role_id = #{roleId}) </if> order by d.parent_id, d.order_num </select> </mapper> </mapper> ruoyi-ui/src/api/system/config.js
@@ -51,10 +51,10 @@ }) } // 清理参数缓存 export function clearCache() { // 刷新参数缓存 export function refreshCache() { return request({ url: '/system/config/clearCache', url: '/system/config/refreshCache', method: 'delete' }) } ruoyi-ui/src/api/system/dict/type.js
@@ -43,10 +43,10 @@ }) } // 清理参数缓存 export function clearCache() { // 刷新字典缓存 export function refreshCache() { return request({ url: '/system/dict/type/clearCache', url: '/system/dict/type/refreshCache', method: 'delete' }) } ruoyi-ui/src/views/system/config/index.vue
@@ -99,9 +99,9 @@ plain icon="el-icon-refresh" size="mini" @click="handleClearCache" @click="handleRefreshCache" v-hasPermi="['system:config:remove']" >清理缓存</el-button> >刷新缓存</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> @@ -181,7 +181,7 @@ </template> <script> import { listConfig, getConfig, delConfig, addConfig, updateConfig, exportConfig, clearCache } from "@/api/system/config"; import { listConfig, getConfig, delConfig, addConfig, updateConfig, exportConfig, refreshCache } from "@/api/system/config"; export default { name: "Config", @@ -355,10 +355,10 @@ this.exportLoading = false; }) }, /** 清理缓存按钮操作 */ handleClearCache() { clearCache().then(response => { this.msgSuccess("清理成功"); /** 刷新缓存按钮操作 */ handleRefreshCache() { refreshCache().then(() => { this.msgSuccess("刷新成功"); }); } } ruoyi-ui/src/views/system/dict/index.vue
@@ -105,9 +105,9 @@ plain icon="el-icon-refresh" size="mini" @click="handleClearCache" @click="handleRefreshCache" v-hasPermi="['system:dict:remove']" >清理缓存</el-button> >刷新缓存</el-button> </el-col> <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> </el-row> @@ -189,7 +189,7 @@ </template> <script> import { listType, getType, delType, addType, updateType, exportType, clearCache } from "@/api/system/dict/type"; import { listType, getType, delType, addType, updateType, exportType, refreshCache } from "@/api/system/dict/type"; export default { name: "Dict", @@ -359,10 +359,10 @@ this.exportLoading = false; }) }, /** 清理缓存按钮操作 */ handleClearCache() { clearCache().then(response => { this.msgSuccess("清理成功"); /** 刷新缓存按钮操作 */ handleRefreshCache() { refreshCache().then(() => { this.msgSuccess("刷新成功"); }); } }