ruoyi-ui/src/api/system/dict/data.js
@@ -20,7 +20,7 @@ // æ ¹æ®åå ¸ç±»åæ¥è¯¢åå ¸æ°æ®ä¿¡æ¯ export function getDicts(dictType) { return request({ url: '/system/dict/data/dictType/' + dictType, url: '/system/dict/data/type/' + dictType, method: 'get' }) } ruoyi-ui/src/api/system/dict/type.js
@@ -43,6 +43,14 @@ }) } // æ¸ çåæ°ç¼å export function clearCache() { return request({ url: '/system/dict/type/clearCache', method: 'delete' }) } // 导åºåå ¸ç±»å export function exportType(query) { return request({ ruoyi-ui/src/views/system/config/index.vue
@@ -352,7 +352,6 @@ }, /** æ¸ çç¼åæé®æä½ */ handleClearCache() { const queryParams = this.queryParams; clearCache().then(response => { if (response.code === 200) { this.msgSuccess("æ¸ çæå"); ruoyi-ui/src/views/system/dict/index.vue
@@ -94,6 +94,15 @@ v-hasPermi="['system:dict:export']" >导åº</el-button> </el-col> <el-col :span="1.5"> <el-button type="danger" icon="el-icon-refresh" size="mini" @click="handleClearCache" v-hasPermi="['system:dict:remove']" >æ¸ çç¼å</el-button> </el-col> </el-row> <el-table v-loading="loading" :data="typeList" @selection-change="handleSelectionChange"> @@ -173,7 +182,7 @@ </template> <script> import { listType, getType, delType, addType, updateType, exportType } from "@/api/system/dict/type"; import { listType, getType, delType, addType, updateType, exportType, clearCache } from "@/api/system/dict/type"; export default { name: "Dict", @@ -344,6 +353,16 @@ }).then(response => { this.download(response.msg); }).catch(function() {}); }, /** æ¸ çç¼åæé®æä½ */ handleClearCache() { clearCache().then(response => { if (response.code === 200) { this.msgSuccess("æ¸ çæå"); } else { this.msgError(response.msg); } }); } } }; ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -115,6 +115,11 @@ public static final String SYS_CONFIG_KEY = "sys_config:"; /** * åå ¸ç®¡ç cache key */ public static final String SYS_DICT_KEY = "sys_dict:"; /** * èµæºæ å°è·¯å¾ åç¼ */ public static final String RESOURCE_PREFIX = "/profile"; ruoyi/src/main/java/com/ruoyi/common/utils/DictUtils.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,64 @@ package com.ruoyi.common.utils; import java.util.Collection; import java.util.List; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.utils.spring.SpringUtils; import com.ruoyi.framework.redis.RedisCache; import com.ruoyi.project.system.domain.SysDictData; /** * åå ¸å·¥å ·ç±» * * @author ruoyi */ public class DictUtils { /** * 设置åå ¸ç¼å * * @param key åæ°é® * @param dictDatas åå ¸æ°æ®å表 */ public static void setDictCache(String key, List<SysDictData> dictDatas) { SpringUtils.getBean(RedisCache.class).setCacheObject(getCacheKey(key), dictDatas); } /** * è·ååå ¸ç¼å * * @param key åæ°é® * @return dictDatas åå ¸æ°æ®å表 */ public static List<SysDictData> getDictCache(String key) { Object cacheObj = SpringUtils.getBean(RedisCache.class).getCacheObject(getCacheKey(key)); if (StringUtils.isNotNull(cacheObj)) { List<SysDictData> DictDatas = StringUtils.cast(cacheObj); return DictDatas; } return null; } /** * æ¸ ç©ºåå ¸ç¼å */ public static void clearDictCache() { Collection<String> keys = SpringUtils.getBean(RedisCache.class).keys(Constants.SYS_DICT_KEY + "*"); SpringUtils.getBean(RedisCache.class).deleteObject(keys); } /** * 设置cache key * * @param configKey åæ°é® * @return ç¼åé®key */ public static String getCacheKey(String configKey) { return Constants.SYS_DICT_KEY + configKey; } } ruoyi/src/main/java/com/ruoyi/common/utils/StringUtils.java
@@ -450,4 +450,10 @@ } return sb.toString(); } @SuppressWarnings("unchecked") public static <T> T cast(Object obj) { return (T) obj; } } ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDictDataController.java
@@ -21,6 +21,7 @@ import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.project.system.domain.SysDictData; import com.ruoyi.project.system.service.ISysDictDataService; import com.ruoyi.project.system.service.ISysDictTypeService; /** * æ°æ®åå ¸ä¿¡æ¯ @@ -33,6 +34,9 @@ { @Autowired private ISysDictDataService dictDataService; @Autowired private ISysDictTypeService dictTypeService; @PreAuthorize("@ss.hasPermi('system:dict:list')") @GetMapping("/list") @@ -66,10 +70,10 @@ /** * æ ¹æ®åå ¸ç±»åæ¥è¯¢åå ¸æ°æ®ä¿¡æ¯ */ @GetMapping(value = "/dictType/{dictType}") @GetMapping(value = "/type/{dictType}") public AjaxResult dictType(@PathVariable String dictType) { return AjaxResult.success(dictDataService.selectDictDataByType(dictType)); return AjaxResult.success(dictTypeService.selectDictDataByType(dictType)); } /** ruoyi/src/main/java/com/ruoyi/project/system/controller/SysDictTypeController.java
@@ -108,6 +108,18 @@ } /** * æ¸ ç©ºç¼å */ @PreAuthorize("@ss.hasPermi('system:dict:remove')") @Log(title = "åå ¸ç±»å", businessType = BusinessType.CLEAN) @DeleteMapping("/clearCache") public AjaxResult clearCache() { dictTypeService.clearCache(); return AjaxResult.success(); } /** * è·ååå ¸éæ©æ¡å表 */ @GetMapping("/optionselect") ruoyi/src/main/java/com/ruoyi/project/system/service/ISysDictDataService.java
@@ -19,14 +19,6 @@ public List<SysDictData> selectDictDataList(SysDictData dictData); /** * æ ¹æ®åå ¸ç±»åæ¥è¯¢åå ¸æ°æ® * * @param dictType åå ¸ç±»å * @return åå ¸æ°æ®éåä¿¡æ¯ */ public List<SysDictData> selectDictDataByType(String dictType); /** * æ ¹æ®åå ¸ç±»åååå ¸é®å¼æ¥è¯¢åå ¸æ°æ®ä¿¡æ¯ * * @param dictType åå ¸ç±»å @@ -42,14 +34,6 @@ * @return åå ¸æ°æ® */ public SysDictData selectDictDataById(Long dictCode); /** * éè¿åå ¸IDå é¤åå ¸æ°æ®ä¿¡æ¯ * * @param dictCode åå ¸æ°æ®ID * @return ç»æ */ public int deleteDictDataById(Long dictCode); /** * æ¹éå é¤åå ¸æ°æ®ä¿¡æ¯ ruoyi/src/main/java/com/ruoyi/project/system/service/ISysDictTypeService.java
@@ -1,6 +1,7 @@ package com.ruoyi.project.system.service; import java.util.List; import com.ruoyi.project.system.domain.SysDictData; import com.ruoyi.project.system.domain.SysDictType; /** @@ -26,6 +27,14 @@ public List<SysDictType> selectDictTypeAll(); /** * æ ¹æ®åå ¸ç±»åæ¥è¯¢åå ¸æ°æ® * * @param dictType åå ¸ç±»å * @return åå ¸æ°æ®éåä¿¡æ¯ */ public List<SysDictData> selectDictDataByType(String dictType); /** * æ ¹æ®åå ¸ç±»åIDæ¥è¯¢ä¿¡æ¯ * * @param dictId åå ¸ç±»åID @@ -42,14 +51,6 @@ public SysDictType selectDictTypeByType(String dictType); /** * éè¿åå ¸IDå é¤åå ¸ä¿¡æ¯ * * @param dictId åå ¸ID * @return ç»æ */ public int deleteDictTypeById(Long dictId); /** * æ¹éå é¤åå ¸ä¿¡æ¯ * * @param dictIds éè¦å é¤çåå ¸ID @@ -58,6 +59,11 @@ public int deleteDictTypeByIds(Long[] dictIds); /** * æ¸ ç©ºç¼åæ°æ® */ public void clearCache(); /** * æ°å¢ä¿ååå ¸ç±»åä¿¡æ¯ * * @param dictType åå ¸ç±»åä¿¡æ¯ ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDictDataServiceImpl.java
@@ -3,6 +3,7 @@ import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.project.system.domain.SysDictData; import com.ruoyi.project.system.mapper.SysDictDataMapper; import com.ruoyi.project.system.service.ISysDictDataService; @@ -31,18 +32,6 @@ } /** * æ ¹æ®åå ¸ç±»åæ¥è¯¢åå ¸æ°æ® * * @param dictType åå ¸ç±»å * @return åå ¸æ°æ®éåä¿¡æ¯ */ @Override public List<SysDictData> selectDictDataByType(String dictType) { return dictDataMapper.selectDictDataByType(dictType); } /** * æ ¹æ®åå ¸ç±»åååå ¸é®å¼æ¥è¯¢åå ¸æ°æ®ä¿¡æ¯ * * @param dictType åå ¸ç±»å @@ -68,18 +57,6 @@ } /** * éè¿åå ¸IDå é¤åå ¸æ°æ®ä¿¡æ¯ * * @param dictCode åå ¸æ°æ®ID * @return ç»æ */ @Override public int deleteDictDataById(Long dictCode) { return dictDataMapper.deleteDictDataById(dictCode); } /** * æ¹éå é¤åå ¸æ°æ®ä¿¡æ¯ * * @param dictCodes éè¦å é¤çåå ¸æ°æ®ID @@ -87,7 +64,12 @@ */ public int deleteDictDataByIds(Long[] dictCodes) { return dictDataMapper.deleteDictDataByIds(dictCodes); int row = dictDataMapper.deleteDictDataByIds(dictCodes); if (row > 0) { DictUtils.clearDictCache(); } return row; } /** @@ -99,7 +81,12 @@ @Override public int insertDictData(SysDictData dictData) { return dictDataMapper.insertDictData(dictData); int row = dictDataMapper.insertDictData(dictData); if (row > 0) { DictUtils.clearDictCache(); } return row; } /** @@ -111,6 +98,11 @@ @Override public int updateDictData(SysDictData dictData) { return dictDataMapper.updateDictData(dictData); int row = dictDataMapper.updateDictData(dictData); if (row > 0) { DictUtils.clearDictCache(); } return row; } } ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysDictTypeServiceImpl.java
@@ -1,11 +1,15 @@ package com.ruoyi.project.system.service.impl; import java.util.List; import javax.annotation.PostConstruct; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.exception.CustomException; import com.ruoyi.common.utils.DictUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.project.system.domain.SysDictData; import com.ruoyi.project.system.domain.SysDictType; import com.ruoyi.project.system.mapper.SysDictDataMapper; import com.ruoyi.project.system.mapper.SysDictTypeMapper; @@ -24,6 +28,20 @@ @Autowired private SysDictDataMapper dictDataMapper; /** * 项ç®å¯å¨æ¶ï¼åå§ååå ¸å°ç¼å */ @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); } } /** * æ ¹æ®æ¡ä»¶å页æ¥è¯¢åå ¸ç±»å @@ -46,6 +64,29 @@ public List<SysDictType> selectDictTypeAll() { return dictTypeMapper.selectDictTypeAll(); } /** * æ ¹æ®åå ¸ç±»åæ¥è¯¢åå ¸æ°æ® * * @param dictType åå ¸ç±»å * @return åå ¸æ°æ®éåä¿¡æ¯ */ @Override public List<SysDictData> selectDictDataByType(String dictType) { List<SysDictData> dictDatas = DictUtils.getDictCache(dictType); if (StringUtils.isNotNull(dictDatas)) { return dictDatas; } dictDatas = dictDataMapper.selectDictDataByType(dictType); if (StringUtils.isNotNull(dictDatas)) { DictUtils.setDictCache(dictType, dictDatas); return dictDatas; } return null; } /** @@ -72,18 +113,6 @@ } /** * éè¿åå ¸IDå é¤åå ¸ä¿¡æ¯ * * @param dictId åå ¸ID * @return ç»æ */ @Override public int deleteDictTypeById(Long dictId) { return dictTypeMapper.deleteDictTypeById(dictId); } /** * æ¹éå é¤åå ¸ç±»åä¿¡æ¯ * * @param dictIds éè¦å é¤çåå ¸ID @@ -91,7 +120,28 @@ */ public int deleteDictTypeByIds(Long[] dictIds) { return dictTypeMapper.deleteDictTypeByIds(dictIds); for (Long dictId : dictIds) { SysDictType dictType = selectDictTypeById(dictId); if (dictDataMapper.countDictDataByType(dictType.getDictType()) > 0) { throw new CustomException(String.format("%1$så·²åé ,ä¸è½å é¤", dictType.getDictName())); } } int count = dictTypeMapper.deleteDictTypeByIds(dictIds); if (count > 0) { DictUtils.clearDictCache(); } return count; } /** * æ¸ ç©ºç¼åæ°æ® */ public void clearCache() { DictUtils.clearDictCache(); } /** @@ -103,7 +153,12 @@ @Override public int insertDictType(SysDictType dictType) { return dictTypeMapper.insertDictType(dictType); int row = dictTypeMapper.insertDictType(dictType); if (row > 0) { DictUtils.clearDictCache(); } return row; } /** @@ -118,7 +173,12 @@ { SysDictType oldDict = dictTypeMapper.selectDictTypeById(dictType.getDictId()); dictDataMapper.updateDictDataType(oldDict.getDictType(), dictType.getDictType()); return dictTypeMapper.updateDictType(dictType); int row = dictTypeMapper.updateDictType(dictType); if (row > 0) { DictUtils.clearDictCache(); } return row; } /**