From 38d2a975821bf4cbf5986840cd34f410adf0b6a3 Mon Sep 17 00:00:00 2001
From: 疯狂的狮子li <15040126243@163.com>
Date: 星期六, 29 五月 2021 19:03:31 +0800
Subject: [PATCH] update 优化参数&字典缓存操作

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java |  184 +++++++++---------
 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java            |   10 +
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java |  374 +++++++++++++++++++------------------
 3 files changed, 295 insertions(+), 273 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
index 7f09d7c..3d8971d 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
+++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDictDataMapper.java
@@ -1,7 +1,10 @@
 package com.ruoyi.system.mapper;
 
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.ruoyi.common.core.domain.entity.SysDictData;
 import com.ruoyi.common.core.page.BaseMapperPlus;
+
+import java.util.List;
 
 /**
  * 瀛楀吀琛� 鏁版嵁灞�
@@ -10,4 +13,11 @@
  */
 public interface SysDictDataMapper extends BaseMapperPlus<SysDictData> {
 
+	default List<SysDictData> selectDictDataByType(String dictType) {
+		return selectList(
+			new LambdaQueryWrapper<SysDictData>()
+				.eq(SysDictData::getStatus, "0")
+				.eq(SysDictData::getDictType, dictType)
+				.orderByAsc(SysDictData::getDictSort));
+	}
 }
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 faae4aa..7038565 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
@@ -11,7 +11,6 @@
 import com.ruoyi.system.service.ISysDictDataService;
 import org.springframework.stereotype.Service;
 
