From af9cfb40a4c37579f21624c9f72ea4d9759095ff Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期四, 27 五月 2021 17:38:44 +0800 Subject: [PATCH] 优化参数&字典缓存操作 --- ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java | 10 ++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java | 11 +- ruoyi-ui/src/views/system/config/index.vue | 14 +- ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java | 16 ++ ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java | 3 ruoyi-ui/src/api/system/config.js | 6 ruoyi-ui/src/views/system/dict/index.vue | 14 +- ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java | 11 +- ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java | 16 ++ ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java | 29 +++-- ruoyi-ui/src/api/system/dict/type.js | 6 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java | 2 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java | 65 +++++++----- ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java | 44 +++++--- 14 files changed, 155 insertions(+), 92 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java index 41b8209..8678fd6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysConfigController.java @@ -118,18 +118,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(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java index 8d0e870..c044d25 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictDataController.java @@ -115,6 +115,7 @@ @DeleteMapping("/{dictCodes}") public AjaxResult remove(@PathVariable Long[] dictCodes) { - return toAjax(dictDataService.deleteDictDataByIds(dictCodes)); + dictDataService.deleteDictDataByIds(dictCodes); + return success(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java index efde2d4..3185f41 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysDictTypeController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/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(); } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java index 0d3a23d..16e7fca 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java +++ b/ruoyi-common/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() diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java index a937e83..6b6842f 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/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(); /** * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java index 5fe8956..63664cd 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java @@ -41,7 +41,7 @@ * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID * @return 缁撴灉 */ - public int deleteDictDataByIds(Long[] dictCodes); + public void deleteDictDataByIds(Long[] dictCodes); /** * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java index 3603d89..bbc0658 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/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(); /** * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java index f1e2f29..41ef261 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java @@ -37,11 +37,7 @@ @PostConstruct public void init() { - List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig()); - for (SysConfig config : configsList) - { - redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); - } + loadingConfigCache(); } /** @@ -137,7 +133,7 @@ * @return 缁撴灉 */ @Override - public int deleteConfigByIds(Long[] configIds) + public void deleteConfigByIds(Long[] configIds) { for (Long configId : configIds) { @@ -146,27 +142,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 鍙傛暟閰嶇疆淇℃伅 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java index 39d9505..5500f73 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/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; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java index 2db4341..d2daae4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/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; } diff --git a/ruoyi-ui/src/api/system/config.js b/ruoyi-ui/src/api/system/config.js index 2221540..f1f8727 100644 --- a/ruoyi-ui/src/api/system/config.js +++ b/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' }) } diff --git a/ruoyi-ui/src/api/system/dict/type.js b/ruoyi-ui/src/api/system/dict/type.js index d392f50..2c66bd5 100644 --- a/ruoyi-ui/src/api/system/dict/type.js +++ b/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' }) } diff --git a/ruoyi-ui/src/views/system/config/index.vue b/ruoyi-ui/src/views/system/config/index.vue index aff5089..d6275f5 100644 --- a/ruoyi-ui/src/views/system/config/index.vue +++ b/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("鍒锋柊鎴愬姛"); }); } } diff --git a/ruoyi-ui/src/views/system/dict/index.vue b/ruoyi-ui/src/views/system/dict/index.vue index d7318fd..545912a 100644 --- a/ruoyi-ui/src/views/system/dict/index.vue +++ b/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("鍒锋柊鎴愬姛"); }); } } -- Gitblit v1.9.3