From 0d546e4ba491cbfc77d63b2b30b33b69bd7e46d0 Mon Sep 17 00:00:00 2001
From: RuoYi <yzz_ivy@163.com>
Date: 星期六, 30 五月 2020 13:46:31 +0800
Subject: [PATCH] 参数管理支持缓存操作
---
ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java | 5 +
ruoyi-ui/src/api/system/config.js | 8 ++
ruoyi/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java | 12 ++++
ruoyi/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java | 13 +--
ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java | 87 +++++++++++++++++++++++-----
ruoyi-ui/src/views/system/config/index.vue | 22 +++++++
6 files changed, 122 insertions(+), 25 deletions(-)
diff --git a/ruoyi-ui/src/api/system/config.js b/ruoyi-ui/src/api/system/config.js
index 124c981..2221540 100644
--- a/ruoyi-ui/src/api/system/config.js
+++ b/ruoyi-ui/src/api/system/config.js
@@ -51,6 +51,14 @@
})
}
+// 清理参数缓存
+export function clearCache() {
+ return request({
+ url: '/system/config/clearCache',
+ method: 'delete'
+ })
+}
+
// 导出参数
export function exportConfig(query) {
return request({
diff --git a/ruoyi-ui/src/views/system/config/index.vue b/ruoyi-ui/src/views/system/config/index.vue
index c2a68f9..e32d2ee 100644
--- a/ruoyi-ui/src/views/system/config/index.vue
+++ b/ruoyi-ui/src/views/system/config/index.vue
@@ -88,6 +88,15 @@
v-hasPermi="['system:config: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:config:remove']"
+ >清理缓存</el-button>
+ </el-col>
</el-row>
<el-table v-loading="loading" :data="configList" @selection-change="handleSelectionChange">
@@ -165,7 +174,7 @@
</template>
<script>
-import { listConfig, getConfig, delConfig, addConfig, updateConfig, exportConfig } from "@/api/system/config";
+import { listConfig, getConfig, delConfig, addConfig, updateConfig, exportConfig, clearCache } from "@/api/system/config";
export default {
name: "Config",
@@ -340,6 +349,17 @@
}).then(response => {
this.download(response.msg);
}).catch(function() {});
+ },
+ /** 清理缓存按钮操作 */
+ handleClearCache() {
+ const queryParams = this.queryParams;
+ clearCache().then(response => {
+ if (response.code === 200) {
+ this.msgSuccess("清理成功");
+ } else {
+ this.msgError(response.msg);
+ }
+ });
}
}
};
diff --git a/ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java
index 768bc24..a2a32b4 100644
--- a/ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java
+++ b/ruoyi/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -110,6 +110,11 @@
public static final String JWT_AUTHORITIES = "authorities";
/**
+ * 参数管理 cache key
+ */
+ public static final String SYS_CONFIG_KEY = "sys_config:";
+
+ /**
* 资源映射路径 前缀
*/
public static final String RESOURCE_PREFIX = "/profile";
diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java b/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
index 1d59084..9a832cb 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/system/controller/SysConfigController.java
@@ -118,4 +118,16 @@
{
return toAjax(configService.deleteConfigByIds(configIds));
}
+
+ /**
+ * 清空缓存
+ */
+ @PreAuthorize("@ss.hasPermi('system:config:remove')")
+ @Log(title = "参数管理", businessType = BusinessType.CLEAN)
+ @DeleteMapping("/clearCache")
+ public AjaxResult clearCache()
+ {
+ configService.clearCache();
+ return AjaxResult.success();
+ }
}
diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java b/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java
index 9fa70fc..4d95ee7 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/system/service/ISysConfigService.java
@@ -51,14 +51,6 @@
public int updateConfig(SysConfig config);
/**
- * 删除参数配置信息
- *
- * @param configId 参数ID
- * @return 结果
- */
- public int deleteConfigById(Long configId);
-
- /**
* 批量删除参数信息
*
* @param configIds 需要删除的参数ID
@@ -67,6 +59,11 @@
public int deleteConfigByIds(Long[] configIds);
/**
+ * 清空缓存数据
+ */
+ public void clearCache();
+
+ /**
* 校验参数键名是否唯一
*
* @param config 参数信息
diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
index fa54a6b..e0b008c 100644
--- a/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
+++ b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysConfigServiceImpl.java
@@ -1,10 +1,15 @@
package com.ruoyi.project.system.service.impl;
+import java.util.Collection;
import java.util.List;
+import javax.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.constant.UserConstants;
+import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.redis.RedisCache;
import com.ruoyi.project.system.domain.SysConfig;
import com.ruoyi.project.system.mapper.SysConfigMapper;
import com.ruoyi.project.system.service.ISysConfigService;
@@ -19,6 +24,22 @@
{
@Autowired
private SysConfigMapper configMapper;
+
+ @Autowired
+ private RedisCache redisCache;
+
+ /**
+ * 项目启动时,初始化参数到缓存
+ */
+ @PostConstruct
+ public void init()
+ {
+ List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
+ for (SysConfig config : configsList)
+ {
+ redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+ }
+ }
/**
* 查询参数配置信息
@@ -43,10 +64,20 @@
@Override
public String selectConfigByKey(String configKey)
{
+ String configValue = Convert.toStr(redisCache.getCacheObject(getCacheKey(configKey)));
+ if (StringUtils.isNotEmpty(configValue))
+ {
+ return configValue;
+ }
SysConfig config = new SysConfig();
config.setConfigKey(configKey);
SysConfig retConfig = configMapper.selectConfig(config);
- return StringUtils.isNotNull(retConfig) ? retConfig.getConfigValue() : "";
+ if (StringUtils.isNotNull(retConfig))
+ {
+ redisCache.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
+ return retConfig.getConfigValue();
+ }
+ return StringUtils.EMPTY;
}
/**
@@ -70,7 +101,12 @@
@Override
public int insertConfig(SysConfig config)
{
- return configMapper.insertConfig(config);
+ int row = configMapper.insertConfig(config);
+ if (row > 0)
+ {
+ redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+ }
+ return row;
}
/**
@@ -82,19 +118,12 @@
@Override
public int updateConfig(SysConfig config)
{
- return configMapper.updateConfig(config);
- }
-
- /**
- * 删除参数配置信息
- *
- * @param configId 参数ID
- * @return 结果
- */
- @Override
- public int deleteConfigById(Long configId)
- {
- return configMapper.deleteConfigById(configId);
+ int row = configMapper.updateConfig(config);
+ if (row > 0)
+ {
+ redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
+ }
+ return row;
}
/**
@@ -106,7 +135,22 @@
@Override
public int deleteConfigByIds(Long[] configIds)
{
- return configMapper.deleteConfigByIds(configIds);
+ int count = configMapper.deleteConfigByIds(configIds);
+ if (count > 0)
+ {
+ Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
+ redisCache.deleteObject(keys);
+ }
+ return count;
+ }
+
+ /**
+ * 清空缓存数据
+ */
+ public void clearCache()
+ {
+ Collection<String> keys = redisCache.keys(Constants.SYS_CONFIG_KEY + "*");
+ redisCache.deleteObject(keys);
}
/**
@@ -126,4 +170,15 @@
}
return UserConstants.UNIQUE;
}
+
+ /**
+ * 设置cache key
+ *
+ * @param configKey 参数键
+ * @return 缓存键key
+ */
+ private String getCacheKey(String configKey)
+ {
+ return Constants.SYS_CONFIG_KEY + configKey;
+ }
}
--
Gitblit v1.9.2