|
|
|
@ -1,25 +1,34 @@
@@ -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;
@@ -40,6 +49,7 @@ import java.util.List;
|
|
|
|
|
public class VisualDbController { |
|
|
|
|
|
|
|
|
|
private final IVisualDbService visualDbService; |
|
|
|
|
private final GatewayConfigProperties gatewayConfig; |
|
|
|
|
|
|
|
|
|
private LambdaQueryWrapper<VisualDb> getQueryWrapper(VisualDb visualDb) { |
|
|
|
|
return new LambdaQueryWrapper<VisualDb>() |
|
|
|
@ -99,8 +109,14 @@ public class VisualDbController {
@@ -99,8 +109,14 @@ public class VisualDbController {
|
|
|
|
|
|
|
|
|
|
@PostMapping("/db-test") |
|
|
|
|
@ApiOperation(value = "数据源测试连接", notes = "数据源测试连接") |
|
|
|
|
public R<Boolean> dbTest(@RequestBody VisualDb db) { |
|
|
|
|
return R.ok(visualDbService.dbTest(db)); |
|
|
|
|
public R<Boolean> 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 {
@@ -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<LinkedHashMap<String, Object>> linkedHashMaps = visualDbService.dynamicQuery(visualDb, model.getSql()); |
|
|
|
|
return R.ok(linkedHashMaps); |
|
|
|
|