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