diff --git a/pom.xml b/pom.xml index 7e69dc6e..ab67c928 100644 --- a/pom.xml +++ b/pom.xml @@ -17,25 +17,26 @@ UTF-8 UTF-8 1.8 - 2.3.7.RELEASE - Hoxton.SR9 - 2.2.5.RELEASE - 2.3.1 + 2.5.0 + 2020.0.2 + 2021.1 + 2.4.1 2.1.4 2.9.2 1.5.24 1.26.5 2.3.2 1.3.0 - 1.2.4 - 3.2.1 + 1.2.6 + 3.3.2 2.5 1.3.3 1.7 - 1.2.75 - 8.0.3 + 1.2.76 + 8.2.1 4.1.2 2.6.2 + 3.2.2 @@ -150,6 +151,13 @@ + + + commons-collections + commons-collections + ${commons-collections.version} + + com.alibaba @@ -234,7 +242,11 @@ pom - + + + org.springframework.cloud + spring-cloud-starter-bootstrap + diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java index 0654256b..bc3b6fff 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteFileFallbackFactory.java @@ -2,12 +2,12 @@ package com.ruoyi.system.api.factory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.RemoteFileService; import com.ruoyi.system.api.domain.SysFile; -import feign.hystrix.FallbackFactory; /** * 文件服务降级处理 diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java index 8d1d9cd8..0be325d2 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteLogFallbackFactory.java @@ -2,11 +2,11 @@ package com.ruoyi.system.api.factory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.RemoteLogService; import com.ruoyi.system.api.domain.SysOperLog; -import feign.hystrix.FallbackFactory; /** * 日志服务降级处理 diff --git a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java index 6254ac7c..45900b4a 100644 --- a/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java +++ b/ruoyi-api/ruoyi-api-system/src/main/java/com/ruoyi/system/api/factory/RemoteUserFallbackFactory.java @@ -2,11 +2,11 @@ package com.ruoyi.system.api.factory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.cloud.openfeign.FallbackFactory; import org.springframework.stereotype.Component; import com.ruoyi.common.core.domain.R; import com.ruoyi.system.api.RemoteUserService; import com.ruoyi.system.api.model.LoginUser; -import feign.hystrix.FallbackFactory; /** * 用户服务降级处理 diff --git a/ruoyi-common/ruoyi-common-core/pom.xml b/ruoyi-common/ruoyi-common-core/pom.xml index 5c437f09..ff8ed86d 100644 --- a/ruoyi-common/ruoyi-common-core/pom.xml +++ b/ruoyi-common/ruoyi-common-core/pom.xml @@ -17,23 +17,29 @@ - + org.springframework.cloud spring-cloud-starter-openfeign - + + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + - - + + org.springframework spring-context-support - + - - + + org.springframework spring-web - + diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java index b043af11..718305b8 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java @@ -22,7 +22,7 @@ public class ExceptionUtil return str; } - public static String getRootErrorMseeage(Exception e) + public static String getRootErrorMessage(Exception e) { Throwable root = ExceptionUtils.getRootCause(e); root = (root == null ? e : root); diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java index 3aafe03c..b549d604 100644 --- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java +++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java @@ -236,6 +236,30 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils return str.substring(start, end); } + /** + * 判断是否为空,并且不是空白字符 + * + * @param str 要判断的value + * @return 结果 + */ + public static boolean hasText(String str) + { + return (str != null && !str.isEmpty() && containsText(str)); + } + + private static boolean containsText(CharSequence str) + { + int strLen = str.length(); + for (int i = 0; i < strLen; i++) + { + if (!Character.isWhitespace(str.charAt(i))) + { + return true; + } + } + return false; + } + /** * 格式化文本, {} 表示占位符
* 此方法只是简单将占位符 {} 按照顺序替换为参数
diff --git a/ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java b/ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java index 72aafcdd..453c79c8 100644 --- a/ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java +++ b/ruoyi-common/ruoyi-common-datascope/src/main/java/com/ruoyi/common/datascope/aspect/DataScopeAspect.java @@ -68,6 +68,7 @@ public class DataScopeAspect @Before("dataScopePointCut()") public void doBefore(JoinPoint point) throws Throwable { + clearDataScope(point); handleDataScope(point); } @@ -169,4 +170,17 @@ public class DataScopeAspect } return null; } + + /** + * 拼接权限sql前先清空params.dataScope参数防止注入 + */ + private void clearDataScope(final JoinPoint joinPoint) + { + Object params = joinPoint.getArgs()[0]; + if (StringUtils.isNotNull(params) && params instanceof BaseEntity) + { + BaseEntity baseEntity = (BaseEntity) params; + baseEntity.getParams().put(DATA_SCOPE, ""); + } + } } diff --git a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java index 86f1863b..1d77eeb7 100644 --- a/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java +++ b/ruoyi-common/ruoyi-common-log/src/main/java/com/ruoyi/common/log/aspect/LogAspect.java @@ -190,7 +190,7 @@ public class LogAspect { for (int i = 0; i < paramsArray.length; i++) { - if (!isFilterObject(paramsArray[i])) + if (StringUtils.isNotNull(paramsArray[i]) && !isFilterObject(paramsArray[i])) { try { diff --git a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java index 0499feb6..31238d63 100644 --- a/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java +++ b/ruoyi-common/ruoyi-common-redis/src/main/java/com/ruoyi/common/redis/configure/RedisConfig.java @@ -8,8 +8,10 @@ import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; /** * redis配置 @@ -21,7 +23,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class RedisConfig extends CachingConfigurerSupport { @Bean - @SuppressWarnings(value = { "unchecked", "rawtypes", "deprecation" }) + @SuppressWarnings(value = { "unchecked", "rawtypes" }) public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate template = new RedisTemplate<>(); @@ -31,12 +33,17 @@ public class RedisConfig extends CachingConfigurerSupport ObjectMapper mapper = new ObjectMapper(); mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); - mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); serializer.setObjectMapper(mapper); - template.setValueSerializer(serializer); // 使用StringRedisSerializer来序列化和反序列化redis的key值 template.setKeySerializer(new StringRedisSerializer()); + template.setValueSerializer(serializer); + + // Hash的key也采用StringRedisSerializer的序列化方式 + template.setHashKeySerializer(new StringRedisSerializer()); + template.setHashValueSerializer(serializer); + template.afterPropertiesSet(); return template; } diff --git a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java index 3a44d82b..20e20e3f 100644 --- a/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java +++ b/ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/aspect/PreAuthorizeAspect.java @@ -11,8 +11,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; import org.springframework.util.PatternMatchUtils; -import org.springframework.util.StringUtils; import com.ruoyi.common.core.exception.PreAuthorizeException; +import com.ruoyi.common.core.utils.StringUtils; import com.ruoyi.common.security.annotation.PreAuthorize; import com.ruoyi.common.security.service.TokenService; import com.ruoyi.system.api.model.LoginUser; @@ -50,7 +50,7 @@ public class PreAuthorizeAspect return point.proceed(); } - if (!StringUtils.isEmpty(annotation.hasPermi())) + if (StringUtils.isNotEmpty(annotation.hasPermi())) { if (hasPermi(annotation.hasPermi())) { @@ -58,7 +58,7 @@ public class PreAuthorizeAspect } throw new PreAuthorizeException(); } - else if (!StringUtils.isEmpty(annotation.lacksPermi())) + else if (StringUtils.isNotEmpty(annotation.lacksPermi())) { if (lacksPermi(annotation.lacksPermi())) { @@ -74,7 +74,7 @@ public class PreAuthorizeAspect } throw new PreAuthorizeException(); } - else if (!StringUtils.isEmpty(annotation.hasRole())) + else if (StringUtils.isNotEmpty(annotation.hasRole())) { if (hasRole(annotation.hasRole())) { @@ -82,7 +82,7 @@ public class PreAuthorizeAspect } throw new PreAuthorizeException(); } - else if (!StringUtils.isEmpty(annotation.lacksRole())) + else if (StringUtils.isNotEmpty(annotation.lacksRole())) { if (lacksRole(annotation.lacksRole())) { @@ -111,7 +111,7 @@ public class PreAuthorizeAspect public boolean hasPermi(String permission) { LoginUser userInfo = tokenService.getLoginUser(); - if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions())) + if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions())) { return false; } @@ -138,7 +138,7 @@ public class PreAuthorizeAspect public boolean hasAnyPermi(String[] permissions) { LoginUser userInfo = tokenService.getLoginUser(); - if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions())) + if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getPermissions())) { return false; } @@ -162,7 +162,7 @@ public class PreAuthorizeAspect public boolean hasRole(String role) { LoginUser userInfo = tokenService.getLoginUser(); - if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles())) + if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles())) { return false; } @@ -196,7 +196,7 @@ public class PreAuthorizeAspect public boolean hasAnyRoles(String[] roles) { LoginUser userInfo = tokenService.getLoginUser(); - if (StringUtils.isEmpty(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles())) + if (StringUtils.isNull(userInfo) || CollectionUtils.isEmpty(userInfo.getRoles())) { return false; } @@ -220,6 +220,6 @@ public class PreAuthorizeAspect private boolean hasPermissions(Collection authorities, String permission) { return authorities.stream().filter(StringUtils::hasText) - .anyMatch(x -> ALL_PERMISSION.contains(x) || PatternMatchUtils.simpleMatch(permission, x)); + .anyMatch(x -> ALL_PERMISSION.contains(x) || PatternMatchUtils.simpleMatch(x, permission)); } } diff --git a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java index 677ffde2..8d0fee4e 100644 --- a/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java +++ b/ruoyi-gateway/src/main/java/com/ruoyi/gateway/config/GatewayConfig.java @@ -1,11 +1,9 @@ package com.ruoyi.gateway.config; -import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.Ordered; import org.springframework.core.annotation.Order; -import com.alibaba.csp.sentinel.adapter.gateway.sc.SentinelGatewayFilter; import com.ruoyi.gateway.handler.SentinelFallbackHandler; /** @@ -22,11 +20,4 @@ public class GatewayConfig { return new SentinelFallbackHandler(); } - - @Bean - @Order(-1) - public GlobalFilter sentinelGatewayFilter() - { - return new SentinelGatewayFilter(); - } } \ No newline at end of file diff --git a/ruoyi-modules/ruoyi-gen/pom.xml b/ruoyi-modules/ruoyi-gen/pom.xml index 87be4b7c..c22e9cca 100644 --- a/ruoyi-modules/ruoyi-gen/pom.xml +++ b/ruoyi-modules/ruoyi-gen/pom.xml @@ -54,6 +54,12 @@ velocity
+ + + commons-collections + commons-collections + + mysql diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java index 955cbeb4..ebfa433e 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/RuoYiGenApplication.java @@ -1,7 +1,7 @@ package com.ruoyi.gen; import org.springframework.boot.SpringApplication; -import org.springframework.cloud.client.SpringCloudApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; @@ -14,7 +14,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; @EnableCustomConfig @EnableCustomSwagger2 @EnableRyFeignClients -@SpringCloudApplication +@SpringBootApplication public class RuoYiGenApplication { public static void main(String[] args) diff --git a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm index 4c02b0f4..359ee501 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm +++ b/ruoyi-modules/ruoyi-gen/src/main/resources/vm/java/mapper.java.vm @@ -83,7 +83,7 @@ public interface ${ClassName}Mapper /** * 通过${functionName}ID删除${subTable.functionName}信息 * - * @param roleId 角色ID + * @param ${pkColumn.javaField} ${functionName}ID * @return 结果 */ public int delete${subClassName}By${subTableFkClassName}(${pkColumn.javaType} ${pkColumn.javaField}); diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java index 15a39126..e06d6793 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/RuoYiJobApplication.java @@ -1,7 +1,7 @@ package com.ruoyi.job; import org.springframework.boot.SpringApplication; -import org.springframework.cloud.client.SpringCloudApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; @@ -14,7 +14,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; @EnableCustomConfig @EnableCustomSwagger2 @EnableRyFeignClients -@SpringCloudApplication +@SpringBootApplication public class RuoYiJobApplication { public static void main(String[] args) diff --git a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java index c8ab47f9..7877b687 100644 --- a/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java +++ b/ruoyi-modules/ruoyi-job/src/main/java/com/ruoyi/job/domain/SysJob.java @@ -1,6 +1,5 @@ package com.ruoyi.job.domain; -import java.io.Serializable; import java.util.Date; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Size; @@ -19,7 +18,7 @@ import com.ruoyi.job.util.CronUtils; * * @author ruoyi */ -public class SysJob extends BaseEntity implements Serializable +public class SysJob extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java index ee24c93f..dfe390fa 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/RuoYiSystemApplication.java @@ -1,7 +1,7 @@ package com.ruoyi.system; import org.springframework.boot.SpringApplication; -import org.springframework.cloud.client.SpringCloudApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; import com.ruoyi.common.security.annotation.EnableCustomConfig; import com.ruoyi.common.security.annotation.EnableRyFeignClients; import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; @@ -14,7 +14,7 @@ import com.ruoyi.common.swagger.annotation.EnableCustomSwagger2; @EnableCustomConfig @EnableCustomSwagger2 @EnableRyFeignClients -@SpringCloudApplication +@SpringBootApplication public class RuoYiSystemApplication { public static void main(String[] args) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java index 29cf1053..08efa396 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysConfigController.java @@ -117,18 +117,19 @@ public class SysConfigController extends BaseController @DeleteMapping("/{configIds}") public AjaxResult remove(@PathVariable Long[] configIds) { - return toAjax(configService.deleteConfigByIds(configIds)); + configService.deleteConfigByIds(configIds); + return success(); } /** - * 清空缓存 + * 刷新参数缓存 */ @PreAuthorize(hasPermi = "system:config:remove") @Log(title = "参数管理", businessType = BusinessType.CLEAN) - @DeleteMapping("/clearCache") - public AjaxResult clearCache() + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() { - configService.clearCache(); + configService.resetConfigCache(); return AjaxResult.success(); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java index 53acf3c2..47240c11 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictDataController.java @@ -117,6 +117,7 @@ public class SysDictDataController extends BaseController @DeleteMapping("/{dictCodes}") public AjaxResult remove(@PathVariable Long[] dictCodes) { - return toAjax(dictDataService.deleteDictDataByIds(dictCodes)); + dictDataService.deleteDictDataByIds(dictCodes); + return success(); } } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java index 8ef58ef4..fe4c3f64 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/controller/SysDictTypeController.java @@ -106,18 +106,19 @@ public class SysDictTypeController extends BaseController @DeleteMapping("/{dictIds}") public AjaxResult remove(@PathVariable Long[] dictIds) { - return toAjax(dictTypeService.deleteDictTypeByIds(dictIds)); + dictTypeService.deleteDictTypeByIds(dictIds); + return success(); } /** - * 清空缓存 + * 刷新字典缓存 */ @PreAuthorize(hasPermi = "system:dict:remove") @Log(title = "字典类型", businessType = BusinessType.CLEAN) - @DeleteMapping("/clearCache") - public AjaxResult clearCache() + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() { - dictTypeService.clearCache(); + dictTypeService.resetDictCache(); return AjaxResult.success(); } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java index 0239b238..695c9bd4 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java @@ -57,12 +57,22 @@ public interface ISysConfigService * @param configIds 需要删除的参数ID * @return 结果 */ - public int deleteConfigByIds(Long[] configIds); + public void deleteConfigByIds(Long[] configIds); /** - * 清空缓存数据 + * 加载参数缓存数据 */ - public void clearCache(); + public void loadingConfigCache(); + + /** + * 清空参数缓存数据 + */ + public void clearConfigCache(); + + /** + * 重置参数缓存数据 + */ + public void resetConfigCache(); /** * 校验参数键名是否唯一 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java index 21fa8611..d54b3711 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java @@ -41,7 +41,7 @@ public interface ISysDictDataService * @param dictCodes 需要删除的字典数据ID * @return 结果 */ - public int deleteDictDataByIds(Long[] dictCodes); + public void deleteDictDataByIds(Long[] dictCodes); /** * 新增保存字典数据信息 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java index 1ac88ce5..38ff5d65 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java @@ -56,12 +56,22 @@ public interface ISysDictTypeService * @param dictIds 需要删除的字典ID * @return 结果 */ - public int deleteDictTypeByIds(Long[] dictIds); + public void deleteDictTypeByIds(Long[] dictIds); /** - * 清空缓存数据 + * 加载字典缓存数据 */ - public void clearCache(); + public void loadingDictCache(); + + /** + * 清空字典缓存数据 + */ + public void clearDictCache(); + + /** + * 重置字典缓存数据 + */ + public void resetDictCache(); /** * 新增保存字典类型信息 diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java index 0c6e9c55..e6c0b066 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java @@ -35,11 +35,7 @@ public class SysConfigServiceImpl implements ISysConfigService @PostConstruct public void init() { - List configsList = configMapper.selectConfigList(new SysConfig()); - for (SysConfig config : configsList) - { - redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); - } + loadingConfigCache(); } /** @@ -134,7 +130,7 @@ public class SysConfigServiceImpl implements ISysConfigService * @return 结果 */ @Override - public int deleteConfigByIds(Long[] configIds) + public void deleteConfigByIds(Long[] configIds) { for (Long configId : configIds) { @@ -143,26 +139,44 @@ public class SysConfigServiceImpl implements ISysConfigService { throw new CustomException(String.format("内置参数【%1$s】不能删除 ", config.getConfigKey())); } + configMapper.deleteConfigById(configId); + redisService.deleteObject(getCacheKey(config.getConfigKey())); } - int count = configMapper.deleteConfigByIds(configIds); - if (count > 0) + } + + /** + * 加载参数缓存数据 + */ + @Override + public void loadingConfigCache() + { + List configsList = configMapper.selectConfigList(new SysConfig()); + for (SysConfig config : configsList) { - Collection keys = redisService.keys(Constants.SYS_CONFIG_KEY + "*"); - redisService.deleteObject(keys); + redisService.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue()); } - return count; } /** - * 清空缓存数据 + * 清空参数缓存数据 */ @Override - public void clearCache() + public void clearConfigCache() { Collection keys = redisService.keys(Constants.SYS_CONFIG_KEY + "*"); redisService.deleteObject(keys); } + /** + * 重置参数缓存数据 + */ + @Override + public void resetConfigCache() + { + clearConfigCache(); + loadingConfigCache(); + } + /** * 校验参数键名是否唯一 * diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java index fdbe3fed..f71ad61d 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java @@ -63,29 +63,31 @@ public class SysDictDataServiceImpl implements ISysDictDataService * @return 结果 */ @Override - public int deleteDictDataByIds(Long[] dictCodes) + public void deleteDictDataByIds(Long[] dictCodes) { - int row = dictDataMapper.deleteDictDataByIds(dictCodes); - if (row > 0) + for (Long dictCode : dictCodes) { - DictUtils.clearDictCache(); + SysDictData data = selectDictDataById(dictCode); + dictDataMapper.deleteDictDataById(dictCode); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); } - return row; } /** * 新增保存字典数据信息 * - * @param dictData 字典数据信息 + * @param data 字典数据信息 * @return 结果 */ @Override - public int insertDictData(SysDictData dictData) + public int insertDictData(SysDictData data) { - int row = dictDataMapper.insertDictData(dictData); + int row = dictDataMapper.insertDictData(data); if (row > 0) { - DictUtils.clearDictCache(); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); } return row; } @@ -93,16 +95,17 @@ public class SysDictDataServiceImpl implements ISysDictDataService /** * 修改保存字典数据信息 * - * @param dictData 字典数据信息 + * @param data 字典数据信息 * @return 结果 */ @Override - public int updateDictData(SysDictData dictData) + public int updateDictData(SysDictData data) { - int row = dictDataMapper.updateDictData(dictData); + int row = dictDataMapper.updateDictData(data); if (row > 0) { - DictUtils.clearDictCache(); + List dictDatas = dictDataMapper.selectDictDataByType(data.getDictType()); + DictUtils.setDictCache(data.getDictType(), dictDatas); } return row; } 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 a004d5bd..862c3f76 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 @@ -35,12 +35,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService @PostConstruct public void init() { - List dictTypeList = dictTypeMapper.selectDictTypeAll(); - for (SysDictType dictType : dictTypeList) - { - List dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType()); - DictUtils.setDictCache(dictType.getDictType(), dictDatas); - } + loadingDictCache(); } /** @@ -120,7 +115,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService * @return 结果 */ @Override - public int deleteDictTypeByIds(Long[] dictIds) + public void deleteDictTypeByIds(Long[] dictIds) { for (Long dictId : dictIds) { @@ -129,37 +124,54 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService { throw new CustomException(String.format("%1$s已分配,不能删除", dictType.getDictName())); } + dictTypeMapper.deleteDictTypeById(dictId); + DictUtils.removeDictCache(dictType.getDictType()); } - int count = dictTypeMapper.deleteDictTypeByIds(dictIds); - if (count > 0) + } + + /** + * 加载字典缓存数据 + */ + public void loadingDictCache() + { + List dictTypeList = dictTypeMapper.selectDictTypeAll(); + for (SysDictType dictType : dictTypeList) { - DictUtils.clearDictCache(); + List dictDatas = dictDataMapper.selectDictDataByType(dictType.getDictType()); + DictUtils.setDictCache(dictType.getDictType(), dictDatas); } - return count; } /** - * 清空缓存数据 + * 清空字典缓存数据 */ - @Override - public void clearCache() + public void clearDictCache() { DictUtils.clearDictCache(); } + /** + * 重置字典缓存数据 + */ + public void resetDictCache() + { + clearDictCache(); + loadingDictCache(); + } + /** * 新增保存字典类型信息 * - * @param dictType 字典类型信息 + * @param dict 字典类型信息 * @return 结果 */ @Override - public int insertDictType(SysDictType dictType) + public int insertDictType(SysDictType dict) { - int row = dictTypeMapper.insertDictType(dictType); + int row = dictTypeMapper.insertDictType(dict); if (row > 0) { - DictUtils.clearDictCache(); + DictUtils.setDictCache(dict.getDictType(), null); } return row; } @@ -167,19 +179,20 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService /** * 修改保存字典类型信息 * - * @param dictType 字典类型信息 + * @param dict 字典类型信息 * @return 结果 */ @Override @Transactional - public int updateDictType(SysDictType dictType) + public int updateDictType(SysDictType dict) { - SysDictType oldDict = dictTypeMapper.selectDictTypeById(dictType.getDictId()); - dictDataMapper.updateDictDataType(oldDict.getDictType(), dictType.getDictType()); - int row = dictTypeMapper.updateDictType(dictType); + SysDictType oldDict = dictTypeMapper.selectDictTypeById(dict.getDictId()); + dictDataMapper.updateDictDataType(oldDict.getDictType(), dict.getDictType()); + int row = dictTypeMapper.updateDictType(dict); if (row > 0) { - DictUtils.clearDictCache(); + List dictDatas = dictDataMapper.selectDictDataByType(dict.getDictType()); + DictUtils.setDictCache(dict.getDictType(), dictDatas); } return row; } diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java index b8b04f17..f91c159e 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/utils/DictUtils.java @@ -43,6 +43,16 @@ public class DictUtils return null; } + /** + * 删除指定字典缓存 + * + * @param key 字典键 + */ + public static void removeDictCache(String key) + { + SpringUtils.getBean(RedisService.class).deleteObject(getCacheKey(key)); + } + /** * 清空字典缓存 */ diff --git a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index f8cdf67c..17fecaa5 100644 --- a/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -147,7 +147,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update_by = #{updateBy}, update_time = sysdate() - where dept_id in (${ancestors}) + where find_in_set(#{deptId}, ancestors) diff --git a/ruoyi-ui/public/html/ie.html b/ruoyi-ui/public/html/ie.html new file mode 100644 index 00000000..390ce8ab --- /dev/null +++ b/ruoyi-ui/public/html/ie.html @@ -0,0 +1,46 @@ + + + + + + 请升级您的浏览器 + + + + + + +

请升级您的浏览器,以便我们更好的为您提供服务!

+

您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。

+
+

请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束

+

自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明

+
+

您可以选择更先进的浏览器

+

推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。

+ +
+ + \ No newline at end of file diff --git a/ruoyi-ui/public/index.html b/ruoyi-ui/public/index.html index 525e2acd..56fd45b3 100644 --- a/ruoyi-ui/public/index.html +++ b/ruoyi-ui/public/index.html @@ -7,6 +7,7 @@ <%= webpackConfig.name %> +