1 files renamed
9 files modified
| | |
| | | public static final String IS_ASC = "isAsc";
|
| | |
|
| | | /**
|
| | | * 参数管理 cache name
|
| | | */
|
| | | public static final String SYS_CONFIG_CACHE = "sys-config";
|
| | |
|
| | | /**
|
| | | * 参数管理 cache key
|
| | | */
|
| | | public static final String SYS_CONFIG_KEY = "sys_config:";
|
| | |
|
| | | /**
|
| | | * 字典管理 cache name
|
| | | */
|
| | | public static final String SYS_DICT_CACHE = "sys-dict";
|
| | |
|
| | | /**
|
| | | * 字典管理 cache key
|
| | | */
|
| | | public static final String SYS_DICT_KEY = "sys_dict:";
|
| | |
|
| | | /**
|
| | | * 验证码 redis key
|
| | | */
|
| | | public static final String CAPTCHA_CODE_KEY = "captcha_codes:";
|
| | |
| | | public static final Integer CAPTCHA_EXPIRATION = 2;
|
| | |
|
| | | /**
|
| | | * 参数管理 cache key
|
| | | */
|
| | | public static final String SYS_CONFIG_KEY = "sys_config:";
|
| | |
|
| | | /**
|
| | | * 资源映射路径 前缀
|
| | | */
|
| | | public static final String RESOURCE_PREFIX = "/profile";
|
| | |
| | | package com.ruoyi.common.redis.configure;
|
| | |
|
| | | import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
| | | import org.springframework.cache.annotation.CachingConfigurerSupport;
|
| | | import org.springframework.cache.annotation.EnableCaching;
|
| | | import org.springframework.context.annotation.Bean;
|
| | |
| | | public class RedisConfig extends CachingConfigurerSupport
|
| | | {
|
| | | @Bean
|
| | | @ConditionalOnMissingBean(name = "redisTemplate")
|
| | | @SuppressWarnings(value = { "unchecked", "rawtypes", "deprecation" })
|
| | | public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
|
| | | {
|
| | |
| | | org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
|
| | | com.ruoyi.common.redis.configure.RedisConfig,\
|
| | | com.ruoyi.common.redis.service.RedisService
|
| | |
|
| | |
|
| | |
| | | <groupId>com.ruoyi</groupId>
|
| | | <artifactId>ruoyi-common-swagger</artifactId>
|
| | | </dependency>
|
| | | |
| | | <!-- RuoYi Common Redis-->
|
| | | <dependency>
|
| | | <groupId>com.ruoyi</groupId>
|
| | | <artifactId>ruoyi-common-redis</artifactId>
|
| | | </dependency>
|
| | |
|
| | | </dependencies>
|
| | |
|
| | |
| | | public AjaxResult remove(@PathVariable Long[] configIds)
|
| | | {
|
| | | 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();
|
| | | }
|
| | | }
|
| | |
| | | public int updateConfig(SysConfig config);
|
| | |
|
| | | /**
|
| | | * 删除参数配置信息
|
| | | * |
| | | * @param configId 参数ID
|
| | | * @return 结果
|
| | | */
|
| | | public int deleteConfigById(Long configId);
|
| | |
|
| | | /**
|
| | | * 批量删除参数信息
|
| | | *
|
| | | * @param configIds 需要删除的参数ID
|
| | |
| | | public int deleteConfigByIds(Long[] configIds);
|
| | |
|
| | | /**
|
| | | * 清空缓存数据
|
| | | */
|
| | | public void clearCache();
|
| | |
|
| | | /**
|
| | | * 校验参数键名是否唯一
|
| | | *
|
| | | * @param config 参数信息
|
| | |
| | | package com.ruoyi.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.core.constant.Constants;
|
| | | import com.ruoyi.common.core.constant.UserConstants;
|
| | | import com.ruoyi.common.core.text.Convert;
|
| | | import com.ruoyi.common.core.utils.StringUtils;
|
| | | import com.ruoyi.common.redis.service.RedisService;
|
| | | import com.ruoyi.system.domain.SysConfig;
|
| | | import com.ruoyi.system.mapper.SysConfigMapper;
|
| | | import com.ruoyi.system.service.ISysConfigService;
|
| | |
| | | {
|
| | | @Autowired
|
| | | private SysConfigMapper configMapper;
|
| | |
|
| | | @Autowired
|
| | | private RedisService redisService;
|
| | |
|
| | | /**
|
| | | * 项目启动时,初始化参数到缓存
|
| | | */
|
| | | @PostConstruct
|
| | | public void init()
|
| | | {
|
| | | List<SysConfig> configsList = configMapper.selectConfigList(new SysConfig());
|
| | | for (SysConfig config : configsList)
|
| | | {
|
| | | redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
|
| | | }
|
| | | }
|
| | |
|
| | | /**
|
| | | * 查询参数配置信息
|
| | |
| | | @Override
|
| | | public String selectConfigByKey(String configKey)
|
| | | {
|
| | | String configValue = Convert.toStr(redisService.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))
|
| | | {
|
| | | redisService.setCacheObject(getCacheKey(configKey), retConfig.getConfigValue());
|
| | | return retConfig.getConfigValue();
|
| | | }
|
| | | return StringUtils.EMPTY;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | @Override
|
| | | public int insertConfig(SysConfig config)
|
| | | {
|
| | | return configMapper.insertConfig(config);
|
| | | int row = configMapper.insertConfig(config);
|
| | | if (row > 0)
|
| | | {
|
| | | redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
|
| | | }
|
| | | return row;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | @Override
|
| | | public int updateConfig(SysConfig config)
|
| | | {
|
| | | return configMapper.updateConfig(config);
|
| | | }
|
| | |
|
| | | /**
|
| | | * 删除参数配置信息
|
| | | * |
| | | * @param configId 参数ID
|
| | | * @return 结果
|
| | | */
|
| | | @Override
|
| | | public int deleteConfigById(Long configId)
|
| | | int row = configMapper.updateConfig(config);
|
| | | if (row > 0)
|
| | | {
|
| | | return configMapper.deleteConfigById(configId);
|
| | | redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
|
| | | }
|
| | | return row;
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | @Override
|
| | | public int deleteConfigByIds(Long[] configIds)
|
| | | {
|
| | | return configMapper.deleteConfigByIds(configIds);
|
| | | int count = configMapper.deleteConfigByIds(configIds);
|
| | | if (count > 0)
|
| | | {
|
| | | Collection<String> keys = redisService.keys(Constants.SYS_CONFIG_KEY + "*");
|
| | | redisService.deleteObject(keys);
|
| | | }
|
| | | return count;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 清空缓存数据
|
| | | */
|
| | | public void clearCache()
|
| | | {
|
| | | Collection<String> keys = redisService.keys(Constants.SYS_CONFIG_KEY + "*");
|
| | | redisService.deleteObject(keys);
|
| | | }
|
| | |
|
| | | /**
|
| | |
| | | }
|
| | | return UserConstants.UNIQUE;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 设置cache key
|
| | | * |
| | | * @param configKey 参数键
|
| | | * @return 缓存键key
|
| | | */
|
| | | private String getCacheKey(String configKey)
|
| | | {
|
| | | return Constants.SYS_CONFIG_KEY + configKey;
|
| | | }
|
| | | }
|
| | |
| | | method: 'delete'
|
| | | })
|
| | | }
|
| | |
|
| | | // 清理参数缓存
|
| | | export function clearCache() {
|
| | | return request({
|
| | | url: '/system/config/clearCache',
|
| | | method: 'delete'
|
| | | })
|
| | | }
|
| | |
| | | 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">
|
| | |
| | | </template>
|
| | |
|
| | | <script>
|
| | | import { listConfig, getConfig, delConfig, addConfig, updateConfig } from "@/api/system/config";
|
| | | import { listConfig, getConfig, delConfig, addConfig, updateConfig, clearCache } from "@/api/system/config";
|
| | |
|
| | | export default {
|
| | | name: "Config",
|
| | |
| | | this.download('system/config/export', {
|
| | | ...this.queryParams
|
| | | }, `config_${new Date().getTime()}.xlsx`)
|
| | | },
|
| | | /** 清理缓存按钮操作 */
|
| | | handleClearCache() {
|
| | | const queryParams = this.queryParams;
|
| | | clearCache().then(response => {
|
| | | if (response.code === 200) {
|
| | | this.msgSuccess("清理成功");
|
| | | } else {
|
| | | this.msgError(response.msg);
|
| | | }
|
| | | });
|
| | | }
|
| | | }
|
| | | };
|
| File was renamed from sql/ry_config.sql |
| | |
| | | (2,'ruoyi-gateway-dev.yml','DEFAULT_GROUP','spring: \r\n redis:\r\n host: localhost\r\n port: 6379\r\n password: \r\n cloud:\r\n gateway:\r\n discovery:\r\n locator:\r\n lowerCaseServiceId: true\r\n enabled: true\r\n routes:\r\n # 认证中心\r\n - id: ruoyi-auth\r\n uri: lb://ruoyi-auth\r\n predicates:\r\n - Path=/auth/**\r\n filters:\r\n # 验证码处理\r\n - ValidateCodeFilter\r\n - StripPrefix=1\r\n # 代码生成\r\n - id: ruoyi-gen\r\n uri: lb://ruoyi-gen\r\n predicates:\r\n - Path=/code/**\r\n filters:\r\n - StripPrefix=1\r\n # 定时任务\r\n - id: ruoyi-job\r\n uri: lb://ruoyi-job\r\n predicates:\r\n - Path=/schedule/**\r\n filters:\r\n - StripPrefix=1\r\n # 系统模块\r\n - id: ruoyi-system\r\n uri: lb://ruoyi-system\r\n predicates:\r\n - Path=/system/**\r\n filters:\r\n - StripPrefix=1\r\n','cecd783e043ac4e094ff9d6af643ae0e','2020-05-14 14:17:55','2020-05-24 19:41:50',NULL,'0:0:0:0:0:0:0:1','','','网关模块','null','null','yaml','null'),
|
| | | (3,'ruoyi-auth-dev.yml','DEFAULT_GROUP','spring: \r\n main: \r\n allow-bean-definition-overriding: true\r\n datasource:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n redis:\r\n host: localhost\r\n port: 6379\r\n password: \r\n','e3db7475e43b8a83b0247ca8fd77339e','2020-05-14 13:20:49','2020-05-19 18:50:35',NULL,'0:0:0:0:0:0:0:1','','','认证中心','null','null','yaml','null'),
|
| | | (4,'ruoyi-monitor-dev.yml','DEFAULT_GROUP','# Spring\r\nspring: \r\n security:\r\n user:\r\n name: ruoyi\r\n password: 123456\r\n boot:\r\n admin:\r\n ui:\r\n title: 若依服务状态监控\r\n','8e49d78998a7780d780305aeefe4fb1b','2020-05-19 15:14:01','2020-05-19 18:50:44',NULL,'0:0:0:0:0:0:0:1','','','监控中心','null','null','yaml','null'),
|
| | | (5,'ruoyi-system-dev.yml','DEFAULT_GROUP','# Spring\r\nspring: \r\n datasource:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n\r\n# Mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.system\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger 配置\r\nswagger:\r\n title: 系统模块接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n authorization:\r\n name: RuoYi OAuth\r\n auth-regex: ^.*$\r\n authorization-scope-list:\r\n - scope: server\r\n description: 客户端授权范围\r\n token-url-list:\r\n - http://localhost:8080/auth/oauth/token\r\n','4b9284d702b9ab819a698708254b0b06','2020-05-14 13:37:04','2020-05-19 18:50:57',NULL,'0:0:0:0:0:0:0:1','','','系统模块','null','null','yaml','null'),
|
| | | (5,'ruoyi-system-dev.yml','DEFAULT_GROUP','# Spring\r\nspring: \r\n redis:\r\n host: localhost\r\n port: 6379\r\n password: \r\n datasource:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n\r\n# Mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.system\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger 配置\r\nswagger:\r\n title: 系统模块接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n authorization:\r\n name: RuoYi OAuth\r\n auth-regex: ^.*$\r\n authorization-scope-list:\r\n - scope: server\r\n description: 客户端授权范围\r\n token-url-list:\r\n - http://localhost:8080/auth/oauth/token\r\n','06f95c879d284ec8031cc44805e62b50','2020-05-14 13:37:04','2020-06-04 17:14:14',NULL,'0:0:0:0:0:0:0:1','','','系统模块','null','null','yaml','null'),
|
| | | (6,'ruoyi-gen-dev.yml','DEFAULT_GROUP','# Spring\r\nspring: \r\n datasource:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n\r\n# Mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.gen.domain\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger 配置\r\nswagger:\r\n title: 代码生成接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n authorization:\r\n name: RuoYi OAuth\r\n auth-regex: ^.*$\r\n authorization-scope-list:\r\n - scope: server\r\n description: 客户端授权范围\r\n token-url-list:\r\n - http://localhost:8080/auth/oauth/token\r\n\r\n# 代码生成\r\ngen: \r\n # 作者\r\n author: ruoyi\r\n # 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool\r\n packageName: com.ruoyi.system\r\n # 自动去除表前缀,默认是false\r\n autoRemovePre: false\r\n # 表前缀(生成类名不会包含表前缀,多个用逗号分隔)\r\n tablePrefix: sys_\r\n','aa7e94e2abbdeb408bd8981391ab82f8','2020-05-14 13:54:50','2020-05-19 18:51:11',NULL,'0:0:0:0:0:0:0:1','','','代码生成','null','null','yaml','null'),
|
| | | (7,'ruoyi-job-dev.yml','DEFAULT_GROUP','# Spring\r\nspring: \r\n datasource:\r\n driver-class-name: com.mysql.cj.jdbc.Driver\r\n url: jdbc:mysql://localhost:3306/ry-cloud?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8\r\n username: root\r\n password: password\r\n\r\n# Mybatis配置\r\nmybatis:\r\n # 搜索指定包别名\r\n typeAliasesPackage: com.ruoyi.job.domain\r\n # 配置mapper的扫描,找到所有的mapper.xml映射文件\r\n mapperLocations: classpath:mapper/**/*.xml\r\n\r\n# swagger 配置\r\nswagger:\r\n title: 定时任务接口文档\r\n license: Powered By ruoyi\r\n licenseUrl: https://ruoyi.vip\r\n authorization:\r\n name: RuoYi OAuth\r\n auth-regex: ^.*$\r\n authorization-scope-list:\r\n - scope: server\r\n description: 客户端授权范围\r\n token-url-list:\r\n - http://localhost:8080/auth/oauth/token\r\n','2904b375372b13f52baed5be2e497b21','2020-05-14 13:58:46','2020-05-19 18:49:56',NULL,'0:0:0:0:0:0:0:1','','','定时任务','null','null','yaml','null');
|
| | |
|