diff --git a/kicc-gateway/src/main/java/com/cloud/kicc/gateway/config/GatewayConfigProperties.java b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/config/GatewayConfigProperties.java similarity index 72% rename from kicc-gateway/src/main/java/com/cloud/kicc/gateway/config/GatewayConfigProperties.java rename to kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/config/GatewayConfigProperties.java index 803c94ff..f6a2cf14 100644 --- a/kicc-gateway/src/main/java/com/cloud/kicc/gateway/config/GatewayConfigProperties.java +++ b/kicc-common/kicc-common-core/src/main/java/com/cloud/kicc/common/core/config/GatewayConfigProperties.java @@ -1,4 +1,4 @@ -package com.cloud.kicc.gateway.config; +package com.cloud.kicc.common.core.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -20,12 +20,12 @@ import java.util.List; public class GatewayConfigProperties { /** - * 网关解密登录前端密码 秘钥 {@link com.cloud.kicc.gateway.filter.PasswordDecoderFilter} + * 网关解密登录前端密码 */ private String encodeKey; /** - * 网关忽略不需要校验验证码是否合法的客户端 {@link com.cloud.kicc.gateway.filter.ValidateCodeGatewayFilter} + * 网关忽略不需要校验验证码是否合法的客户端 */ private List ignoreClients; diff --git a/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories b/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories index 796edc20..d0a408af 100644 --- a/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories +++ b/kicc-common/kicc-common-core/src/main/resources/META-INF/spring.factories @@ -1,4 +1,5 @@ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ com.cloud.kicc.common.core.config.WebMvcConfiguration,\ com.cloud.kicc.common.core.config.RestTemplateConfiguration,\ + com.cloud.kicc.common.core.config.GatewayConfigProperties,\ com.cloud.kicc.common.core.util.SpringContextHolderUtil diff --git a/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/PasswordDecoderFilter.java b/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/PasswordDecoderFilter.java index 1c3fbf78..e1f6c967 100644 --- a/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/PasswordDecoderFilter.java +++ b/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/PasswordDecoderFilter.java @@ -6,8 +6,8 @@ import cn.hutool.crypto.Mode; import cn.hutool.crypto.Padding; import cn.hutool.crypto.symmetric.AES; import cn.hutool.http.HttpUtil; +import com.cloud.kicc.common.core.config.GatewayConfigProperties; import com.cloud.kicc.common.core.constant.SecurityConstants; -import com.cloud.kicc.gateway.config.GatewayConfigProperties; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.gateway.filter.GatewayFilter; diff --git a/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/ValidateCodeGatewayFilter.java b/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/ValidateCodeGatewayFilter.java index 6fbca198..38192212 100644 --- a/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/ValidateCodeGatewayFilter.java +++ b/kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/ValidateCodeGatewayFilter.java @@ -3,12 +3,12 @@ package com.cloud.kicc.gateway.filter; import cn.hutool.core.text.CharSequenceUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; +import com.cloud.kicc.common.core.config.GatewayConfigProperties; import com.cloud.kicc.common.core.constant.CacheConstants; import com.cloud.kicc.common.core.constant.SecurityConstants; import com.cloud.kicc.common.core.exception.ValidateCodeException; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.util.WebUtil; -import com.cloud.kicc.gateway.config.GatewayConfigProperties; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.RequiredArgsConstructor; diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java index c491e058..2bffc745 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/bigscreen/controller/VisualDbController.java @@ -1,25 +1,34 @@ package com.cloud.kicc.system.bigscreen.controller; +import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.StrUtil; +import cn.hutool.crypto.Mode; +import cn.hutool.crypto.Padding; +import cn.hutool.crypto.symmetric.AES; +import cn.hutool.json.JSONUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.cloud.kicc.common.core.api.R; +import com.cloud.kicc.common.core.config.GatewayConfigProperties; import com.cloud.kicc.common.core.constant.AppConstants; import com.cloud.kicc.common.core.exception.CheckedException; import com.cloud.kicc.system.api.bigscreen.dto.DynamicModelDto; import com.cloud.kicc.system.api.bigscreen.dto.VisualDbDto; -import com.cloud.kicc.system.api.bigscreen.entity.Visual; import com.cloud.kicc.system.api.bigscreen.entity.VisualDb; import com.cloud.kicc.system.bigscreen.service.IVisualDbService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import io.swagger.annotations.ApiParam; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; +import javax.crypto.spec.IvParameterSpec; +import javax.crypto.spec.SecretKeySpec; +import javax.servlet.http.HttpServletRequest; import javax.validation.Valid; +import java.io.IOException; +import java.io.InputStream; +import java.nio.charset.Charset; import java.util.Arrays; import java.util.LinkedHashMap; import java.util.List; @@ -40,6 +49,7 @@ import java.util.List; public class VisualDbController { private final IVisualDbService visualDbService; + private final GatewayConfigProperties gatewayConfig; private LambdaQueryWrapper getQueryWrapper(VisualDb visualDb) { return new LambdaQueryWrapper() @@ -99,8 +109,14 @@ public class VisualDbController { @PostMapping("/db-test") @ApiOperation(value = "数据源测试连接", notes = "数据源测试连接") - public R dbTest(@RequestBody VisualDb db) { - return R.ok(visualDbService.dbTest(db)); + public R dbTest(HttpServletRequest request) throws IOException { + byte[] bytes = IoUtil.readBytes(request.getInputStream()); + String bag = StrUtil.str(bytes, Charset.forName("utf-8")); + AES aes = new AES(Mode.CBC, Padding.PKCS5Padding, + new SecretKeySpec(gatewayConfig.getEncodeKey().getBytes(), "AES"), + new IvParameterSpec(gatewayConfig.getEncodeKey().getBytes())); + VisualDb visualDb = JSONUtil.toBean(aes.decryptStr(bag), VisualDb.class); + return R.ok(visualDbService.dbTest(visualDb)); } @GetMapping("/db-list") @@ -111,7 +127,13 @@ public class VisualDbController { @PostMapping("dynamic-query") @ApiOperation(value = "动态执行SQL", notes = "动态执行SQL") - public R dynamicQuery(@RequestBody DynamicModelDto model) { + public R dynamicQuery(HttpServletRequest request) throws IOException { + byte[] bytes = IoUtil.readBytes(request.getInputStream()); + String bag = StrUtil.str(bytes, Charset.forName("utf-8")); + AES aes = new AES(Mode.CBC, Padding.PKCS5Padding, + new SecretKeySpec(gatewayConfig.getEncodeKey().getBytes(), "AES"), + new IvParameterSpec(gatewayConfig.getEncodeKey().getBytes())); + DynamicModelDto model = JSONUtil.toBean(aes.decryptStr(bag), DynamicModelDto.class); VisualDb visualDb = visualDbService.getById(model.getId()); List> linkedHashMaps = visualDbService.dynamicQuery(visualDb, model.getSql()); return R.ok(linkedHashMaps);