From 2115edcfb45a3c177d4657f0691409a9da23f77a Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: Mon, 21 Sep 2020 18:29:44 +0800
Subject: [PATCH] 菜单新增是否缓存keep-alive
---
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java | 95 +++++++++++++++++++++++++++++++++++++++--------
1 files changed, 78 insertions(+), 17 deletions(-)
diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
index 7684566..a004d5b 100644
--- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
+++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
@@ -1,17 +1,19 @@
package com.ruoyi.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.core.constant.UserConstants;
+import com.ruoyi.common.core.exception.CustomException;
import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.system.domain.SysDictData;
import com.ruoyi.system.domain.SysDictType;
import com.ruoyi.system.mapper.SysDictDataMapper;
import com.ruoyi.system.mapper.SysDictTypeMapper;
import com.ruoyi.system.service.ISysDictTypeService;
+import com.ruoyi.system.utils.DictUtils;
/**
* 字典 业务层处理
@@ -26,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);
+ }
+ }
/**
* 根据条件分页查询字典类型
@@ -51,6 +67,29 @@
}
/**
+ * 根据字典类型查询字典数据
+ *
+ * @param dictType 字典类型
+ * @return 字典数据集合信息
+ */
+ @Override
+ public List<SysDictData> selectDictDataByType(String dictType)
+ {
+ List<SysDictData> dictDatas = DictUtils.getDictCache(dictType);
+ if (StringUtils.isNotEmpty(dictDatas))
+ {
+ return dictDatas;
+ }
+ dictDatas = dictDataMapper.selectDictDataByType(dictType);
+ if (StringUtils.isNotEmpty(dictDatas))
+ {
+ DictUtils.setDictCache(dictType, dictDatas);
+ return dictDatas;
+ }
+ return null;
+ }
+
+ /**
* 根据字典类型ID查询信息
*
* @param dictId 字典类型ID
@@ -68,21 +107,10 @@
* @param dictType 字典类型
* @return 字典类型
*/
+ @Override
public SysDictType selectDictTypeByType(String dictType)
{
return dictTypeMapper.selectDictTypeByType(dictType);
- }
-
- /**
- * 通过字典ID删除字典信息
- *
- * @param dictId 字典ID
- * @return 结果
- */
- @Override
- public int deleteDictTypeById(Long dictId)
- {
- return dictTypeMapper.deleteDictTypeById(dictId);
}
/**
@@ -91,9 +119,32 @@
* @param dictIds 需要删除的字典ID
* @return 结果
*/
+ @Override
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;
+ }
+
+ /**
+ * 清空缓存数据
+ */
+ @Override
+ public void clearCache()
+ {
+ DictUtils.clearDictCache();
}
/**
@@ -105,7 +156,12 @@
@Override
public int insertDictType(SysDictType dictType)
{
- return dictTypeMapper.insertDictType(dictType);
+ int row = dictTypeMapper.insertDictType(dictType);
+ if (row > 0)
+ {
+ DictUtils.clearDictCache();
+ }
+ return row;
}
/**
@@ -120,7 +176,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;
}
/**
--
Gitblit v1.9.3