-import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -22,100 +21,103 @@
 @Service
 public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements ISysDictDataService {
 
-    @Override
-    public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData) {
-        LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<SysDictData>()
-                .eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
-                .like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
-                .eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
-                .orderByAsc(SysDictData::getDictSort);
-        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
-    }
+	@Override
+	public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData) {
+		LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<SysDictData>()
+			.eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
+			.like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
+			.eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
+			.orderByAsc(SysDictData::getDictSort);
+		return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
+	}
 
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
-     *
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictData> selectDictDataList(SysDictData dictData) {
-        return list(new LambdaQueryWrapper<SysDictData>()
-                .eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
-                .like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
-                .eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
-                .orderByAsc(SysDictData::getDictSort));
-    }
+	/**
+	 * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀鏁版嵁
+	 *
+	 * @param dictData 瀛楀吀鏁版嵁淇℃伅
+	 * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+	 */
+	@Override
+	public List<SysDictData> selectDictDataList(SysDictData dictData) {
+		return list(new LambdaQueryWrapper<SysDictData>()
+			.eq(StrUtil.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
+			.like(StrUtil.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
+			.eq(StrUtil.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
+			.orderByAsc(SysDictData::getDictSort));
+	}
 
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
-     *
-     * @param dictType  瀛楀吀绫诲瀷
-     * @param dictValue 瀛楀吀閿��
-     * @return 瀛楀吀鏍囩
-     */
-    @Override
-    public String selectDictLabel(String dictType, String dictValue) {
-        return getOne(new LambdaQueryWrapper<SysDictData>()
-                .select(SysDictData::getDictLabel)
-                .eq(SysDictData::getDictType, dictType)
-                .eq(SysDictData::getDictValue, dictValue))
-                .getDictLabel();
-    }
+	/**
+	 * 鏍规嵁瀛楀吀绫诲瀷鍜屽瓧鍏搁敭鍊兼煡璇㈠瓧鍏告暟鎹俊鎭�
+	 *
+	 * @param dictType  瀛楀吀绫诲瀷
+	 * @param dictValue 瀛楀吀閿��
+	 * @return 瀛楀吀鏍囩
+	 */
+	@Override
+	public String selectDictLabel(String dictType, String dictValue) {
+		return getOne(new LambdaQueryWrapper<SysDictData>()
+			.select(SysDictData::getDictLabel)
+			.eq(SysDictData::getDictType, dictType)
+			.eq(SysDictData::getDictValue, dictValue))
+			.getDictLabel();
+	}
 
-    /**
-     * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
-     *
-     * @param dictCode 瀛楀吀鏁版嵁ID
-     * @return 瀛楀吀鏁版嵁
-     */
-    @Override
-    public SysDictData selectDictDataById(Long dictCode) {
-        return getById(dictCode);
-    }
+	/**
+	 * 鏍规嵁瀛楀吀鏁版嵁ID鏌ヨ淇℃伅
+	 *
+	 * @param dictCode 瀛楀吀鏁版嵁ID
+	 * @return 瀛楀吀鏁版嵁
+	 */
+	@Override
+	public SysDictData selectDictDataById(Long dictCode) {
+		return getById(dictCode);
+	}
 
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
-     *
-     * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteDictDataByIds(Long[] dictCodes) {
-        int row = baseMapper.deleteBatchIds(Arrays.asList(dictCodes));
-        if (row > 0) {
-            DictUtils.clearDictCache();
-        }
-        return row;
-    }
+	/**
+	 * 鎵归噺鍒犻櫎瀛楀吀鏁版嵁淇℃伅
+	 *
+	 * @param dictCodes 闇�瑕佸垹闄ょ殑瀛楀吀鏁版嵁ID
+	 * @return 缁撴灉
+	 */
+	@Override
+	public void deleteDictDataByIds(Long[] dictCodes) {
+		for (Long dictCode : dictCodes) {
+			SysDictData data = selectDictDataById(dictCode);
+			baseMapper.deleteById(dictCode);
+			List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
+			DictUtils.setDictCache(data.getDictType(), dictDatas);
+		}
+	}
 
-    /**
-     * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     *
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertDictData(SysDictData dictData) {
-        int row = baseMapper.insert(dictData);
-        if (row > 0) {
-            DictUtils.clearDictCache();
-        }
-        return row;
-    }
+	/**
+	 * 鏂板淇濆瓨瀛楀吀鏁版嵁淇℃伅
+	 *
+	 * @param data 瀛楀吀鏁版嵁淇℃伅
+	 * @return 缁撴灉
+	 */
+	@Override
+	public int insertDictData(SysDictData data) {
+		int row = baseMapper.insert(data);
+		if (row > 0) {
+			List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
+			DictUtils.setDictCache(data.getDictType(), dictDatas);
+		}
+		return row;
+	}
 
-    /**
-     * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅
-     *
-     * @param dictData 瀛楀吀鏁版嵁淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateDictData(SysDictData dictData) {
-        int row = baseMapper.updateById(dictData);
-        if (row > 0) {
-            DictUtils.clearDictCache();
-        }
-        return row;
-    }
+	/**
+	 * 淇敼淇濆瓨瀛楀吀鏁版嵁淇℃伅
+	 *
+	 * @param data 瀛楀吀鏁版嵁淇℃伅
+	 * @return 缁撴灉
+	 */
+	@Override
+	public int updateDictData(SysDictData data) {
+		int row = baseMapper.updateById(data);
+		if (row > 0) {
+			List<SysDictData> dictDatas = baseMapper.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 87acff4..79a4036 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
@@ -21,7 +21,6 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.PostConstruct;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -33,197 +32,208 @@
 @Service
 public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDictType> implements ISysDictTypeService {
 
-    @Autowired
-    private SysDictDataMapper dictDataMapper;
+	@Autowired
+	private SysDictTypeMapper dictTypeMapper;
 
-    /**
-     * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧瓧鍏稿埌缂撳瓨
-     */
-    @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);
-        }
-    }
+	@Autowired
+	private SysDictDataMapper dictDataMapper;
 
-    @Override
-    public TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType) {
-        Map<String, Object> params = dictType.getParams();
-        LambdaQueryWrapper<SysDictType> lqw = new LambdaQueryWrapper<SysDictType>()
-                .like(StrUtil.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
-                .eq(StrUtil.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
-                .like(StrUtil.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
-                        "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
-                        params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
-                        "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
-                        params.get("endTime"));
-        return PageUtils.buildDataInfo(page(PageUtils.buildPage(),lqw));
-    }
+	/**
+	 * 椤圭洰鍚姩鏃讹紝鍒濆鍖栧瓧鍏稿埌缂撳瓨
+	 */
+	@PostConstruct
+	public void init() {
+		loadingDictCache();
+	}
 
-    /**
-     * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
-     *
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictType> selectDictTypeList(SysDictType dictType) {
-        Map<String, Object> params = dictType.getParams();
-        return list(new LambdaQueryWrapper<SysDictType>()
-                .like(StrUtil.isNotBlank(dictType.getDictName()),SysDictType::getDictName, dictType.getDictName())
-                .eq(StrUtil.isNotBlank(dictType.getStatus()),SysDictType::getStatus, dictType.getStatus())
-                .like(StrUtil.isNotBlank(dictType.getDictType()),SysDictType::getDictType, dictType.getDictType())
-                .apply(Validator.isNotEmpty(params.get("beginTime")),
-                        "date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
-                        params.get("beginTime"))
-                .apply(Validator.isNotEmpty(params.get("endTime")),
-                        "date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
-                        params.get("endTime")));
-    }
+	@Override
+	public TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType) {
+		Map<String, Object> params = dictType.getParams();
+		LambdaQueryWrapper<SysDictType> lqw = new LambdaQueryWrapper<SysDictType>()
+			.like(StrUtil.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
+			.eq(StrUtil.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
+			.like(StrUtil.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
+			.apply(Validator.isNotEmpty(params.get("beginTime")),
+				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
+				params.get("beginTime"))
+			.apply(Validator.isNotEmpty(params.get("endTime")),
+				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
+				params.get("endTime"));
+		return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw));
+	}
 
-    /**
-     * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
-     *
-     * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictType> selectDictTypeAll() {
-        return list();
-    }
+	/**
+	 * 鏍规嵁鏉′欢鍒嗛〉鏌ヨ瀛楀吀绫诲瀷
+	 *
+	 * @param dictType 瀛楀吀绫诲瀷淇℃伅
+	 * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+	 */
+	@Override
+	public List<SysDictType> selectDictTypeList(SysDictType dictType) {
+		Map<String, Object> params = dictType.getParams();
+		return list(new LambdaQueryWrapper<SysDictType>()
+			.like(StrUtil.isNotBlank(dictType.getDictName()), SysDictType::getDictName, dictType.getDictName())
+			.eq(StrUtil.isNotBlank(dictType.getStatus()), SysDictType::getStatus, dictType.getStatus())
+			.like(StrUtil.isNotBlank(dictType.getDictType()), SysDictType::getDictType, dictType.getDictType())
+			.apply(Validator.isNotEmpty(params.get("beginTime")),
+				"date_format(create_time,'%y%m%d') >= date_format({0},'%y%m%d')",
+				params.get("beginTime"))
+			.apply(Validator.isNotEmpty(params.get("endTime")),
+				"date_format(create_time,'%y%m%d') <= date_format({0},'%y%m%d')",
+				params.get("endTime")));
+	}
 
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
-     *
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
-     */
-    @Override
-    public List<SysDictData> selectDictDataByType(String dictType) {
-        List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
-        if (CollUtil.isNotEmpty(dictDatas)) {
-            return dictDatas;
-        }
-        dictDatas = dictDataMapper.selectList(new LambdaQueryWrapper<SysDictData>()
-                .eq(SysDictData::getStatus, 0)
-                .eq(SysDictData::getDictType, dictType)
-                .orderByAsc(SysDictData::getDictSort));
-        if (CollUtil.isNotEmpty(dictDatas)) {
-            DictUtils.setDictCache(dictType, dictDatas);
-            return dictDatas;
-        }
-        return null;
-    }
+	/**
+	 * 鏍规嵁鎵�鏈夊瓧鍏哥被鍨�
+	 *
+	 * @return 瀛楀吀绫诲瀷闆嗗悎淇℃伅
+	 */
+	@Override
+	public List<SysDictType> selectDictTypeAll() {
+		return list();
+	}
 
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
-     *
-     * @param dictId 瀛楀吀绫诲瀷ID
-     * @return 瀛楀吀绫诲瀷
-     */
-    @Override
-    public SysDictType selectDictTypeById(Long dictId) {
-        return getById(dictId);
-    }
+	/**
+	 * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ瀛楀吀鏁版嵁
+	 *
+	 * @param dictType 瀛楀吀绫诲瀷
+	 * @return 瀛楀吀鏁版嵁闆嗗悎淇℃伅
+	 */
+	@Override
+	public List<SysDictData> selectDictDataByType(String dictType) {
+		List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
+		if (CollUtil.isNotEmpty(dictDatas)) {
+			return dictDatas;
+		}
+		dictDatas = dictDataMapper.selectDictDataByType(dictType);
+		if (CollUtil.isNotEmpty(dictDatas)) {
+			DictUtils.setDictCache(dictType, dictDatas);
+			return dictDatas;
+		}
+		return null;
+	}
 
-    /**
-     * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
-     *
-     * @param dictType 瀛楀吀绫诲瀷
-     * @return 瀛楀吀绫诲瀷
-     */
-    @Override
-    public SysDictType selectDictTypeByType(String dictType) {
-        return getOne(new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getDictType, dictType));
-    }
+	/**
+	 * 鏍规嵁瀛楀吀绫诲瀷ID鏌ヨ淇℃伅
+	 *
+	 * @param dictId 瀛楀吀绫诲瀷ID
+	 * @return 瀛楀吀绫诲瀷
+	 */
+	@Override
+	public SysDictType selectDictTypeById(Long dictId) {
+		return getById(dictId);
+	}
 
-    /**
-     * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅
-     *
-     * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
-     * @return 缁撴灉
-     */
-    @Override
-    public int 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()));
-            }
-        }
-        int count = baseMapper.deleteBatchIds(Arrays.asList(dictIds));
-        if (count > 0) {
-            DictUtils.clearDictCache();
-        }
-        return count;
-    }
+	/**
+	 * 鏍规嵁瀛楀吀绫诲瀷鏌ヨ淇℃伅
+	 *
+	 * @param dictType 瀛楀吀绫诲瀷
+	 * @return 瀛楀吀绫诲瀷
+	 */
+	@Override
+	public SysDictType selectDictTypeByType(String dictType) {
+		return getOne(new LambdaQueryWrapper<SysDictType>().eq(SysDictType::getDictType, dictType));
+	}
 
