From d1beac6029839b3bc91fac16b76d6d7fc62ae076 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期四, 27 五月 2021 17:55:26 +0800
Subject: [PATCH] 优化参数&字典缓存操作

---
 src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java |   65 +++++++++------
 src/main/java/com/ruoyi/common/utils/DictUtils.java                             |   10 ++
 src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java         |    2 
 src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java   |   44 +++++++---
 src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java    |    3 
 src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java         |   16 +++
 src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java |   29 ++++---
 src/main/java/com/ruoyi/project/system/controller/SysConfigController.java      |   11 +-
 src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java    |   11 +-
 src/main/java/com/ruoyi/project/system/service/ISysConfigService.java           |   16 +++
 10 files changed, 135 insertions(+), 72 deletions(-)

diff --git a/src/main/java/com/ruoyi/common/utils/DictUtils.java b/src/main/java/com/ruoyi/common/utils/DictUtils.java
index e3d3612..5241520 100644
--- a/src/main/java/com/ruoyi/common/utils/DictUtils.java
+++ b/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/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java b/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
index 9a832cb..d9c0122 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
+++ b/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();
     }
 }
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java b/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
index 83e8366..e04d937 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
+++ b/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();
     }
 }
diff --git a/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java b/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
index 816d543..bac24e2 100644
--- a/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
+++ b/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();
     }
 
diff --git a/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java b/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java
index 4d95ee7..0e58b60 100644
--- a/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java
+++ b/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();
 
     /**
      * 鏍¢獙鍙傛暟閿悕鏄惁鍞竴
diff --git a/src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java b/src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java
index 65693d1..94aaf29 100644
--- a/src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java
+++ b/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);
 
     /**
      * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
diff --git a/src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java b/src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java
index c6708d3..6483c55 100644
--- a/src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java
+++ b/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();
 
     /**
      * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
index 1ee1de6..1769405 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
+++ b/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 鍙傛暟閰嶇疆淇℃伅
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java
index 065a2ce..3620a2a 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java
+++ b/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;
     }
diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
index 84e686a..ed7674a 100644
--- a/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
+++ b/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;
     }

--
Gitblit v1.9.3