-    /**
-     * 娓呯┖缂撳瓨鏁版嵁
-     */
-    @Override
-    public void clearCache() {
-        DictUtils.clearDictCache();
-    }
+	/**
+	 * 鎵归噺鍒犻櫎瀛楀吀绫诲瀷淇℃伅
+	 *
+	 * @param dictIds 闇�瑕佸垹闄ょ殑瀛楀吀ID
+	 * @return 缁撴灉
+	 */
+	@Override
+	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.deleteById(dictId);
+			DictUtils.removeDictCache(dictType.getDictType());
+		}
+	}
 
-    /**
-     * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅
-     *
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertDictType(SysDictType dictType) {
-        int row = baseMapper.insert(dictType);
-        if (row > 0) {
-            DictUtils.clearDictCache();
-        }
-        return row;
-    }
+	/**
+	 * 鍔犺浇瀛楀吀缂撳瓨鏁版嵁
+	 */
+	@Override
+	public void loadingDictCache() {
+		List<SysDictType> dictTypeList = list();
+		for (SysDictType dictType : dictTypeList) {
+			List<SysDictData> dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType());
+			DictUtils.setDictCache(dictType.getDictType(), dictDatas);
+		}
+	}
 
-    /**
-     * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅
-     *
-     * @param dictType 瀛楀吀绫诲瀷淇℃伅
-     * @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();
-        }
-        return row;
-    }
+	/**
+	 * 娓呯┖瀛楀吀缂撳瓨鏁版嵁
+	 */
+	@Override
+	public void clearDictCache() {
+		DictUtils.clearDictCache();
+	}
 
-    /**
-     * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
-     *
-     * @param dict 瀛楀吀绫诲瀷
-     * @return 缁撴灉
-     */
-    @Override
-    public String checkDictTypeUnique(SysDictType dict) {
-        Long dictId = Validator.isNull(dict.getDictId()) ? -1L : dict.getDictId();
-        SysDictType dictType = getOne(new LambdaQueryWrapper<SysDictType>()
-                .eq(SysDictType::getDictType, dict.getDictType())
-                .last("limit 1"));
-        if (Validator.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
-            return UserConstants.NOT_UNIQUE;
-        }
-        return UserConstants.UNIQUE;
-    }
+	/**
+	 * 閲嶇疆瀛楀吀缂撳瓨鏁版嵁
+	 */
+	@Override
+	public void resetDictCache() {
+		clearDictCache();
+		loadingDictCache();
+	}
+
+	/**
+	 * 鏂板淇濆瓨瀛楀吀绫诲瀷淇℃伅
+	 *
+	 * @param dict 瀛楀吀绫诲瀷淇℃伅
+	 * @return 缁撴灉
+	 */
+	@Override
+	public int insertDictType(SysDictType dict) {
+		int row = baseMapper.insert(dict);
+		if (row > 0) {
+			DictUtils.setDictCache(dict.getDictType(), null);
+		}
+		return row;
+	}
+
+	/**
+	 * 淇敼淇濆瓨瀛楀吀绫诲瀷淇℃伅
+	 *
+	 * @param dict 瀛楀吀绫诲瀷淇℃伅
+	 * @return 缁撴灉
+	 */
+	@Override
+	@Transactional
+	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;
+	}
+
+	/**
+	 * 鏍¢獙瀛楀吀绫诲瀷绉版槸鍚﹀敮涓�
+	 *
+	 * @param dict 瀛楀吀绫诲瀷
+	 * @return 缁撴灉
+	 */
+	@Override
+	public String checkDictTypeUnique(SysDictType dict) {
+		Long dictId = Validator.isNull(dict.getDictId()) ? -1L : dict.getDictId();
+		SysDictType dictType = getOne(new LambdaQueryWrapper<SysDictType>()
+			.eq(SysDictType::getDictType, dict.getDictType())
+			.last("limit 1"));
+		if (Validator.isNotNull(dictType) && dictType.getDictId().longValue() != dictId.longValue()) {
+			return UserConstants.NOT_UNIQUE;
+		}
+		return UserConstants.UNIQUE;
+	}
 }

--
Gitblit v1.9.3