diff --git a/pom.xml b/pom.xml
index 8ce166e..04fe2db 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,6 +25,7 @@
srt-data-development
srt-cloud-data-governance
srt-cloud-data-service
+ srt-cloud-data-assets
diff --git a/srt-cloud-data-assets/.gitignore b/srt-cloud-data-assets/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/srt-cloud-data-assets/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/srt-cloud-data-assets/pom.xml b/srt-cloud-data-assets/pom.xml
new file mode 100644
index 0000000..dd97b8d
--- /dev/null
+++ b/srt-cloud-data-assets/pom.xml
@@ -0,0 +1,220 @@
+
+
+ 4.0.0
+
+ net.srt
+ srt-cloud
+ 2.0.0
+
+
+ srt-cloud-data-assets
+
+
+ 8
+ 8
+ UTF-8
+
+
+
+
+ net.srt
+ srt-cloud-api
+ 2.0.0
+
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+
+
+ net.srt
+ srt-cloud-mybatis
+ 2.0.0
+
+
+ org.springframework.cloud
+ spring-cloud-starter-bootstrap
+
+
+ spring-boot-starter-logging
+ org.springframework.boot
+
+
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+ com.github.whvcse
+ easy-captcha
+
+
+ com.github.xiaoymin
+ knife4j-springdoc-ui
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+
+
+ com.qcloud
+ cos_api
+
+
+ com.qiniu
+ qiniu-java-sdk
+
+
+ com.huaweicloud
+ esdk-obs-java-bundle
+
+
+ io.minio
+ minio
+
+
+
+
+
+
+
+ org.codehaus.mojo
+ appassembler-maven-plugin
+ 2.1.0
+
+
+
+
+ generate-jsw-scripts
+ package
+
+ generate-daemons
+
+
+
+
+
+
+ flat
+
+ src/main/resources
+ true
+
+ true
+
+ conf
+
+ lib
+
+ bin
+ UTF-8
+ logs
+
+
+
+ ${project.artifactId}
+ net.srt.SystemApplication
+
+ jsw
+
+
+
+ jsw
+
+ linux-x86-32
+ linux-x86-64
+ windows-x86-32
+ windows-x86-64
+
+
+
+ configuration.directory.in.classpath.first
+ conf
+
+
+ wrapper.ping.timeout
+ 120
+
+
+ set.default.REPO_DIR
+ lib
+
+
+ wrapper.logfile
+ logs/wrapper.log
+
+
+
+
+
+
+
+
+ -server
+ -Dfile.encoding=utf-8
+ -Xms128m
+ -Xmx1024m
+ -XX:+PrintGCDetails
+ -XX:+PrintGCDateStamps
+ -Xloggc:logs/gc.log
+
+
+
+
+
+
+ net.srt.SystemApplication
+ ${project.artifactId}
+
+
+
+
+
+
+
+ maven-assembly-plugin
+
+
+ ${project.parent.basedir}/assembly/assembly-win.xml
+ ${project.parent.basedir}/assembly/assembly-linux.xml
+
+
+
+
+ make-assembly
+ package
+
+ single
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ true
+
+
+
+
+
+
+
diff --git a/srt-cloud-data-service/src/main/java/net/srt/ServiceApplication.java b/srt-cloud-data-assets/src/main/java/net/srt/AssetsApplication.java
similarity index 79%
rename from srt-cloud-data-service/src/main/java/net/srt/ServiceApplication.java
rename to srt-cloud-data-assets/src/main/java/net/srt/AssetsApplication.java
index e8876e7..2ba74cb 100644
--- a/srt-cloud-data-service/src/main/java/net/srt/ServiceApplication.java
+++ b/srt-cloud-data-assets/src/main/java/net/srt/AssetsApplication.java
@@ -9,13 +9,13 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
* @ClassName : ${NAME}
* @Description : ${description}
* @Author : FJJ
- * @Date: 2023-12-22 20:44
+ * @Date: 2023-12-27 21:47
*/
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
-public class ServiceApplication {
+public class AssetsApplication {
public static void main(String[] args) {
- SpringApplication.run(ServiceApplication.class, args);
+ SpringApplication.run(AssetsApplication.class, args);
}
}
diff --git a/srt-cloud-data-assets/src/main/resources/auth.yml b/srt-cloud-data-assets/src/main/resources/auth.yml
new file mode 100644
index 0000000..0e6a006
--- /dev/null
+++ b/srt-cloud-data-assets/src/main/resources/auth.yml
@@ -0,0 +1,7 @@
+auth:
+ ignore_urls:
+ - /auth/captcha
+ - /auth/login
+ - /auth/send/code
+ - /auth/mobile
+ - /upload/**
\ No newline at end of file
diff --git a/srt-cloud-data-assets/src/main/resources/bootstrap.yml b/srt-cloud-data-assets/src/main/resources/bootstrap.yml
new file mode 100644
index 0000000..a2348b6
--- /dev/null
+++ b/srt-cloud-data-assets/src/main/resources/bootstrap.yml
@@ -0,0 +1,46 @@
+server:
+ port: 8098
+
+spring:
+ mvc:
+ servlet:
+ load-on-startup: 1
+ application:
+ name: srt-cloud-data-assets
+ profiles:
+ active: dev
+ cloud:
+ nacos:
+ discovery:
+ server-addr: 101.34.77.101:8848
+ # 命名空间,默认:public
+ namespace: 09dff3e2-9790-4d4f-beb6-9baeb01ae040
+ service: ${spring.application.name}
+ group: srt2.0
+ config:
+ server-addr: ${spring.cloud.nacos.discovery.server-addr}
+ namespace: ${spring.cloud.nacos.discovery.namespace}
+ file-extension: yaml
+ # 指定配置
+ extension-configs:
+ - data-id: datasource.yaml
+ refresh: true
+ servlet:
+ multipart:
+ max-request-size: 100MB
+ max-file-size: 1024MB
+storage:
+ enabled: true
+ config:
+ # 存储类型:local、aliyun
+ type: local
+ # 访问域名
+ domain: http://localhost:8082/sys
+ # 配置访问前缀
+ prefix:
+ local:
+ # 本地上传路径
+ path: D://upload
+
+cbx:
+ isCaptcha: false
diff --git a/srt-cloud-data-assets/src/main/resources/log4j2.xml b/srt-cloud-data-assets/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..14461eb
--- /dev/null
+++ b/srt-cloud-data-assets/src/main/resources/log4j2.xml
@@ -0,0 +1,48 @@
+
+
+
+
+ ./logs/
+ srt-cloud-system
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java b/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java
index 65f1dee..4284f79 100644
--- a/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java
+++ b/srt-cloud-data-governance/src/main/java/net/srt/GovernanceApplication.java
@@ -18,6 +18,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
public class GovernanceApplication {
public static void main(String[] args) {
SpringApplication.run(GovernanceApplication.class, args);
+ System.out.println("原神启动!!!!!!!!!!!!!");
}
}
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataController.java
index 4d51a62..749171e 100644
--- a/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataController.java
+++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/MetadataController.java
@@ -23,7 +23,7 @@ public class MetadataController {
@GetMapping("/list-child")
@Operation(summary = "根据父级id获取信息")
public Result> listByParentId(@RequestParam Long parentId){
- List treeNodeVos = metadataService.listByParentId(parentId);
+ List treeNodeVos = metadataService.listByPatenId(parentId);
return Result.ok(treeNodeVos);
}
@@ -44,7 +44,7 @@ public class MetadataController {
@GetMapping("/list-keyword")
@Operation(summary = "模糊查询")
public Result> listByKeyword(String keyword){
- List treeNodeVos = metadataService.listByKeyword(keyword);
+ List treeNodeVos = metadataService.listKeyword(keyword);
return Result.ok(treeNodeVos);
}
@@ -78,13 +78,13 @@ public class MetadataController {
@PostMapping("/neo4j")
@Operation(summary = "更新neo4j的url")
public Result upNeo4jInfo(@RequestBody Neo4jInfo neo4jInfo){
- metadataService.upNeo4jInfo(neo4jInfo);
+ metadataService.updateNeo4j(neo4jInfo);
return Result.ok();
}
@GetMapping("/neo4j")
@Operation(summary = "获取neo4j的url")
public Result getNeo4jInfo(){
- return Result.ok(metadataService.getNeo4jInfo());
+ return Result.ok(metadataService.getNeo4j());
}
}
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java b/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java
index 20ae5b2..2c9b45d 100644
--- a/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java
+++ b/srt-cloud-data-governance/src/main/java/net/srt/controller/StandardController.java
@@ -2,6 +2,10 @@ package net.srt.controller;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
+import net.srt.convert.StandardConvert;
+import net.srt.entity.DatastandardEntity;
+import net.srt.entity.StandardEntity;
+import net.srt.framework.common.utils.BeanUtil;
import net.srt.framework.common.utils.Result;
import net.srt.framework.common.utils.TreeNodeVo;
import net.srt.service.StandardService;
@@ -9,6 +13,8 @@ import net.srt.vo.StandardManagementVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
+import javax.validation.Valid;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -30,6 +36,13 @@ public class StandardController {
return Result.ok(standardService.listTree());
}
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ public Result get(@PathVariable("id") Long id){
+ StandardEntity entity = standardService.getById(id);
+
+ return Result.ok(StandardConvert.INSTANCE.convert(entity));
+ }
@PostMapping
@Operation(summary = "保存")
@@ -45,9 +58,9 @@ public class StandardController {
return Result.ok();
}
- @DeleteMapping
+ @DeleteMapping("/{id}")
@Operation(summary = "删除")
- public Result delete(Long id) {
+ public Result delete(@PathVariable Long id) {
standardService.delete(id);
return Result.ok();
}
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java b/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java
index adc6acc..b2dcb0f 100644
--- a/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java
+++ b/srt-cloud-data-governance/src/main/java/net/srt/dao/StandardDao.java
@@ -12,5 +12,4 @@ import org.apache.ibatis.annotations.Mapper;
*/
@Mapper
public interface StandardDao extends BaseMapper {
-
}
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java b/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java
new file mode 100644
index 0000000..cf0c336
--- /dev/null
+++ b/srt-cloud-data-governance/src/main/java/net/srt/init/BusinessInitializer.java
@@ -0,0 +1,34 @@
+package net.srt.init;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import net.srt.service.MetadataCollectRecordService;
+import net.srt.service.QualityTaskService;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class BusinessInitializer implements ApplicationRunner {
+
+ private final MetadataCollectRecordService metadataCollectRecordService;
+ private final QualityTaskService qualityTaskService;
+
+ @Override
+ public void run(ApplicationArguments args) {
+ initScheduleMonitor();
+ }
+
+ /**
+ * init task monitor
+ */
+ private void initScheduleMonitor() {
+// //处理没执行完的采集任务
+// metadataCollectRecordService.dealNotFinished();
+// //处理没执行完的质量检测任务
+// qualityTaskService.dealNotFinished();
+ }
+
+}
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java
index a171909..b414aa5 100644
--- a/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java
+++ b/srt-cloud-data-governance/src/main/java/net/srt/service/MetadataService.java
@@ -8,25 +8,31 @@ import net.srt.vo.MetadataVO;
import java.util.List;
+/**
+ * @BelongsProject: srt_cloud
+ * @BelongsPackage: net.srt.service
+ * @Author: jpz
+ * @CreateTime: 2023/12/24 14:35
+ */
+
public interface MetadataService extends BaseService {
- List listByParentId(Long parentId);
+ List listByPatenId(Long parentId);
List listFloder();
List listDb();
- List listByKeyword(String keyword);
+ List listKeyword(String keyword);
MetadataVO get(Long id);
void save(MetadataVO vo);
-
void update(MetadataVO vo);
void delete(Long id);
- void upNeo4jInfo(Neo4jInfo neo4jInfo);
+ void updateNeo4j(Neo4jInfo neo4jInfo);
- Neo4jInfo getNeo4jInfo();
+ Neo4jInfo getNeo4j();
}
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java
index 9dd5d33..e07adbb 100644
--- a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java
+++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/MetadataServiceImpl.java
@@ -38,7 +38,7 @@ public class MetadataServiceImpl extends BaseServiceImpl listByParentId(Long parentId) {
+ public List listByPatenId(Long parentId) {
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.eq(MetadataEntity::getParentId,parentId)
.orderByAsc(MetadataEntity::getOrderNo);
@@ -93,9 +93,9 @@ public class MetadataServiceImpl extends BaseServiceImpl listByKeyword(String keyword) {
+ public List listKeyword(String keyword) {
if(StringUtil.isBlank(keyword)){
- return listByParentId(0L);
+ return listByPatenId(0L);
}
LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
wrapper.like(MetadataEntity::getName,keyword)
@@ -171,12 +171,12 @@ public class MetadataServiceImpl extends BaseServiceImpl metadataIds=qualityConfigvo.getMetadataIds();
+ QualityConfigVo QualityConfigVo= QualityConfigConvert.INSTANCE.convert(baseMapper.selectById(id));
+ List metadataIds=QualityConfigVo.getMetadataIds();
LambdaQueryWrapper metadataWrapper= Wrappers.lambdaQuery();
metadataWrapper.in(MetadataEntity::getId,metadataIds);
List metadataEntities=metadataDao.selectList(metadataWrapper);
if (CollectionUtils.isEmpty(metadataEntities)){
- qualityConfigvo.setMetadataStrs("检测字段已删除,请检查数据信息");
+ QualityConfigVo.setMetadataStrs("检测字段已删除,请检查数据信息");
}else {
- qualityConfigvo.setMetadataStrs(metadataEntities.stream().map(MetadataEntity::getPath).collect(Collectors.joining(";")));
+ QualityConfigVo.setMetadataStrs(metadataEntities.stream().map(MetadataEntity::getPath).collect(Collectors.joining(";")));
}
- if (BuiltInQualityRule.ASSOCIATION_CONSISTENCY.getId().equals(qualityConfigvo.getRuleId())){
- QualityConfigParam param = qualityConfigvo.getParam();
+ if (BuiltInQualityRule.ASSOCIATION_CONSISTENCY.getId().equals(QualityConfigVo.getRuleId())){
+ QualityConfigParam param = QualityConfigVo.getParam();
Integer columnMetaId = param.getColumnMetaId();
MetadataEntity entity = metadataDao.selectById(columnMetaId);
if (entity!= null){
- qualityConfigvo.setRelMetadataStr(entity.getPath());
+ QualityConfigVo.setRelMetadataStr(entity.getPath());
}else {
- qualityConfigvo.setMetadataStrs("关联字段已被删除,请检查元数据信息");
+ QualityConfigVo.setMetadataStrs("关联字段已被删除,请检查元数据信息");
}
}
- return qualityConfigvo;
+ return QualityConfigVo;
}
@Override
diff --git a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/StandardServiceImpl.java b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/StandardServiceImpl.java
index 9a60e6a..abb24e4 100644
--- a/srt-cloud-data-governance/src/main/java/net/srt/service/impl/StandardServiceImpl.java
+++ b/srt-cloud-data-governance/src/main/java/net/srt/service/impl/StandardServiceImpl.java
@@ -5,6 +5,7 @@ import lombok.AllArgsConstructor;
import net.srt.controller.StandardController;
import net.srt.convert.StandardConvert;
import net.srt.dao.StandardDao;
+import net.srt.entity.MetamodelEntity;
import net.srt.entity.StandardEntity;
import net.srt.framework.common.exception.ServerException;
import net.srt.framework.common.utils.BeanUtil;
@@ -66,7 +67,7 @@ public class StandardServiceImpl extends BaseServiceImpl> listAll() {
List list = dataDatabaseService.listAll();
diff --git a/srt-cloud-data-integrate/src/main/resources/bootstrap.yml b/srt-cloud-data-integrate/src/main/resources/bootstrap.yml
index edd03e2..ebf3ba8 100644
--- a/srt-cloud-data-integrate/src/main/resources/bootstrap.yml
+++ b/srt-cloud-data-integrate/src/main/resources/bootstrap.yml
@@ -15,7 +15,7 @@ spring:
discovery:
server-addr: 101.34.77.101:8848
# 命名空间,默认:public
- namespace: 7e1e997d-5fa4-4f84-9f48-3e0adf830a37
+ namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name}
group: srt2.0
config:
diff --git a/srt-cloud-data-service/src/main/java/net/srt/DataServiceApplication.java b/srt-cloud-data-service/src/main/java/net/srt/DataServiceApplication.java
new file mode 100644
index 0000000..c593712
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/DataServiceApplication.java
@@ -0,0 +1,15 @@
+package net.srt;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+@EnableFeignClients
+@EnableDiscoveryClient
+@SpringBootApplication
+public class DataServiceApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(DataServiceApplication.class, args);
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/constants/ApiConstants.java b/srt-cloud-data-service/src/main/java/net/srt/constants/ApiConstants.java
new file mode 100644
index 0000000..6800b30
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/constants/ApiConstants.java
@@ -0,0 +1,8 @@
+package net.srt.constants;
+
+import lombok.Data;
+
+@Data
+public class ApiConstants {
+ public static final String API_PREFIX = "/api/v1"; // 例如,这里定义了一个API的前缀
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/constants/ApiController.java b/srt-cloud-data-service/src/main/java/net/srt/constants/ApiController.java
new file mode 100644
index 0000000..20e6083
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/constants/ApiController.java
@@ -0,0 +1,53 @@
+package net.srt.constants;
+
+import net.srt.dao.ApiConfigDao;
+import net.srt.entity.ApiConfigEntity;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.http.HttpStatus;
+import org.springframework.web.server.ResponseStatusException;
+
+@Controller
+@RequestMapping("/api")
+public class ApiController {
+
+ private boolean isOnline = true;
+
+ @GetMapping("/status")
+ public ResponseEntity getStatus() {
+ String status = isOnline ? "online" : "offline";
+ return ResponseEntity.ok("API status: " + status);
+ }
+
+ @GetMapping("/resource/{id}")
+ public ResponseEntity getResource(@PathVariable Long id) {
+ if (!isOnline) {
+ throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Resource not found");
+ }
+
+ // 处理获取资源的逻辑...
+
+ String resource = ""; // 假设这里是获取资源的代码
+
+ if (resource != null) {
+ return ResponseEntity.ok("Resource: " + resource);
+ } else {
+ throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Resource not found");
+ }
+ }
+
+ @GetMapping("/offline")
+ public ResponseEntity offline() {
+ isOnline = false;
+ return ResponseEntity.ok("API is now offline");
+ }
+
+ @GetMapping("/online")
+ public ResponseEntity online() {
+ isOnline = true;
+ return ResponseEntity.ok("API is now online");
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/constants/ApiGroupType.java b/srt-cloud-data-service/src/main/java/net/srt/constants/ApiGroupType.java
new file mode 100644
index 0000000..7ab6c34
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/constants/ApiGroupType.java
@@ -0,0 +1,19 @@
+package net.srt.constants;
+
+public enum ApiGroupType {
+ FOLDER(1,"数据库"),
+ API(2,"数据库");
+ private final Integer value;
+ private final String longValue;
+
+ ApiGroupType(Integer value, String longValue) {
+ this.value = value;
+ this.longValue = longValue;
+ }
+ public Integer getValue() {
+ return value;
+ }
+ public String getLongValue() {
+ return longValue;
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/ApiConfigController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/ApiConfigController.java
new file mode 100644
index 0000000..ee9046a
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/controller/ApiConfigController.java
@@ -0,0 +1,140 @@
+package net.srt.controller;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.AllArgsConstructor;
+import net.srt.convert.ApiConfigConvert;
+import net.srt.dto.SqlDto;
+import net.srt.entity.ApiConfigEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.query.ApiConfigQuery;
+import net.srt.service.ApiConfigService;
+import net.srt.vo.ApiConfigVo;
+import net.srt.vo.DataServiceApiAuthVo;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+import srt.cloud.framework.dbswitch.core.model.JdbcSelectResult;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.List;
+
+@RestController
+@RequestMapping("/api-config")
+@AllArgsConstructor
+public class ApiConfigController {
+ private final ApiConfigService apiConfigService;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ @PreAuthorize("hasAuthority('data-service:api-config:page')")
+ public Result> page(@Valid ApiConfigQuery query) {
+ PageResult page = apiConfigService.page(query);
+
+ return Result.ok(page);
+ }
+ @GetMapping("page-resource")
+ @Operation(summary = "根据resourceId分页获取")
+ public Result> pageResource(@Valid ApiConfigQuery query){
+ PageResult page = apiConfigService.pageResource(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("page-auth")
+ public Result> pageAuth(@Valid ApiConfigQuery query) {
+ PageResult page = apiConfigService.page(query);
+
+ return Result.ok(page);
+ }
+
+ //取消授权
+// @PutMapping("/auth-info")
+// @Operation(summary = "修改授权")
+// public Result upAuth(@RequestBody DataServiceApiAuthVo authVO){
+// apiConfigService.upAuth(authVO);
+// return Result.ok();
+// }
+ @Operation(summary = "回显")
+ @GetMapping(value = "/auth-info/{authId}")
+ public Result getAuthId(@PathVariable Long authId){
+ return Result.ok(apiConfigService.getAuthInfo(authId));
+ }
+
+ //重置调用次数
+ @Operation(summary = "重置调用次数")
+ @PutMapping("/reset-requested/{authId}")
+ public Result resetRequested(@PathVariable Long authId){
+ apiConfigService.resetRequested(authId);
+ return Result.ok();
+ }
+
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAnyAuthority('data-service:api-config:info')")
+ public Result get(@PathVariable("id") Long id){
+ ApiConfigEntity entity=apiConfigService.getById(id);
+ return Result.ok(ApiConfigConvert.INSTANCE.convert(entity));
+ }
+
+ @PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAnyAuthority('data-service:api-config:save')")
+ public Result save(@RequestBody ApiConfigVo vo) {
+ apiConfigService.save(vo);
+ return Result.ok();
+ }
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAnyAuthority('data-service:api-config:update')")
+ public Result update(@RequestBody ApiConfigVo vo){
+ apiConfigService.update(vo);
+ return Result.ok();
+ }
+ @DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAnyAuthority('data-service:api-config:delete')")
+ public Result delete(@RequestBody List idList){
+ apiConfigService.delete(idList);
+ return Result.ok();
+ }
+ @GetMapping("getIpPort")
+ public Result getIpPort() {
+ return Result.ok(apiConfigService.getIpPort());
+ }
+ @Operation(summary = "获取服务的ip和端口号")
+ @GetMapping("/ip-port")
+ public Result ipPort() {
+ return Result.ok(apiConfigService.ipPort());
+ }
+ @Operation(summary = "上线")
+ @PreAuthorize("hasAnyAuthority('data-service:api-config:online')")
+ @PutMapping("/{id}/online")
+ public Result online(@PathVariable Long id) {
+ apiConfigService.online(id);
+ return Result.ok();
+ }
+ @Operation(summary = "下线")
+ @PreAuthorize("hasAnyAuthority('data-service:api-config:offline')")
+ @PutMapping("/{id}/offline")
+ public Result offline(@PathVariable Long id){
+ apiConfigService.offline(id);
+ return Result.ok();
+ }
+
+ @Operation(summary = "执行sql")
+ @PostMapping("/sql/execute")
+ public Result sqlExecute(@RequestBody SqlDto dto) {
+ return Result.ok(apiConfigService.sqlExecute(dto));
+ }
+
+ @Operation(summary = "导出 api 文档")
+ @PostMapping(value = "/export-docs")
+ public void exportDocs(@RequestBody List ids, HttpServletResponse response) {
+ apiConfigService.exportDocs(ids, response);
+ }
+
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/ApiGroupController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/ApiGroupController.java
new file mode 100644
index 0000000..28675b8
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/controller/ApiGroupController.java
@@ -0,0 +1,69 @@
+package net.srt.controller;
+
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.AllArgsConstructor;
+import net.srt.convert.ApiGroupConvert;
+import net.srt.entity.ApiGroupEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.framework.common.utils.TreeNodeVo;
+import net.srt.query.ApiConfigQuery;
+import net.srt.service.ApiGroupService;
+import net.srt.vo.ApiConfigVo;
+import net.srt.vo.ApiGroupVo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* 数据服务-api分组
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2023-01-28
+*/
+@RestController
+@RequestMapping("/api-group")
+@AllArgsConstructor
+public class ApiGroupController {
+ private final ApiGroupService apiGroupService;
+ @GetMapping
+ @Operation(summary = "查询文件分组树")
+ public Result> listTree() {
+ return Result.ok(apiGroupService.listTree());
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAuthority('data-service:api-group:info')")
+ public Result get(@PathVariable("id") Long id){
+ ApiGroupEntity entity = apiGroupService.getById(id);
+
+ return Result.ok(ApiGroupConvert.INSTANCE.convert(entity));
+ }
+
+ @PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAuthority('data-service:api-group:save')")
+ public Result save(@RequestBody ApiGroupVo vo) {
+ apiGroupService.save(vo);
+ return Result.ok();
+ }
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('data-service:api-group:update')")
+ public Result update(@RequestBody @Valid ApiGroupVo vo) {
+ apiGroupService.update(vo);
+ return Result.ok();
+ }
+
+ @DeleteMapping("/{id}")
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('data-service:api-group:delete')")
+ public Result delete(@PathVariable Long id) {
+ apiGroupService.delete(id);
+ return Result.ok();
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiController.java
new file mode 100644
index 0000000..75da63c
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiController.java
@@ -0,0 +1,29 @@
+package net.srt.controller;
+
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import net.srt.dao.DataServiceAppDao;
+import net.srt.framework.common.utils.Result;
+import net.srt.service.DataServiceAppService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName : DataServiceApiController
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-26 20:38
+ */
+@RestController
+@RequestMapping("api")
+@Tag(name = "api")
+@AllArgsConstructor
+public class DataServiceApiController {
+ private final DataServiceAppService dataServiceAppService;
+ @GetMapping("/token/generate")
+ public Result tokenGenerate(@RequestParam String appKey, @RequestParam String appSecret) {
+ return Result.ok(dataServiceAppService.tokenGenerate(appKey, appSecret));
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiLogController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiLogController.java
new file mode 100644
index 0000000..a9ffb07
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceApiLogController.java
@@ -0,0 +1,43 @@
+package net.srt.controller;
+
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.query.DataServiceApiLogQuery;
+import net.srt.query.DataServiceAppQuery;
+import net.srt.service.DataServiceApiLogService;
+import net.srt.vo.DataServiceApiLogVo;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @ClassName : DataServiceApiLogController
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:29
+ */
+@RestController
+@RequestMapping("log")
+@Tag(name = "api请求日志")
+@AllArgsConstructor
+public class DataServiceApiLogController {
+ private final DataServiceApiLogService dataServiceApiLogService;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ public Result> page(@Valid DataServiceApiLogQuery query){
+ //查询数据
+ PageResult page=dataServiceApiLogService.dataPageList(query);
+ return Result.ok(page);
+ }
+ @DeleteMapping
+ @Operation(summary ="删除")
+ public Result delete(@RequestBody List idList){
+ dataServiceApiLogService.removeId(idList);
+ return Result.ok();
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java
index e138804..f50d62d 100644
--- a/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java
+++ b/srt-cloud-data-service/src/main/java/net/srt/controller/DataServiceAppController.java
@@ -8,7 +8,9 @@ import net.srt.framework.common.page.PageResult;
import net.srt.framework.common.utils.Result;
import net.srt.query.DataServiceAppQuery;
import net.srt.service.DataServiceAppService;
+import net.srt.vo.DataServiceApiAuthVo;
import net.srt.vo.DataServiceAppVo;
+import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
@@ -32,12 +34,12 @@ public class DataServiceAppController {
PageResult pageResult = dataServiceAppService.page(query);
return Result.ok(pageResult);
}
- @GetMapping("{id}")
- @Operation(summary = "信息")
- public Result get(@PathVariable("id") Long id){
- DataServiceAppEntity dataServiceAppEntity = dataServiceAppService.getById(id);
- return Result.ok(DataServiceAppConvert.INSTANCE.convert(dataServiceAppEntity));
- }
+// @GetMapping("{id}")
+// @Operation(summary = "信息")
+// public Result get(@PathVariable("id") Long id){
+// DataServiceAppEntity dataServiceAppEntity = dataServiceAppService.getById(id);
+// return Result.ok(DataServiceAppConvert.INSTANCE.convert(dataServiceAppEntity));
+// }
@PostMapping
@Operation(summary = "保存")
@@ -61,16 +63,19 @@ public class DataServiceAppController {
return Result.ok();
}
+
+
@PostMapping("/auth")
@Operation(summary = "添加授权")
- public Result addAuth(@RequestBody DataServiceAppVo authVO){
+ public Result addAuth(@RequestBody DataServiceApiAuthVo authVO){
dataServiceAppService.addAuth(authVO);
return Result.ok();
}
+
@PutMapping("/auth")
@Operation(summary = "修改授权")
- public Result upAuth(@RequestBody DataServiceAppVo authVO){
+ public Result upAuth(@RequestBody DataServiceApiAuthVo authVO){
dataServiceAppService.upAuth(authVO);
return Result.ok();
}
@@ -81,4 +86,5 @@ public class DataServiceAppController {
dataServiceAppService.cancelAuth(authId);
return Result.ok();
}
+
}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/convert/ApiConfigConvert.java b/srt-cloud-data-service/src/main/java/net/srt/convert/ApiConfigConvert.java
new file mode 100644
index 0000000..9706f7e
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/convert/ApiConfigConvert.java
@@ -0,0 +1,30 @@
+package net.srt.convert;
+
+import net.srt.dto.ApiConfigDto;
+import net.srt.entity.ApiConfigEntity;
+import net.srt.vo.ApiConfigVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 数据服务-api配置
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2023-01-28
+*/
+@Mapper
+public interface ApiConfigConvert {
+ ApiConfigConvert INSTANCE = Mappers.getMapper(ApiConfigConvert.class);
+
+ ApiConfigEntity convert(ApiConfigVo vo);
+
+ ApiConfigVo convert(ApiConfigEntity entity);
+
+ ApiConfigDto convertDto(ApiConfigEntity entity);
+
+ List convertList(List list);
+
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/convert/ApiGroupConvert.java b/srt-cloud-data-service/src/main/java/net/srt/convert/ApiGroupConvert.java
new file mode 100644
index 0000000..c0e45ce
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/convert/ApiGroupConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.ApiGroupEntity;
+import net.srt.vo.ApiGroupVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 数据服务-api分组
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2023-01-28
+*/
+@Mapper
+public interface ApiGroupConvert {
+ ApiGroupConvert INSTANCE = Mappers.getMapper(ApiGroupConvert.class);
+
+ ApiGroupEntity convert(ApiGroupVo vo);
+
+ ApiGroupVo convert(ApiGroupEntity entity);
+
+ List convertList(List list);
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiAuthConvert.java b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiAuthConvert.java
new file mode 100644
index 0000000..8e88916
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiAuthConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.DataServiceApiAuthEntity;
+import net.srt.vo.DataServiceApiAuthVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @ClassName : DataServiceApiAuthConvert
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-26 19:45
+ */
+@Mapper
+public interface DataServiceApiAuthConvert {
+ DataServiceApiAuthConvert INSTANCE = Mappers.getMapper(DataServiceApiAuthConvert.class);
+
+
+ DataServiceApiAuthEntity convert(DataServiceApiAuthVo vo);
+
+ DataServiceApiAuthVo convert(DataServiceApiAuthEntity entity);
+
+ List convertList(List list);
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiLogConvert.java b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiLogConvert.java
new file mode 100644
index 0000000..0921ae7
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceApiLogConvert.java
@@ -0,0 +1,24 @@
+package net.srt.convert;
+
+import net.srt.entity.DataServiceApiLogEntity;
+import net.srt.vo.DataServiceApiLogVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * @ClassName : DataServiceApiLogConvert
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:30
+ */
+@Mapper
+public interface DataServiceApiLogConvert {
+ DataServiceApiLogConvert INSTANCE = Mappers.getMapper(DataServiceApiLogConvert.class);
+ DataServiceApiLogEntity convert(DataServiceApiLogVo vo);
+
+ DataServiceApiLogVo convert(DataServiceApiLogEntity entity);
+
+ List convertList(List list);
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java
index 3abbab9..2c975e2 100644
--- a/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java
+++ b/srt-cloud-data-service/src/main/java/net/srt/convert/DataServiceAppConvert.java
@@ -19,6 +19,7 @@ public interface DataServiceAppConvert {
DataServiceAppEntity convert(DataServiceAppVo vo);
+
DataServiceAppVo convert(DataServiceAppEntity entity);
List convertList(List list);
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/ApiConfigDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/ApiConfigDao.java
new file mode 100644
index 0000000..088d674
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/dao/ApiConfigDao.java
@@ -0,0 +1,22 @@
+package net.srt.dao;
+
+import net.srt.entity.ApiConfigEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+import java.util.Map;
+
+@Mapper
+public interface ApiConfigDao extends BaseDao {
+ List getResourceList(Map params);
+
+ ApiConfigEntity getById(Long id);
+
+ void updateById(@Param("apiId") Long apiId, @Param("id") Long id);
+
+ List getAuthList(Map params);
+
+ void updateAuthId(@Param("authId") Long authId);
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/ApiGroupDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/ApiGroupDao.java
new file mode 100644
index 0000000..66b1af5
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/dao/ApiGroupDao.java
@@ -0,0 +1,9 @@
+package net.srt.dao;
+
+import net.srt.entity.ApiGroupEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface ApiGroupDao extends BaseDao {
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiAuthDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiAuthDao.java
new file mode 100644
index 0000000..d9c84a6
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiAuthDao.java
@@ -0,0 +1,18 @@
+package net.srt.dao;
+
+import net.srt.entity.DataServiceApiAuthEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * @ClassName : DataServiceApiAuthDao
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-26 15:23
+ */
+@Mapper
+public interface DataServiceApiAuthDao extends BaseDao {
+ void resetRequested(Long authId);
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiLogDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiLogDao.java
new file mode 100644
index 0000000..a2cb64e
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceApiLogDao.java
@@ -0,0 +1,15 @@
+package net.srt.dao;
+
+import net.srt.entity.DataServiceApiLogEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+ * @ClassName : DataServiceApiLogDao
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:30
+ */
+@Mapper
+public interface DataServiceApiLogDao extends BaseDao {
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java
index f93a261..1ef713e 100644
--- a/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java
+++ b/srt-cloud-data-service/src/main/java/net/srt/dao/DataServiceAppDao.java
@@ -13,5 +13,5 @@ import org.apache.ibatis.annotations.Param;
*/
@Mapper
public interface DataServiceAppDao extends BaseDao {
- DataServiceAppEntity selectByApplyId(@Param("applyId") Long applyId);
+// DataServiceAppEntity selectByApplyId(@Param("applyId") Long applyId);
}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dto/ApiConfigDto.java b/srt-cloud-data-service/src/main/java/net/srt/dto/ApiConfigDto.java
new file mode 100644
index 0000000..638f19d
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/dto/ApiConfigDto.java
@@ -0,0 +1,48 @@
+package net.srt.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import net.srt.framework.common.utils.DateUtils;
+
+import java.io.Serializable;
+import java.util.Date;
+
+
+@Data
+public class ApiConfigDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private Long id;
+ private Long groupId;
+ private String path;
+ private String type;
+ private String name;
+ private String note;
+ private String sqlText;
+ private String sqlSeparator;
+ private Integer sqlMaxRow;
+ private String sqlParam;
+ private String jsonParam;
+ private String responseResult;
+ private String contentType;
+ private Integer status;
+ private Date releaseTime;
+ private Long releaseUserId;
+ private Integer sqlDbType;
+ private Long databaseId;
+ private Integer privates;
+ private Integer openTrans;
+ private Long projectId;
+ private Integer version;
+ private Integer deleted;
+ private Long creator;
+ private Date createTime;
+ private Long updater;
+ private Date updateTime;
+ private Integer requestedTimes;
+ private Integer requestedSuccessTimes;
+ private Integer requestedFailedTimes;
+ private Long authId;
+ private String group;
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dto/AppToken.java b/srt-cloud-data-service/src/main/java/net/srt/dto/AppToken.java
new file mode 100644
index 0000000..335ef90
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/dto/AppToken.java
@@ -0,0 +1,17 @@
+package net.srt.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+public class AppToken implements Serializable {
+ private Long appId;
+ private String appKey;
+ private String token;
+ private Long expireAt;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/dto/SqlDto.java b/srt-cloud-data-service/src/main/java/net/srt/dto/SqlDto.java
new file mode 100644
index 0000000..599ea55
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/dto/SqlDto.java
@@ -0,0 +1,15 @@
+package net.srt.dto;
+
+import lombok.Data;
+
+@Data
+public class SqlDto {
+ private Integer sqlDbType;
+ private Long projectId;
+ private String statement;
+ private String sqlSeparator;
+ private Long databaseId;
+ private Integer openTrans;
+ private String jsonParams;
+ private Integer sqlMaxRow;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/entity/ApiConfigEntity.java b/srt-cloud-data-service/src/main/java/net/srt/entity/ApiConfigEntity.java
new file mode 100644
index 0000000..4e9eb1d
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/entity/ApiConfigEntity.java
@@ -0,0 +1,38 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+import java.util.ArrayList;
+import java.util.Date;
+
+@Data
+@TableName("data_service_api_config")
+public class ApiConfigEntity extends BaseEntity {
+ private Long groupId;
+ private String path;
+ private String type;
+ private String name;
+ private String note;
+ private String sqlText;
+ private String sqlSeparator;
+ private Integer sqlMaxRow;
+ private String sqlParam;
+ private String jsonParam;
+ private String responseResult;
+ private String contentType;
+ private Integer status;
+ private Date releaseTime;
+ private Long releaseUserId;
+ private Integer sqlDbType;
+ private Long databaseId;
+ private Integer privates;
+ private Integer openTrans;
+ private Long projectId;
+ private Integer requestedTimes;
+ private Integer requestedSuccessTimes;
+ private Integer requestedFailedTimes;
+ private Long authId;
+ private String groupPath;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/entity/ApiGroupEntity.java b/srt-cloud-data-service/src/main/java/net/srt/entity/ApiGroupEntity.java
new file mode 100644
index 0000000..a3afe4c
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/entity/ApiGroupEntity.java
@@ -0,0 +1,17 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+@Data
+@TableName("data_service_api_group")
+public class ApiGroupEntity extends BaseEntity {
+ private Long parentId;
+ private Integer type;
+ private String name;
+ private String description;
+ private Integer orderNo;
+ private String path;
+ private Long projectId;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEnitiy.java b/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEnitiy.java
deleted file mode 100644
index 852114f..0000000
--- a/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEnitiy.java
+++ /dev/null
@@ -1,70 +0,0 @@
-//package net.srt.entity;
-//
-//import com.baomidou.mybatisplus.annotation.FieldFill;
-//import com.baomidou.mybatisplus.annotation.FieldStrategy;
-//import com.baomidou.mybatisplus.annotation.TableField;
-//import com.baomidou.mybatisplus.annotation.TableName;
-//import lombok.Data;
-//import lombok.EqualsAndHashCode;
-//import net.srt.framework.mybatis.entity.BaseEntity;
-//
-//import java.util.Date;
-//
-///**
-// * @ClassName : DataServiceApiAuthEnitiy
-// * @Description :
-// * @Author : FJJ
-// * @Date: 2023-12-24 11:30
-// */
-//@EqualsAndHashCode(callSuper=false)
-//@Data
-//@TableName("data_service_api_auth1")
-//public class DataServiceApiAuthEnitiy extends BaseEntity {
-//
-// /**
-// * app的id
-// */
-// private Long appId;
-//
-// /**
-// * 分组id
-// */
-// private Long groupId;
-//
-// /**
-// * api的id
-// */
-// private Long apiId;
-//
-// /**
-// * 调用次数 不限次数为-1
-// */
-// private Integer requestTimes;
-//
-// @TableField(updateStrategy = FieldStrategy.IGNORED)
-// private Date startTime;
-// @TableField(updateStrategy = FieldStrategy.IGNORED)
-// private Date endTime;
-//
-// /**
-// * 已调用次数
-// */
-// @TableField(updateStrategy = FieldStrategy.NEVER)
-// private Integer requestedTimes;
-// @TableField(updateStrategy = FieldStrategy.NEVER)
-// private Integer requestedSuccessTimes;
-// @TableField(updateStrategy = FieldStrategy.NEVER)
-// private Integer requestedFailedTimes;
-//
-// /**
-// * 所属项目id
-// */
-// private Long projectId;
-//
-// /**
-// * 真删
-// */
-// @TableField(fill = FieldFill.INSERT)
-// private Integer deleted;
-//
-//}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEntity.java b/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEntity.java
new file mode 100644
index 0000000..94b00bb
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiAuthEntity.java
@@ -0,0 +1,68 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * @ClassName : DataServiceApiAuthEntity
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-26 15:20
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+@TableName("data_service_api_auth")
+public class DataServiceApiAuthEntity extends BaseEntity {
+
+
+ /**
+ * app的id
+ */
+ private Long appId;
+
+ /**
+ * 分组id
+ */
+ private Long groupId;
+
+ /**
+ * api的id
+ */
+ private Long apiId;
+
+ /**
+ * 调用次数 不限次数为-1
+ */
+ private Integer requestTimes;
+
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
+ private Date startTime;
+ @TableField(updateStrategy = FieldStrategy.IGNORED)
+ private Date endTime;
+
+ /**
+ * 已调用次数
+ */
+ @TableField(updateStrategy = FieldStrategy.NEVER)
+ private Integer requestedTimes;
+ @TableField(updateStrategy = FieldStrategy.NEVER)
+ private Integer requestedSuccessTimes;
+ @TableField(updateStrategy = FieldStrategy.NEVER)
+ private Integer requestedFailedTimes;
+
+ /**
+ * 所属项目id
+ */
+ private Long projectId;
+
+ /**
+ * 真删
+ */
+ @TableField(fill = FieldFill.INSERT)
+ private Integer deleted;
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiLogEntity.java b/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiLogEntity.java
new file mode 100644
index 0000000..2edd578
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/entity/DataServiceApiLogEntity.java
@@ -0,0 +1,61 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+/**
+ * @ClassName : DataServiceApiLogEntity
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:11
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+@TableName("data_service_api_log")
+public class DataServiceApiLogEntity extends BaseEntity {
+ /**
+ * url
+ */
+ private String url;
+
+ /**
+ * 响应状态码
+ */
+ private Integer status;
+
+ /**
+ * 时长
+ */
+ private Long duration;
+
+ /**
+ * IP地址
+ */
+ private String ip;
+
+ /**
+ * app的id
+ */
+ private Long appId;
+
+ /**
+ * api的id
+ */
+ private Long apiId;
+
+ private String appName;
+ private String apiName;
+
+ /**
+ * 错误信息
+ */
+ private String error;
+
+ /**
+ * 项目id
+ */
+ private Long projectId;
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/handler/ApiHandler.java b/srt-cloud-data-service/src/main/java/net/srt/handler/ApiHandler.java
new file mode 100644
index 0000000..7351ef9
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/handler/ApiHandler.java
@@ -0,0 +1,27 @@
+package net.srt.handler;
+
+// 导入必要的类
+
+import net.srt.constants.ApiConstants;
+import net.srt.entity.ApiConfigEntity;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+// 假设这是你的接口处理类
+public class ApiHandler {
+ private Map mappings = new HashMap<>();
+
+ public void registerApi(ApiConfigEntity api) {
+ RequestMappingInfo mappingInfo = RequestMappingInfo
+ .paths(ApiConstants.API_PREFIX + api.getPath()) // 使用API_PREFIX常量
+ .methods(RequestMethod.valueOf(api.getType()))
+ .build();
+
+ mappings.put(mappingInfo, api);
+ }
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/handler/ApiRegistration.java b/srt-cloud-data-service/src/main/java/net/srt/handler/ApiRegistration.java
new file mode 100644
index 0000000..f74bc8e
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/handler/ApiRegistration.java
@@ -0,0 +1,21 @@
+package net.srt.handler;
+
+import net.srt.constants.ApiConstants;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
+import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
+
+public class ApiRegistration {
+ private RequestMappingHandlerMapping handlerMapping; // 注入或实例化 RequestMappingHandlerMapping 对象
+
+ public void registerApi(String path, String method, Object handler, String handlerMethod) throws NoSuchMethodException {
+ RequestMappingInfo mappingInfo = RequestMappingInfo
+ .paths(ApiConstants.API_PREFIX + path)
+ .methods(RequestMethod.valueOf(method))
+ .build();
+
+ HandlerMethod handlerMethodObject = new HandlerMethod(handler, handlerMethod);
+ handlerMapping.registerMapping(mappingInfo, handlerMethodObject.getBean(), handlerMethodObject.getMethod());
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/handler/MappingRequestHandler.java b/srt-cloud-data-service/src/main/java/net/srt/handler/MappingRequestHandler.java
new file mode 100644
index 0000000..3916db8
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/handler/MappingRequestHandler.java
@@ -0,0 +1,9 @@
+package net.srt.handler;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Map;
+
+public interface MappingRequestHandler {
+ Object invoke(HttpServletRequest request, String apiToken, Map pathVariables,
+ Map requestParams, Map requestBodys);
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/handler/MappingRequestHandlerExample.java b/srt-cloud-data-service/src/main/java/net/srt/handler/MappingRequestHandlerExample.java
new file mode 100644
index 0000000..d39bee7
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/handler/MappingRequestHandlerExample.java
@@ -0,0 +1,25 @@
+package net.srt.handler;
+
+import javax.servlet.http.HttpServletRequest;
+import java.lang.reflect.Method;
+import java.util.Map;
+
+public class MappingRequestHandlerExample {
+ private final MappingRequestHandler handler;
+ private Method method;
+
+ public MappingRequestHandlerExample(MappingRequestHandler handler) {
+ this.handler = handler;
+ try {
+ method = MappingRequestHandler.class.getDeclaredMethod(
+ "invoke", HttpServletRequest.class, String.class, Map.class, Map.class, Map.class);
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void getHandlerAndMethod() {
+ System.out.println("Handler: " + handler);
+ System.out.println("Method: " + method);
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/query/ApiConfigQuery.java b/srt-cloud-data-service/src/main/java/net/srt/query/ApiConfigQuery.java
new file mode 100644
index 0000000..4cbb148
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/query/ApiConfigQuery.java
@@ -0,0 +1,21 @@
+package net.srt.query;
+
+import lombok.Data;
+import net.srt.framework.common.query.Query;
+
+@Data
+public class ApiConfigQuery extends Query {
+ private Long groupId;
+ private Long resourceId;
+ private Long appId;
+ private String name;
+ private String path;
+ private String contentType;
+ private Integer status;
+ private Integer sqlDbType;
+ private Long databaseId;
+ private Integer privates;
+ private Integer openTrans;
+ private Integer queryApply;
+ private Integer ifMarket;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/query/DataServiceApiLogQuery.java b/srt-cloud-data-service/src/main/java/net/srt/query/DataServiceApiLogQuery.java
new file mode 100644
index 0000000..20aaa03
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/query/DataServiceApiLogQuery.java
@@ -0,0 +1,20 @@
+package net.srt.query;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import net.srt.framework.common.query.Query;
+
+/**
+ * @ClassName : DataServiceApiLogQuery
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:27
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "api日志")
+public class DataServiceApiLogQuery extends Query {
+ private String ip;
+ private String apiName;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/ApiConfigService.java b/srt-cloud-data-service/src/main/java/net/srt/service/ApiConfigService.java
new file mode 100644
index 0000000..991679c
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/ApiConfigService.java
@@ -0,0 +1,47 @@
+package net.srt.service;
+
+import cn.hutool.http.server.HttpServerResponse;
+import net.srt.dto.SqlDto;
+import net.srt.entity.ApiConfigEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.query.ApiConfigQuery;
+import net.srt.vo.ApiConfigVo;
+import net.srt.vo.DataServiceApiAuthVo;
+import srt.cloud.framework.dbswitch.core.model.JdbcSelectResult;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+public interface ApiConfigService extends BaseService {
+ String getIpPort();
+
+ PageResult page(ApiConfigQuery query);
+
+ void save(ApiConfigVo vo);
+
+ void update(ApiConfigVo vo);
+
+ void delete(List idList);
+
+ PageResult pageResource(ApiConfigQuery query);
+
+ List listActiveByGroupId(Long id);
+
+ void online(Long id);
+
+ void offline(Long id);
+
+ String ipPort();
+
+ JdbcSelectResult sqlExecute(SqlDto dto);
+
+ void exportDocs(List ids, HttpServletResponse response);
+
+ void upAuth(DataServiceApiAuthVo authVO);
+
+ DataServiceApiAuthVo getAuthInfo(Long authId);
+
+ void resetRequested(Long authId);
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/ApiGroupService.java b/srt-cloud-data-service/src/main/java/net/srt/service/ApiGroupService.java
new file mode 100644
index 0000000..58c0d64
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/ApiGroupService.java
@@ -0,0 +1,18 @@
+package net.srt.service;
+
+import net.srt.entity.ApiGroupEntity;
+import net.srt.framework.common.utils.TreeNodeVo;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.ApiGroupVo;
+
+import java.util.List;
+
+public interface ApiGroupService extends BaseService {
+ List listTree();
+
+ void save(ApiGroupVo vo);
+
+ void update(ApiGroupVo vo);
+
+ void delete(Long id);
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceApiAuthService.java b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceApiAuthService.java
new file mode 100644
index 0000000..5394c03
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceApiAuthService.java
@@ -0,0 +1,10 @@
+package net.srt.service;
+
+/**
+ * @ClassName : DataServiceApiAuthService
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-26 15:23
+ */
+public interface DataServiceApiAuthService {
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceApiLogService.java b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceApiLogService.java
new file mode 100644
index 0000000..fedf1df
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceApiLogService.java
@@ -0,0 +1,21 @@
+package net.srt.service;
+
+import net.srt.entity.DataServiceApiLogEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.query.DataServiceApiLogQuery;
+import net.srt.vo.DataServiceApiLogVo;
+
+import java.util.List;
+
+/**
+ * @ClassName : DataServiceApiLogService
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:31
+ */
+public interface DataServiceApiLogService extends BaseService {
+ PageResult dataPageList(DataServiceApiLogQuery query);
+
+ void removeId(List idList);
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java
index d0c4606..96b0bdc 100644
--- a/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/DataServiceAppService.java
@@ -4,6 +4,7 @@ import net.srt.entity.DataServiceAppEntity;
import net.srt.framework.common.page.PageResult;
import net.srt.framework.mybatis.service.BaseService;
import net.srt.query.DataServiceAppQuery;
+import net.srt.vo.DataServiceApiAuthVo;
import net.srt.vo.DataServiceAppVo;
import java.util.List;
@@ -23,9 +24,11 @@ public interface DataServiceAppService extends BaseService
void delete(List idList);
- void addAuth(DataServiceAppVo authVO);
+ void addAuth(DataServiceApiAuthVo authVO);
- void upAuth(DataServiceAppVo authVO);
+ void upAuth(DataServiceApiAuthVo authVO);
void cancelAuth(Long authId);
+
+ String tokenGenerate(String appKey, String appSecret);
}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java b/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java
new file mode 100644
index 0000000..67474b2
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiConfigServiceImpl.java
@@ -0,0 +1,287 @@
+package net.srt.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import net.srt.api.ServerNames;
+import net.srt.convert.ApiConfigConvert;
+import net.srt.convert.DataServiceApiAuthConvert;
+import net.srt.dao.ApiConfigDao;
+import net.srt.dao.ApiGroupDao;
+import net.srt.dao.DataServiceApiAuthDao;
+import net.srt.dto.SqlDto;
+import net.srt.entity.ApiConfigEntity;
+import net.srt.entity.ApiGroupEntity;
+import net.srt.entity.DataServiceApiAuthEntity;
+import net.srt.framework.common.constant.Constant;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.framework.security.user.SecurityUser;
+import net.srt.query.ApiConfigQuery;
+import net.srt.service.ApiConfigService;
+import net.srt.vo.ApiConfigVo;
+import net.srt.vo.DataServiceApiAuthVo;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+import org.springframework.web.server.ResponseStatusException;
+import srt.cloud.framework.dbswitch.common.util.StringUtil;
+import srt.cloud.framework.dbswitch.core.model.JdbcSelectResult;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Service
+@AllArgsConstructor
+public class ApiConfigServiceImpl extends BaseServiceImpl implements ApiConfigService {
+ private final ApiGroupDao apiGroupDao;
+ private final DiscoveryClient discoveryClient;
+ private final ApiConfigDao apiConfigDao;
+ private final DataServiceApiAuthDao dataServiceApiAuthDao;
+ private final Map mappings = new ConcurrentHashMap<>();
+ @Override
+ public String getIpPort() {
+ List instances = discoveryClient.getInstances(ServerNames.GATEWAY_SERVER_NAME);
+ return instances.get(0).getHost() + ":" + instances.get(0).getPort()+"/data-service/api/";
+ }
+
+
+
+
+ public void online(Long id) {
+ ApiConfigEntity apiConfigEntity = apiConfigDao.getById(id);
+ if (apiConfigEntity != null) {
+ apiConfigEntity.setStatus(1);
+ apiConfigEntity.setReleaseTime(new Date());
+ apiConfigEntity.setReleaseUserId(SecurityUser.getUserId());
+ String routeKey = getRouteKeyByRequestTypeAndUrl(apiConfigEntity.getType(), apiConfigEntity.getPath());
+ boolean isExists = checkIfExists(routeKey);
+
+ if (isExists) {
+ ApiConfigEntity configEntity = mappings.get(routeKey);
+ if (configEntity != null) { // 添加 null 判断
+ offline(configEntity.getId()); // 修正方法调用为传入id
+ // 从 mappings 中移除该 routeKey
+ mappings.remove(routeKey);
+ }
+ } else {
+ mappings.put(routeKey, apiConfigEntity);
+ }
+ apiConfigDao.updateById(apiConfigEntity);
+ }
+ }
+
+ private boolean checkIfExists(String routeKey) {
+ // 这里是全局的 mappings
+ Map globalMappings = getGlobalMappings();
+
+ return globalMappings.containsKey(routeKey);
+ }
+
+ private Map getGlobalMappings() {
+ return mappings;
+ }
+
+ private String getRouteKeyByRequestTypeAndUrl(String type, String path) {
+ return getRouteKey(type, path);
+ }
+
+ private String getRouteKey(String type, String path) {
+ return type.toUpperCase() + "_" + path.toLowerCase();
+ }
+
+ @Override
+ public void offline(Long id) { // 修正参数类型为 Long id
+ ApiConfigEntity apiConfigEntity = apiConfigDao.getById(id);
+ if (apiConfigEntity != null) {
+ apiConfigEntity.setStatus(0);
+ apiConfigEntity.setReleaseTime(null);
+ apiConfigEntity.setReleaseUserId(null);
+ apiConfigDao.updateById(apiConfigEntity);
+ }else{
+ throw new ResponseStatusException(HttpStatus.NOT_FOUND, "Resource not found");
+ }
+ }
+ // @Override
+// public void online(Long id) {
+// ApiConfigEntity apiConfigEntity = new ApiConfigEntity();
+// apiConfigEntity.setId(id);
+// apiConfigEntity.setStatus(1);
+// apiConfigEntity.setReleaseTime(new Date());
+// apiConfigEntity.setReleaseUserId(SecurityUser.getUserId());
+//
+// apiConfigDao.updateById(apiConfigEntity);
+// }
+
+ @Override
+ public String ipPort() {
+ List instances = discoveryClient.getInstances(ServerNames.GATEWAY_SERVER_NAME);
+ return instances.get(0).getHost() + ":" + instances.get(0).getPort();
+ }
+
+ @Override
+ public JdbcSelectResult sqlExecute(SqlDto dto) {
+ return null;
+ }
+
+ @Override
+ public void exportDocs(List ids, HttpServletResponse response) {
+ List instances = discoveryClient.getInstances(ServerNames.GATEWAY_SERVER_NAME);
+ ServiceInstance instance = instances.get(0);
+ StringBuilder docs = new StringBuilder("## 接口文档\n---\n");
+ List apiConfigEntities = baseMapper.selectBatchIds(ids);
+ for (ApiConfigEntity api : apiConfigEntities) {
+ docs.append("### ").append(api.getName())
+ .append("\n- IP地址:").append(instance.getHost())
+ .append("\n- 端口:").append(instance.getPort())
+ .append("\n- 接口地址:/data-service/api/").append(api.getPath())
+ .append("\n- 请求方式:").append(api.getType())
+ .append("\n- Content-Type:").append(api.getContentType())
+ .append("\n- 是否需要鉴权:").append(api.getPrivates() == 1 ? "是" : "否");
+ if (api.getPrivates() == 1) {
+ docs.append("\n- 获取鉴权token:").append("/data-service/api/token/generate?appKey=您的appKey&appSecret=您的appToken");
+ }
+ docs.append("\n- 接口备注:").append(api.getNote())
+ .append("\n- 请求参数示例:").append("\n```json\n").append(StringUtil.isNotBlank(api.getJsonParam()) ? api.getJsonParam() : "{}").append("\n```\n")
+ .append("\n- 响应结果示例:").append("\n```json\n").append(StringUtil.isNotBlank(api.getResponseResult()) ? api.getResponseResult() : "{\"code\":0,\"msg\":\"success\",\"data\":[]}").append("\n```\n")
+ .append("\n---\n");
+ }
+ response.setContentType("application/x-msdownload;charset=utf-8");
+ response.setHeader("Content-Disposition", "attachment; filename=API DOCS.md");
+ OutputStream os = null;
+ try {
+ os = response.getOutputStream();
+ os.write(docs.toString().getBytes(StandardCharsets.UTF_8));
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ try {
+ if (os != null)
+ os.close();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ @Override
+ public void upAuth(DataServiceApiAuthVo authVO) {
+ dataServiceApiAuthDao.updateById(DataServiceApiAuthConvert.INSTANCE.convert(authVO));
+ }
+
+ @Override
+ public DataServiceApiAuthVo getAuthInfo(Long authId) {
+ return DataServiceApiAuthConvert.INSTANCE.convert(dataServiceApiAuthDao.selectById(authId));
+ }
+
+ @Override
+ public void resetRequested(Long authId) {
+ dataServiceApiAuthDao.resetRequested(authId);
+ }
+
+
+ @Override
+ public PageResult page(ApiConfigQuery query) {
+ // 查询参数
+ Map params = getParams(query);
+ // 分页查询
+ query.setOrder("dsac.id");
+ IPage page = getPage(query);
+ params.put(Constant.PAGE, page);
+ // 数据列表
+ List list = baseMapper.getAuthList(params);
+ return new PageResult<>(ApiConfigConvert.INSTANCE.convertList(list), page.getTotal());
+ }
+ private LambdaQueryWrapper getWrapper(ApiConfigQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.like(StringUtil.isNotBlank(query.getName()), ApiConfigEntity::getName, query.getName());
+ wrapper.like(StringUtil.isNotBlank(query.getPath()), ApiConfigEntity::getPath, query.getPath());
+ wrapper.eq(StringUtil.isNotBlank(query.getContentType()), ApiConfigEntity::getContentType, query.getContentType());
+ wrapper.eq(query.getStatus()!= null, ApiConfigEntity::getStatus, query.getStatus());
+ wrapper.eq(query.getSqlDbType() != null, ApiConfigEntity::getSqlDbType, query.getSqlDbType());
+ wrapper.eq(query.getDatabaseId()!= null, ApiConfigEntity::getDatabaseId, query.getDatabaseId());
+ wrapper.eq(query.getPrivates()!= null, ApiConfigEntity::getPrivates, query.getPrivates());
+ wrapper.eq(query.getOpenTrans()!= null, ApiConfigEntity::getOpenTrans, query.getOpenTrans());
+ dataScopeWithoutOrgId(wrapper);
+ wrapper.orderByDesc(ApiConfigEntity::getCreateTime);
+ wrapper.orderByDesc(ApiConfigEntity::getId);
+ return wrapper;
+ }
+
+ @Override
+ public void save(ApiConfigVo vo) {
+ ApiConfigEntity entity = ApiConfigConvert.INSTANCE.convert(vo);
+ entity.setProjectId(getProjectId());
+ baseMapper.insert(entity);
+ }
+
+ @Override
+ public void update(ApiConfigVo vo) {
+ ApiConfigEntity entity = ApiConfigConvert.INSTANCE.convert(vo);
+ entity.setProjectId(getProjectId());
+ updateById(entity);
+ }
+
+ @Override
+ public void delete(List idList) {
+ removeByIds(idList);
+ }
+
+ @Override
+ public PageResult pageResource(ApiConfigQuery query) {
+ // 查询参数
+ Map params = getParams(query);
+ IPage page = getPage(query);
+ params.put(Constant.PAGE, page);
+ // 数据列表
+ List list = baseMapper.getResourceList(params);
+ List apiConfigVos = ApiConfigConvert.INSTANCE.convertList(list);
+ for (ApiConfigVo apiConfigVo : apiConfigVos) {
+ ApiGroupEntity groupEntity = apiGroupDao.selectById(apiConfigVo.getGroupId());
+ apiConfigVo.setGroup(groupEntity != null ? groupEntity.getPath() : null);
+ }
+ return new PageResult<>(apiConfigVos, page.getTotal());
+
+ }
+
+ @Override
+ public List listActiveByGroupId(Long id) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(ApiConfigEntity::getStatus, 1).eq(ApiConfigEntity::getGroupId, id).orderByDesc(ApiConfigEntity::getId);
+ dataScopeWithoutOrgId(wrapper);
+ return baseMapper.selectList(wrapper);
+ }
+
+ private Map getParams(ApiConfigQuery query) {
+ Map params = new HashMap<>();
+ params.put("ifMarket", query.getIfMarket());
+ params.put("queryApply", query.getQueryApply());
+ if (query.getQueryApply() != null && query.getQueryApply() == 1) {
+ params.put("userId", SecurityUser.getUserId());
+ }
+ params.put("resourceId", query.getResourceId());
+ params.put("groupId", query.getGroupId());
+ params.put("appId", query.getAppId());
+ params.put("name", query.getName());
+ params.put("path", query.getPath());
+ params.put("contentType", query.getContentType());
+ params.put("status", query.getStatus());
+ params.put("sqlDbType", query.getSqlDbType());
+ params.put("databaseId", query.getDatabaseId());
+ params.put("privates", query.getPrivates());
+ params.put("openTrans", query.getOpenTrans());
+ // 数据权限
+ params.put(Constant.DATA_SCOPE, getDataScope("dsac", null, null, "project_id", false, true));
+
+ return params;
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiGroupServiceImpl.java b/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiGroupServiceImpl.java
new file mode 100644
index 0000000..778f75d
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/impl/ApiGroupServiceImpl.java
@@ -0,0 +1,140 @@
+package net.srt.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.AllArgsConstructor;
+import net.srt.constants.ApiGroupType;
+import net.srt.convert.ApiGroupConvert;
+import net.srt.dao.ApiGroupDao;
+import net.srt.entity.ApiConfigEntity;
+import net.srt.entity.ApiGroupEntity;
+import net.srt.framework.common.exception.ServerException;
+import net.srt.framework.common.utils.BeanUtil;
+import net.srt.framework.common.utils.BuildTreeUtils;
+import net.srt.framework.common.utils.TreeNodeVo;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.service.ApiConfigService;
+import net.srt.service.ApiGroupService;
+import net.srt.vo.ApiGroupVo;
+import org.springframework.stereotype.Service;
+import srt.cloud.framework.dbswitch.common.util.StringUtil;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class ApiGroupServiceImpl extends BaseServiceImpl implements ApiGroupService{
+ private final ApiConfigService apiConfigService;
+ /**
+ * 获取API分组树形结构列表
+ * @return API分组树形结构列表
+ */
+ @Override
+ public List listTree() {
+ // 查询所有API分组实体对象,并转换为树节点VO对象列表
+ List treeNodeVos = getTreeNodeVos();
+ // 构建树形结构,并返回根节点列表
+ return BuildTreeUtils.buildTree(treeNodeVos);
+ }
+
+ /**
+ * 获取API分组树节点VO对象列表
+ * @return API分组树节点VO对象列表
+ */
+ private List getTreeNodeVos() {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ dataScopeWithoutOrgId(wrapper); // 加入数据权限过滤
+ wrapper.orderByAsc(ApiGroupEntity::getOrderNo); // 按orderNo升序排序
+ List apiGroupEntities = baseMapper.selectList(wrapper);
+ // 将实体对象列表转换为VO对象列表
+ return BeanUtil.copyListProperties(apiGroupEntities, TreeNodeVo::new, (oldItem, newItem) -> {
+ // 设置节点名称
+ newItem.setLabel(oldItem.getName());
+ // 设置节点值
+ newItem.setValue(oldItem.getId());
+ newItem.setDisabled(oldItem.getType() == 1); // 如果是虚拟节点,设置禁用状态
+ if (newItem.getPath().contains("/")) { // 设置父级节点路径
+ newItem.setParentPath(newItem.getPath().substring(0, newItem.getPath().lastIndexOf("/")));
+ }
+ });
+ }
+
+ /**
+ * 新增API分组
+ * @param vo API分组VO对象
+ */
+ @Override
+ public void save(ApiGroupVo vo) {
+ // 将VO对象转换为实体对象
+ ApiGroupEntity entity = ApiGroupConvert.INSTANCE.convert(vo);
+ // 递归生成路径
+ entity.setPath(recursionPath(entity, null));
+ // 设置项目ID
+ entity.setProjectId(getProjectId());
+ // 执行插入操作
+ baseMapper.insert(entity); // 使用 insertSelective() 方法进行插入操作
+ }
+
+ /**
+ * 更新API分组
+ * @param vo API分组VO对象
+ */
+ @Override
+ public void update(ApiGroupVo vo) {
+ // 将VO对象转换为实体对象
+ ApiGroupEntity entity = ApiGroupConvert.INSTANCE.convert(vo);
+ // 递归生成路径
+ entity.setPath(recursionPath(entity, null));
+ // 设置项目ID
+ entity.setProjectId(getProjectId());
+ // 执行更新操作
+ updateById(entity);
+ }
+
+ /**
+ * 递归生成API分组路径
+ * @param groupEntity 分组实体对象
+ * @param path 父级路径
+ * @return 完整路径
+ */
+ //1
+ private String recursionPath(ApiGroupEntity groupEntity, String path) {
+ if (StringUtil.isBlank(path)) {
+ // 如果路径为空,则将路径设置为组实体的名称
+ path = groupEntity.getName();
+ }
+ if (groupEntity.getParentId() != 0) {
+ // 如果组实体的父ID不为0
+ // 查询父级组实体
+ ApiGroupEntity parent = getById(groupEntity.getParentId()); // 通过父ID获取父级组实体
+ path = parent.getName() + "/" + path; // 将父级组实体的名称与当前路径拼接起来,中间以斜杠分隔
+ return recursionPath(parent, path); // 递归调用recursionPath方法,传入父级组实体和拼接后的路径
+ }
+ return path;
+ }
+
+ /**
+ * 根据ID删除API分组
+ * @param id API分组ID
+ */
+ @Override
+ public void delete(Long id) {
+ // 查询是否存在子节点
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(ApiGroupEntity::getParentId, id).last(" limit 1");
+ ApiGroupEntity one = baseMapper.selectOne(wrapper);
+ if (one != null) {
+ throw new ServerException("存在子节点,不允许删除!");
+ }
+ // 查询是否有API配置与之关联
+ LambdaQueryWrapper serviceApiConfigWrapper = new LambdaQueryWrapper<>();
+ serviceApiConfigWrapper.eq(ApiConfigEntity::getGroupId, id).last(" limit 1");
+ ApiConfigEntity apiConfigEntity = apiConfigService.getOne(serviceApiConfigWrapper);
+ if (apiConfigEntity != null) {
+ throw new ServerException("节点下有 api 与之关联,不允许删除!");
+ }
+ // 执行删除操作
+ removeById(id);
+ }
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceApiAuthServiceImpl.java b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceApiAuthServiceImpl.java
new file mode 100644
index 0000000..89d511e
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceApiAuthServiceImpl.java
@@ -0,0 +1,10 @@
+package net.srt.service.impl;
+
+/**
+ * @ClassName : DataServiceApiAuthServiceImpl
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-26 15:23
+ */
+public class DataServiceApiAuthServiceImpl {
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceApiLogServiceImpl.java b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceApiLogServiceImpl.java
new file mode 100644
index 0000000..058f65a
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceApiLogServiceImpl.java
@@ -0,0 +1,51 @@
+package net.srt.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import net.srt.convert.DataServiceApiLogConvert;
+import net.srt.dao.DataServiceApiLogDao;
+import net.srt.entity.DataServiceApiLogEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.query.DataServiceApiLogQuery;
+import net.srt.service.DataServiceApiLogService;
+import net.srt.vo.DataServiceApiLogVo;
+import org.springframework.stereotype.Service;
+import srt.cloud.framework.dbswitch.common.util.StringUtil;
+
+import java.util.List;
+
+/**
+ * @ClassName : DataServiceApiLogServiceImpl
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:31
+ */
+@Service
+@AllArgsConstructor
+public class DataServiceApiLogServiceImpl extends BaseServiceImpl implements DataServiceApiLogService {
+ @Override
+ public PageResult dataPageList(DataServiceApiLogQuery query) {
+ IPage page = baseMapper.selectPage(getPage(query), getWrapper(query));
+
+ return new PageResult<>(DataServiceApiLogConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
+ }
+
+ @Override
+ public void removeId(List idList) {
+ removeByIds(idList);
+ }
+
+ private LambdaQueryWrapper getWrapper(DataServiceApiLogQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.like(StringUtil.isNotBlank(query.getIp()), DataServiceApiLogEntity::getIp, query.getIp())
+ .like(StringUtil.isNotBlank(query.getApiName()), DataServiceApiLogEntity::getApiName, query.getApiName())
+ .orderByDesc(DataServiceApiLogEntity::getCreateTime).orderByDesc(DataServiceApiLogEntity::getId);
+ dataScopeWithoutOrgId(wrapper);
+ return wrapper;
+ }
+
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java
index a4e251c..3a268b6 100644
--- a/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java
+++ b/srt-cloud-data-service/src/main/java/net/srt/service/impl/DataServiceAppServiceImpl.java
@@ -4,8 +4,13 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.AllArgsConstructor;
+import net.srt.convert.DataServiceApiAuthConvert;
import net.srt.convert.DataServiceAppConvert;
+import net.srt.dao.ApiConfigDao;
+import net.srt.dao.DataServiceApiAuthDao;
import net.srt.dao.DataServiceAppDao;
+import net.srt.dto.AppToken;
+import net.srt.entity.DataServiceApiAuthEntity;
import net.srt.entity.DataServiceAppEntity;
import net.srt.framework.common.exception.ServerException;
import net.srt.framework.common.page.PageResult;
@@ -13,7 +18,9 @@ import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
import net.srt.framework.security.user.SecurityUser;
import net.srt.query.DataServiceAppQuery;
import net.srt.service.DataServiceAppService;
+import net.srt.vo.DataServiceApiAuthVo;
import net.srt.vo.DataServiceAppVo;
+import org.apache.commons.lang.RandomStringUtils;
import org.springframework.stereotype.Service;
import srt.cloud.framework.dbswitch.common.util.StringUtil;
@@ -30,6 +37,8 @@ import java.util.List;
@AllArgsConstructor
public class DataServiceAppServiceImpl extends BaseServiceImpl implements DataServiceAppService {
private final DataServiceAppDao dataServiceAppDao;
+ private final ApiConfigDao apiConfigDao;
+ private final DataServiceApiAuthDao dataServiceApiAuthDao;
@Override
public PageResult page(DataServiceAppQuery query) {
IPage page=baseMapper.selectPage(getPage(query),null);
@@ -44,6 +53,7 @@ public class DataServiceAppServiceImpl extends BaseServiceImpl wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(DataServiceAppEntity::getAppKey,appKey).last("limit 1");
+ DataServiceAppEntity dataServiceAppEntity = baseMapper.selectOne(wrapper);
+ if (dataServiceAppEntity==null){
+ throw new RuntimeException("appKey不存在");
+ }
+ if (!appSecret.equals(dataServiceAppEntity.getAppSecret())){
+ throw new ServerException("appSecret错误");
+ }
+ //生成token
+ String token = RandomStringUtils.random(32, true, true);
+ AppToken appToken = new AppToken();
+ appToken.setToken(token);
+ appToken.setAppKey(appKey);
+ appToken.setAppId(dataServiceAppEntity.getId());
+ if (dataServiceAppEntity.getExpireDuration()==0){
+ appToken.setExpireAt(0L);
+ } else if (dataServiceAppEntity.getExpireDuration()== -1) {
+ appToken.setExpireAt(-1L);
+ }else if (dataServiceAppEntity.getExpireDuration()>0){
+ long l = System.currentTimeMillis() + dataServiceAppEntity.getExpireDuration() * 1000;
+ appToken.setExpireAt(l);
+ }
+ return appToken.getToken();
}
-// private LambdaQueryWrapper getWrapper(DataServiceAppQuery query) {
-// LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
-// wrapper.like(StringUtil.isNotBlank(query.getName()), DataServiceAppEntity::getName, query.getName())
-// .eq(DataServiceAppEntity::getIfMarket, query.getIfMarket() != null ? query.getIfMarket() : 0)
-// .eq(query.getIfMarket() != null, DataServiceAppEntity::getCreator, SecurityUser.getUserId())
-// .eq(StringUtil.isNotBlank(query.getAppKey()), DataServiceAppEntity::getAppKey, query.getAppKey())
-// .orderByDesc(DataServiceAppEntity::getCreateTime).orderByDesc(DataServiceAppEntity::getId);
-// return wrapper;
-// }
+ private LambdaQueryWrapper getWrapper(DataServiceAppQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.like(StringUtil.isNotBlank(query.getName()), DataServiceAppEntity::getName, query.getName())
+ .eq(DataServiceAppEntity::getIfMarket, query.getIfMarket() != null ? query.getIfMarket() : 0)
+ .eq(query.getIfMarket() != null, DataServiceAppEntity::getCreator, SecurityUser.getUserId())
+ .eq(StringUtil.isNotBlank(query.getAppKey()), DataServiceAppEntity::getAppKey, query.getAppKey())
+ .orderByDesc(DataServiceAppEntity::getCreateTime).orderByDesc(DataServiceAppEntity::getId);
+ return wrapper;
+ }
}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/utils/EncrypDES.java b/srt-cloud-data-service/src/main/java/net/srt/utils/EncrypDES.java
new file mode 100644
index 0000000..939f75c
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/utils/EncrypDES.java
@@ -0,0 +1,145 @@
+package net.srt.utils;
+
+import javax.crypto.Cipher;
+import java.security.Key;
+
+/**
+ * @ClassName : EncrypDES
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 09:31
+ */
+public class EncrypDES {
+
+ // 字符串默认键值
+ private static String strDefaultKey = "inventec2020@#$%^&";
+
+ //加密工具
+ private Cipher encryptCipher = null;
+
+ // 解密工具
+ private Cipher decryptCipher = null;
+
+ /**
+ * 默认构造方法,使用默认密钥
+ */
+ public EncrypDES() throws Exception {
+ this(strDefaultKey);
+ }
+
+ /**
+ * 指定密钥构造方法
+ * @param strKey 指定的密钥
+ * @throws Exception
+ */
+
+ public EncrypDES(String strKey) throws Exception {
+
+ // Security.addProvider(new com.sun.crypto.provider.SunJCE());
+ Key key = getKey(strKey.getBytes());
+ encryptCipher = Cipher.getInstance("DES");
+ encryptCipher.init(Cipher.ENCRYPT_MODE, key);
+ decryptCipher = Cipher.getInstance("DES");
+ decryptCipher.init(Cipher.DECRYPT_MODE, key);
+ }
+
+ /**
+ * 将byte数组转换为表示16进制值的字符串, 如:byte[]{8,18}转换为:0813,和public static byte[]
+ *
+ * hexStr2ByteArr(String strIn) 互为可逆的转换过程
+ *
+ * @param arrB 需要转换的byte数组
+ * @return 转换后的字符串
+ * @throws Exception 本方法不处理任何异常,所有异常全部抛出
+ */
+ public static String byteArr2HexStr(byte[] arrB) throws Exception {
+ int iLen = arrB.length;
+ // 每个byte用2个字符才能表示,所以字符串的长度是数组长度的2倍
+ StringBuffer sb = new StringBuffer(iLen * 2);
+ for (int i = 0; i < iLen; i++) {
+ int intTmp = arrB[i];
+ // 把负数转换为正数
+ while (intTmp < 0) {
+ intTmp = intTmp + 256;
+ }
+ // 小于0F的数需要在前面补0
+ if (intTmp < 16) {
+ sb.append("0");
+ }
+ sb.append(Integer.toString(intTmp, 16));
+ }
+ return sb.toString();
+ }
+
+ /**
+ * 将表示16进制值的字符串转换为byte数组,和public static String byteArr2HexStr(byte[] arrB)
+ * 互为可逆的转换过程
+ * @param strIn 需要转换的字符串
+ * @return 转换后的byte数组
+ */
+ public static byte[] hexStr2ByteArr(String strIn) throws Exception {
+ byte[] arrB = strIn.getBytes();
+ int iLen = arrB.length;
+ // 两个字符表示一个字节,所以字节数组长度是字符串长度除以2
+ byte[] arrOut = new byte[iLen / 2];
+ for (int i = 0; i < iLen; i = i + 2) {
+ String strTmp = new String(arrB, i, 2);
+ arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);
+ }
+ return arrOut;
+ }
+
+ /**
+ *
+ * 加密字节数组
+ * @param arrB 需加密的字节数组
+ * @return 加密后的字节数组
+ */
+ public byte[] encrypt(byte[] arrB) throws Exception {
+ return encryptCipher.doFinal(arrB);
+ }
+
+ /**
+ * 加密字符串
+ * @param strIn 需加密的字符串
+ * @return 加密后的字符串
+ */
+ public String encrypt(String strIn) throws Exception {
+ return byteArr2HexStr(encrypt(strIn.getBytes()));
+ }
+
+ /**
+ * 解密字节数组
+ * @param arrB 需解密的字节数组
+ * @return 解密后的字节数组
+ */
+ public byte[] decrypt(byte[] arrB) throws Exception {
+ return decryptCipher.doFinal(arrB);
+ }
+
+ /**
+ * 解密字符串
+ * @param strIn 需解密的字符串
+ * @return 解密后的字符串
+ */
+ public String decrypt(String strIn) throws Exception {
+ return new String(decrypt(hexStr2ByteArr(strIn)));
+ }
+
+ /**
+ * 从指定字符串生成密钥,密钥所需的字节数组长度为8位 不足8位时后面补0,超出8位只取前8位
+ * @param arrBTmp 构成该字符串的字节数组
+ * @return 生成的密钥
+ */
+ private Key getKey(byte[] arrBTmp) throws Exception {
+ // 创建一个空的8位字节数组(默认值为0)
+ byte[] arrB = new byte[8];
+ // 将原始字节数组转换为8位
+ for (int i = 0; i < arrBTmp.length && i < arrB.length; i++) {
+ arrB[i] = arrBTmp[i];
+ }
+ // 生成密钥
+ Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES");
+ return key;
+ }
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/vo/ApiConfigVo.java b/srt-cloud-data-service/src/main/java/net/srt/vo/ApiConfigVo.java
new file mode 100644
index 0000000..78b59cd
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/vo/ApiConfigVo.java
@@ -0,0 +1,56 @@
+package net.srt.vo;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import net.srt.framework.common.utils.DateUtils;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 数据服务-api配置
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2023-01-28
+*/
+@Data
+public class ApiConfigVo implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private Long id;
+ private Long groupId;
+ private String path;
+ private String type;
+ private String name;
+ private String note;
+ private String sqlText;
+ private String sqlSeparator;
+ private Integer sqlMaxRow;
+ private String sqlParam;
+ private String jsonParam;
+ private String responseResult;
+ private String contentType;
+ private Integer status;
+ private Date releaseTime;
+ private Long releaseUserId;
+ private Integer sqlDbType;
+ private Long databaseId;
+ private Integer privates;
+ private Integer openTrans;
+ private Long projectId;
+ private Integer version;
+ private Integer deleted;
+ private Long creator;
+ private Date createTime;
+ private Long updater;
+ private Date updateTime;
+ private Integer requestedTimes;
+ private Integer requestedSuccessTimes;
+ private Integer requestedFailedTimes;
+ private Long authId;
+ private String group;
+ private String groupPath;
+ private Integer previlege;
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/vo/ApiGroupVo.java b/srt-cloud-data-service/src/main/java/net/srt/vo/ApiGroupVo.java
new file mode 100644
index 0000000..4193587
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/vo/ApiGroupVo.java
@@ -0,0 +1,25 @@
+package net.srt.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+@Data
+public class ApiGroupVo implements Serializable {
+ private static final long serialVersionUID = 1L;
+ private Long id;
+ private Long parentId;
+ private Integer type;
+ private String name;
+ private String description;
+ private Integer orderNo;
+ private String path;
+ private Long projectId;
+ private Integer version;
+ private Integer deleted;
+ private Long creator;
+ private Date createTime;
+ private Long updater;
+ private Date updateTime;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java b/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java
index bd53d79..be2a7ff 100644
--- a/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java
+++ b/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiAuthVo.java
@@ -19,33 +19,35 @@ import java.util.Date;
public class DataServiceApiAuthVo implements Serializable {
private static final long serialVersionUID = 1L;
- @Schema(description = "主键id")
+ @Schema(description = "id")
private Long id;
- @Schema(description = "app的id")
+ @Schema(description = "appId")
private Long appId;
- @Schema(description = "分组id")
+ @Schema(description = "groupId")
private Long groupId;
- @Schema(description = "api的id")
+ @Schema(description = "apiId")
private Long apiId;
- @Schema(description = "调用次数 不限次数为-1")
+ @Schema(description = "调用的次数:不限次数为-1")
private Integer requestTimes;
- @Schema(description = "已调用次数")
+ @Schema(description = "已调次数")
private Integer requestedTimes;
private Integer requestedSuccessTimes;
private Integer requestedFailedTimes;
- @Schema(description = "所属项目id")
+ @Schema(description = "所属项目的id")
private Long projectId;
+ private Long authId;
+
@Schema(description = "版本号")
private Integer version;
- @Schema(description = "删除标识 0:正常 1:已删除")
+ @Schema(description = "删除标识 0是正常 1是已删除")
private Integer deleted;
@Schema(description = "创建者")
diff --git a/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiLogVo.java b/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiLogVo.java
new file mode 100644
index 0000000..0c338e3
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/vo/DataServiceApiLogVo.java
@@ -0,0 +1,72 @@
+package net.srt.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import net.srt.framework.common.utils.DateUtils;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName : DataServiceApiLog
+ * @Description :
+ * @Author : FJJ
+ * @Date: 2023-12-25 11:05
+ */
+@Data
+@Schema(description = "api请求日志")
+public class DataServiceApiLogVo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+
+ @Schema(description = "主键id")
+ private Long id;
+
+ @Schema(description = "url")
+ private String url;
+
+ @Schema(description = "响应状态码")
+ private Integer status;
+
+ @Schema(description = "时长")
+ private Long duration;
+
+ @Schema(description = "IP地址")
+ private String ip;
+
+ @Schema(description = "app的id")
+ private String appId;
+
+ @Schema(description = "api的id")
+ private String apiId;
+
+ private String appName;
+ private String apiName;
+
+ @Schema(description = "错误信息")
+ private String error;
+
+ @Schema(description = "项目id")
+ private Long projectId;
+
+ @Schema(description = "版本号")
+ private Integer version;
+
+ @Schema(description = "删除标识 0:正常 1:已删除")
+ private Integer deleted;
+
+ @Schema(description = "创建者")
+ private Long creator;
+
+ @Schema(description = "创建时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date createTime;
+
+ @Schema(description = "更新者")
+ private Long updater;
+
+ @Schema(description = "更新时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date updateTime;
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/vo/ServiceApiLogVo.java b/srt-cloud-data-service/src/main/java/net/srt/vo/ServiceApiLogVo.java
new file mode 100644
index 0000000..d79c064
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/vo/ServiceApiLogVo.java
@@ -0,0 +1,73 @@
+package net.srt.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import net.srt.framework.common.utils.DateUtils;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @BelongsProject: data-center
+ * @BelongsPackage: net.srt.vo
+ * @Author: yanqiang
+ * @CreateTime: 2023-12-24 15:21
+ */
+
+@Data
+@Schema(description = "api日志")
+public class ServiceApiLogVo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键id")
+ private Long id;
+
+ @Schema(description = "url")
+ private String url;
+
+ @Schema(description = "响应状态码")
+ private Integer status;
+
+ @Schema(description = "时长")
+ private Long duration;
+
+ @Schema(description = "IP地址")
+ private String ip;
+
+ @Schema(description = "app的id")
+ private String appId;
+
+ @Schema(description = "api的id")
+ private String apiId;
+
+ private String appName;
+ private String apiName;
+
+ @Schema(description = "错误信息")
+ private String error;
+
+ @Schema(description = "项目id")
+ private Long projectId;
+
+ @Schema(description = "版本号")
+ private Integer version;
+
+ @Schema(description = "删除标识 0:正常 1:已删除")
+ private Integer deleted;
+
+ @Schema(description = "创建者")
+ private Long creator;
+
+ @Schema(description = "创建时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date createTime;
+
+ @Schema(description = "更新者")
+ private Long updater;
+
+ @Schema(description = "更新时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date updateTime;
+
+}
diff --git a/srt-cloud-data-service/src/main/java/net/srt/vo/ServiceAppVo.java b/srt-cloud-data-service/src/main/java/net/srt/vo/ServiceAppVo.java
new file mode 100644
index 0000000..ce741cd
--- /dev/null
+++ b/srt-cloud-data-service/src/main/java/net/srt/vo/ServiceAppVo.java
@@ -0,0 +1,70 @@
+package net.srt.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import net.srt.framework.common.utils.DateUtils;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @BelongsProject: data-center
+ * @BelongsPackage: net.srt.vo
+ * @Author: yanqiang
+ * @CreateTime: 2023-12-21 20:50
+ */
+
+@Data
+@Schema(description = "数据app")
+public class ServiceAppVo implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键id")
+ private Long id;
+
+ @Schema(description = "名称")
+ private String name;
+
+ @Schema(description = "备注")
+ private String note;
+
+ @Schema(description = "appKey")
+ private String appKey;
+
+ @Schema(description = "appSecret")
+ private String appSecret;
+
+ @Schema(description = "过期时间")
+ private String expireDesc;
+ /**
+ * 过期时间 -1永久;0 单次失效;> 0 失效时间
+ */
+ private Long expireDuration;
+ private Integer ifMarket;
+
+ @Schema(description = "项目id")
+ private Long projectId;
+
+ @Schema(description = "版本号")
+ private Integer version;
+
+ @Schema(description = "0:正常 1:已删除")
+ private Integer deleted;
+
+ @Schema(description = "创建人")
+ private Long creator;
+
+ @Schema(description = "创建时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date createTime;
+
+ @Schema(description = "更新人")
+ private Long updater;
+
+ @Schema(description = "更新时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date updateTime;
+
+
+}
diff --git a/srt-cloud-data-service/src/main/resources/bootstrap.yml b/srt-cloud-data-service/src/main/resources/bootstrap.yml
index 8cb2c5d..2b9a36d 100644
--- a/srt-cloud-data-service/src/main/resources/bootstrap.yml
+++ b/srt-cloud-data-service/src/main/resources/bootstrap.yml
@@ -14,8 +14,8 @@ spring:
nacos:
discovery:
server-addr: 101.34.77.101:8848
- # 命名空间,默认:public
- namespace: 09dff3e2-9790-4d4f-beb6-9baeb01ae040
+ # 命名空间,默认:public、
+ namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name}
group: srt2.0
config:
diff --git a/srt-cloud-data-service/src/main/resources/mapper/ApiConfigDao.xml b/srt-cloud-data-service/src/main/resources/mapper/ApiConfigDao.xml
new file mode 100644
index 0000000..7e54245
--- /dev/null
+++ b/srt-cloud-data-service/src/main/resources/mapper/ApiConfigDao.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+ update data_service_api_config set auth_id=#{apiId} where id=#{id}
+
+
+ update data_service_api_config set auth_id=null where auth_id=#{authId}
+
+
+
+
+
diff --git a/srt-cloud-data-service/src/main/resources/mapper/DataServiceApiAuthMapper.xml b/srt-cloud-data-service/src/main/resources/mapper/DataServiceApiAuthMapper.xml
new file mode 100644
index 0000000..e97cdab
--- /dev/null
+++ b/srt-cloud-data-service/src/main/resources/mapper/DataServiceApiAuthMapper.xml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+ UPDATE data_service_api_auth SET requested_times=0,requested_success_times=0,requested_failed_times=0 WHERE id =#{id}
+
+
diff --git a/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml b/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml
index 6271392..9a6fdde 100644
--- a/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml
+++ b/srt-cloud-data-service/src/main/resources/mapper/DataServiceAppMapper.xml
@@ -5,7 +5,7 @@
-
+
+
+
diff --git a/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar b/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar
index 125a9ef..48c09f7 100644
Binary files a/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar and b/srt-cloud-framework/srt-cloud-flink/build/app/flink-app-1.14-2.0.0-jar-with-dependencies.jar differ
diff --git a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar
index 8c6d86f..877ce62 100644
Binary files a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar and b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-catalog-mysql-1.14-2.0.0.jar differ
diff --git a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar
index f8ecd96..74d52ea 100644
Binary files a/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar and b/srt-cloud-framework/srt-cloud-flink/build/extends/flink-client-1.14-2.0.0.jar differ
diff --git a/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java b/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java
index 89a427e..077c62b 100644
--- a/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java
+++ b/srt-cloud-framework/srt-cloud-mybatis/src/main/java/net/srt/framework/mybatis/service/impl/BaseServiceImpl.java
@@ -198,13 +198,20 @@ public class BaseServiceImpl, T> extends ServiceImpl queryWrapper) {
- DataScope dataScope = getDataScope(null, null, null, null, false, true);
- if (dataScope != null) {
- queryWrapper.apply(dataScope.getSqlFilter());
- }
- }
+// protected void dataScopeWithoutOrgId(LambdaQueryWrapper queryWrapper) {
+// DataScope dataScope = getDataScope(null, null, null, null, false, true);
+// if (dataScope != null) {
+// queryWrapper.apply(dataScope.getSqlFilter());
+// }
+// }
+ protected void dataScopeWithoutOrgId(LambdaQueryWrapper queryWrapper) {
+ DataScope dataScope = this.getDataScope((String)null, (String)null, (String)null, (String)null, false, true);
+ if (dataScope != null) {
+ queryWrapper.apply(dataScope.getSqlFilter(), new Object[0]);
+ }
+
+ }
/**
* MyBatis-Plus 数据权限
*/
diff --git a/srt-cloud-framework/srt-cloud-security/src/main/java/net/srt/framework/security/config/SecurityFilterConfig.java b/srt-cloud-framework/srt-cloud-security/src/main/java/net/srt/framework/security/config/SecurityFilterConfig.java
index 78f6a23..329a8c1 100644
--- a/srt-cloud-framework/srt-cloud-security/src/main/java/net/srt/framework/security/config/SecurityFilterConfig.java
+++ b/srt-cloud-framework/srt-cloud-security/src/main/java/net/srt/framework/security/config/SecurityFilterConfig.java
@@ -40,7 +40,6 @@ public class SecurityFilterConfig {
.and().authorizeRequests()
.antMatchers(permits).permitAll()
.antMatchers(HttpMethod.OPTIONS).permitAll()
- .antMatchers("/datax/**").permitAll()
.anyRequest().authenticated()
.and().exceptionHandling().authenticationEntryPoint(new SecurityAuthenticationEntryPoint())
.and().headers().frameOptions().disable()
diff --git a/srt-cloud-module/srt-cloud-datax-service/src/main/resources/bootstrap.yml b/srt-cloud-module/srt-cloud-datax-service/src/main/resources/bootstrap.yml
index 4d5aac0..9158606 100644
--- a/srt-cloud-module/srt-cloud-datax-service/src/main/resources/bootstrap.yml
+++ b/srt-cloud-module/srt-cloud-datax-service/src/main/resources/bootstrap.yml
@@ -11,7 +11,7 @@ spring:
discovery:
server-addr: 101.34.77.101:8848
# 命名空间,默认:public
- namespace: 7e1e997d-5fa4-4f84-9f48-3e0adf830a37
+ namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name}
group: srt2.0
config:
diff --git a/srt-cloud-module/srt-cloud-datax/pom.xml b/srt-cloud-module/srt-cloud-datax/pom.xml
index 4ccd30a..5ba3ab9 100644
--- a/srt-cloud-module/srt-cloud-datax/pom.xml
+++ b/srt-cloud-module/srt-cloud-datax/pom.xml
@@ -101,11 +101,11 @@
-
- com.alibaba.datax
- mysqlreader
- 0.0.1-SNAPSHOT
-
+
+
+
+
+
@@ -117,11 +117,11 @@
-
- com.alibaba.datax
- oraclereader
- 0.0.1-SNAPSHOT
-
+
+
+
+
+
diff --git a/srt-cloud-module/srt-cloud-datax/src/main/resources/bootstrap.yml b/srt-cloud-module/srt-cloud-datax/src/main/resources/bootstrap.yml
index 3a1e9f5..d13af5e 100644
--- a/srt-cloud-module/srt-cloud-datax/src/main/resources/bootstrap.yml
+++ b/srt-cloud-module/srt-cloud-datax/src/main/resources/bootstrap.yml
@@ -11,7 +11,7 @@ spring:
discovery:
server-addr: 101.34.77.101:8848
# 命名空间,默认:public
- namespace: 7e1e997d-5fa4-4f84-9f48-3e0adf830a37
+ namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name}
group: srt2.0
config:
diff --git a/srt-cloud-module/srt-cloud-message/src/main/resources/bootstrap.yml b/srt-cloud-module/srt-cloud-message/src/main/resources/bootstrap.yml
index af0321c..0efb72e 100644
--- a/srt-cloud-module/srt-cloud-message/src/main/resources/bootstrap.yml
+++ b/srt-cloud-module/srt-cloud-message/src/main/resources/bootstrap.yml
@@ -11,7 +11,7 @@ spring:
discovery:
server-addr: 101.34.77.101:8848
# 命名空间,默认:public
- namespace: 7e1e997d-5fa4-4f84-9f48-3e0adf830a37
+ namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name}
group: srt2.0
config:
diff --git a/srt-cloud-module/srt-cloud-quartz/pom.xml b/srt-cloud-module/srt-cloud-quartz/pom.xml
index 63bf9b5..6a5a577 100644
--- a/srt-cloud-module/srt-cloud-quartz/pom.xml
+++ b/srt-cloud-module/srt-cloud-quartz/pom.xml
@@ -1,14 +1,14 @@
-
- net.srt
- srt-cloud-module
- 2.0.0
-
- 4.0.0
- srt-cloud-quartz
- jar
+
+ net.srt
+ srt-cloud-module
+ 2.0.0
+
+ 4.0.0
+ srt-cloud-quartz
+ jar
-
+
net.srt
srt-cloud-api
@@ -36,41 +36,41 @@
-
- net.srt
- srt-cloud-mybatis
- 2.0.0
-
-
- org.springframework.cloud
- spring-cloud-starter-bootstrap
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-discovery
-
-
- com.alibaba.cloud
- spring-cloud-starter-alibaba-nacos-config
-
-
- com.github.xiaoymin
- knife4j-springdoc-ui
-
-
- org.quartz-scheduler
- quartz
-
net.srt
- srt-cloud-datax
+ srt-cloud-mybatis
+ 2.0.0
+
+
+ org.springframework.cloud
+ spring-cloud-starter-bootstrap
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-discovery
+
+
+ com.alibaba.cloud
+ spring-cloud-starter-alibaba-nacos-config
+
+
+ com.github.xiaoymin
+ knife4j-springdoc-ui
+
+
+ org.quartz-scheduler
+ quartz
+
+
+ net.srt
+ srt-cloud-api
2.0.0
-
-
-
+
+
+
org.codehaus.mojo
appassembler-maven-plugin
@@ -170,35 +170,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
- maven-assembly-plugin
+ org.apache.maven.plugins
+ maven-surefire-plugin
-
- ${project.parent.parent.basedir}/assembly/assembly-win.xml
- ${project.parent.parent.basedir}/assembly/assembly-linux.xml
-
+ true
-
-
- make-assembly
- package
-
- single
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- true
-
-
-
-
+
+
diff --git a/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/QuartzApplication.java b/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/QuartzApplication.java
index fae1f2b..43a6de6 100644
--- a/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/QuartzApplication.java
+++ b/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/QuartzApplication.java
@@ -14,7 +14,6 @@ import org.springframework.context.annotation.ComponentScan;
@EnableFeignClients
@EnableDiscoveryClient
@SpringBootApplication
-@ComponentScan(basePackages = "net.srt.framework.common.cache")
public class QuartzApplication {
public static void main(String[] args) {
diff --git a/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/api/QuartzDataAccessApiImpl.java b/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/api/QuartzDataAccessApiImpl.java
index 485e7a1..2d6f660 100644
--- a/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/api/QuartzDataAccessApiImpl.java
+++ b/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/api/QuartzDataAccessApiImpl.java
@@ -8,7 +8,6 @@ import net.srt.api.module.data.integrate.dto.DataAccessDto;
import net.srt.api.module.data.integrate.dto.DataAccessTaskDto;
import net.srt.api.module.quartz.QuartzDataAccessApi;
import net.srt.api.module.quartz.constant.QuartzJobType;
-import net.srt.datax.feign.DataAccessFeign;
import net.srt.framework.common.utils.Result;
import net.srt.quartz.entity.ScheduleJobEntity;
import net.srt.quartz.enums.JobGroupEnum;
@@ -32,7 +31,6 @@ public class QuartzDataAccessApiImpl implements QuartzDataAccessApi {
private final Scheduler scheduler;
private final DataAccessApi dataAccessApi;
private final ScheduleJobService jobService;
- private final DataAccessFeign feign;
@Override
public Result releaseAccess(Long id) {
@@ -53,24 +51,48 @@ public class QuartzDataAccessApiImpl implements QuartzDataAccessApi {
return Result.ok();
}
+ /**
+ * 手动运行任务
+ * @param id 任务ID
+ * @return 运行结果
+ */
@Override
public Result handRun(Long id) {
+ // 构建任务实体
ScheduleJobEntity jobEntity = buildJobEntity(id);
+ // 设置任务为单例,且不保存日志
jobEntity.setOnce(true);
jobEntity.setSaveLog(false);
+ // 执行任务
ScheduleUtils.run(scheduler, jobEntity);
+ // 返回运行结果
return Result.ok();
}
+
+ /**
+ * 根据id构建调度任务实体
+ * @param id 调度任务id
+ * @return 调度任务实体
+ */
private ScheduleJobEntity buildJobEntity(Long id) {
DataAccessDto dataAccessDto = dataAccessApi.getById(id).getData();
- if (dataAccessDto.getIsDatax().equals("datax")){
- feign.execute(dataAccessDto);
- }
- return ScheduleJobEntity.builder().isDatax(dataAccessDto.getIsDatax()).typeId(id).projectId(dataAccessDto.getProjectId()).jobType(QuartzJobType.DATA_ACCESS.getValue()).jobName(String.format("[%s]%s", id.toString(), dataAccessDto.getTaskName())).concurrent(ScheduleConcurrentEnum.NO.getValue())
- .beanName("dataAccessTask").method("run").jobGroup(JobGroupEnum.DATA_ACCESS.getValue()).saveLog(true).cronExpression(dataAccessDto.getCron()).status(ScheduleStatusEnum.NORMAL.getValue())
- .params(String.valueOf(id)).once(TaskType.ONE_TIME_FULL_SYNC.getCode().equals(dataAccessDto.getTaskType())).build();
-
+ return ScheduleJobEntity.builder()
+ .typeId(id)
+ .projectId(dataAccessDto.getProjectId())
+ .jobType(QuartzJobType.DATA_ACCESS.getValue())
+ .jobName(String.format("[%s]%s", id.toString(), dataAccessDto.getTaskName()))
+ .concurrent(ScheduleConcurrentEnum.NO.getValue())
+ .beanName("dataAccessTask")
+ .method("run")
+ .jobGroup(JobGroupEnum.DATA_ACCESS.getValue())
+ .saveLog(true)
+ .cronExpression(dataAccessDto.getCron())
+ .status(ScheduleStatusEnum.NORMAL.getValue())
+ .params(String.valueOf(id))
+ .once(TaskType.ONE_TIME_FULL_SYNC.getCode().equals(dataAccessDto.getTaskType()))
+ .build();
}
+
}
diff --git a/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/utils/ScheduleUtils.java b/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/utils/ScheduleUtils.java
index 326d74c..f322aa2 100644
--- a/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/utils/ScheduleUtils.java
+++ b/srt-cloud-module/srt-cloud-quartz/src/main/java/net/srt/quartz/utils/ScheduleUtils.java
@@ -1,6 +1,5 @@
package net.srt.quartz.utils;
-import net.srt.datax.feign.DataAccessFeign;
import net.srt.framework.common.exception.ServerException;
import net.srt.quartz.entity.ScheduleJobEntity;
import net.srt.quartz.enums.ScheduleConcurrentEnum;
diff --git a/srt-cloud-module/srt-cloud-quartz/src/main/resources/bootstrap.yml b/srt-cloud-module/srt-cloud-quartz/src/main/resources/bootstrap.yml
index 7de59f1..4de246b 100644
--- a/srt-cloud-module/srt-cloud-quartz/src/main/resources/bootstrap.yml
+++ b/srt-cloud-module/srt-cloud-quartz/src/main/resources/bootstrap.yml
@@ -11,7 +11,7 @@ spring:
discovery:
server-addr: 101.34.77.101:8848
# 命名空间,默认:public
- namespace: 7e1e997d-5fa4-4f84-9f48-3e0adf830a37
+ namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name}
group: srt2.0
config:
diff --git a/srt-cloud-system/src/main/resources/bootstrap.yml b/srt-cloud-system/src/main/resources/bootstrap.yml
index aeb7ad8..112c84e 100644
--- a/srt-cloud-system/src/main/resources/bootstrap.yml
+++ b/srt-cloud-system/src/main/resources/bootstrap.yml
@@ -14,7 +14,7 @@ spring:
discovery:
server-addr: 101.34.77.101:8848
# 命名空间,默认:public
- namespace: 7e1e997d-5fa4-4f84-9f48-3e0adf830a37
+ namespace: 9de208a6-cb30-41ae-a880-78196c99c050
service: ${spring.application.name}
group: srt2.0
config:
diff --git a/srt-data-development/src/main/java/net/srt/DevelopmentApp.java b/srt-data-development/src/main/java/net/srt/DevelopmentApp.java
index cd75f8b..e3bd2cf 100644
--- a/srt-data-development/src/main/java/net/srt/DevelopmentApp.java
+++ b/srt-data-development/src/main/java/net/srt/DevelopmentApp.java
@@ -9,6 +9,7 @@ import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
+import org.springframework.cloud.openfeign.EnableFeignClients;
import java.util.List;
@@ -16,6 +17,7 @@ import static com.alibaba.druid.sql.SQLUtils.toSQLString;
@EnableDiscoveryClient
@SpringBootApplication
+@EnableFeignClients
@MapperScan("net.srt.Fink.mapper")
@MapperScan("net.srt.Hadoop.mapper")
@MapperScan("net.srt.disposition.mapper")
diff --git a/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java b/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java
new file mode 100644
index 0000000..33ced52
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/controller/DataCheckSqlController.java
@@ -0,0 +1,85 @@
+package net.srt.disposition.controller;
+
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.AllArgsConstructor;
+import net.srt.disposition.dto.DataCheckSqlDto;
+import net.srt.disposition.dto.DataSqlDto;
+import net.srt.disposition.entity.DataCentre;
+import net.srt.disposition.entity.DataCheckSqlEntity;
+import net.srt.disposition.entity.DevelopmentOperationalRecordsQuery;
+import net.srt.disposition.service.DataCenterService;
+import net.srt.disposition.service.DataCheckSqlService;
+import net.srt.disposition.vo.*;
+import net.srt.flink.common.result.SqlExplainResult;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+@RestController
+@AllArgsConstructor
+@RequestMapping("/task")
+public class DataCheckSqlController {
+
+ private DataCheckSqlService dataCheckSqlService;
+
+ private DataCenterService dataCenterService;
+
+ @PostMapping
+ public Result add(@RequestBody DataCheckSqlDto dataCheckSqlDto){
+ dataCheckSqlService.add(dataCheckSqlDto);
+ return Result.ok();
+ }
+
+ @GetMapping("/history/page")
+ public Result> historyPage(@RequestBody DevelopmentOperationalRecordsQuery query){
+ PageResult dataCentrePageResult= dataCenterService.dataCenterService(query);
+ return Result.ok(dataCentrePageResult);
+ }
+
+ @DeleteMapping("/history")
+ @Operation(summary = "运维中心删除")
+ public Result> deleted(@RequestBody List ids){
+ dataCenterService.deleted(ids);
+ return Result.ok();
+ }
+
+ @GetMapping("/env-list")
+ @Operation(summary = "运维中心删除")
+ public Result> envList(){
+ List developmentTaskSaveVos = dataCenterService.listEnvList();
+ return Result.ok(developmentTaskSaveVos);
+ }
+
+ @GetMapping("/console-log")
+ public Result consoleLog(){
+ return Result.ok(dataCheckSqlService.getLog());
+ }
+ @GetMapping("/clear-log")
+ public Result checkLog(){
+ dataCheckSqlService.clearLog();
+ return Result.ok();
+ }
+
+ @PostMapping("/explain-sql")
+ public Result> explainSql(@RequestBody DataSqlDto dataSqlDto){
+ List dataSqlVo=dataCheckSqlService.explainSql(dataSqlDto);
+ return Result.ok(dataSqlVo);
+ }
+
+ @PostMapping("/execute-sql")
+ public Result executeSql(@RequestBody DataSqlDto dataSqlDto){
+ DataCheckVo dataSqlVo=dataCheckSqlService.executeSql(dataSqlDto);
+ return Result.ok(dataSqlVo);
+ }
+
+
+
+ @GetMapping("/{id}")
+ public Result get(@PathVariable Integer id) {
+ DataCheckSqlEntity dataCheckSqlEntity = dataCheckSqlService.find(id);
+ return Result.ok(dataCheckSqlEntity);
+ }
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java b/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java
index 4d40d05..e8f226a 100644
--- a/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java
+++ b/srt-data-development/src/main/java/net/srt/disposition/controller/DataProductionTreeController.java
@@ -26,7 +26,7 @@ public class DataProductionTreeController {
}
@PostMapping
- public Result add(@RequestBody DataProductionTreeDto dataProductionTreeDto){
+ public Result add(@RequestBody DataProductionTreeDto dataProductionTreeDto){
dataProductionService.add(dataProductionTreeDto);
return Result.ok();
}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/convert/DataCentreConvert.java b/srt-data-development/src/main/java/net/srt/disposition/convert/DataCentreConvert.java
new file mode 100644
index 0000000..d54cebe
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/convert/DataCentreConvert.java
@@ -0,0 +1,18 @@
+package net.srt.disposition.convert;
+
+import net.srt.disposition.entity.DataCentre;
+import net.srt.disposition.vo.DevelopmentTaskSaveVo;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+@Mapper
+public interface DataCentreConvert {
+
+ DataCentreConvert INSTANCE = Mappers.getMapper(DataCentreConvert.class);
+
+ List convertList(List records);
+
+ List convert(List entities);
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/convert/DataCheckSqlConvert.java b/srt-data-development/src/main/java/net/srt/disposition/convert/DataCheckSqlConvert.java
new file mode 100644
index 0000000..ed427ec
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/convert/DataCheckSqlConvert.java
@@ -0,0 +1,13 @@
+package net.srt.disposition.convert;
+
+import net.srt.disposition.dto.DataCheckSqlDto;
+import net.srt.disposition.entity.DataCheckSqlEntity;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+@Mapper
+public interface DataCheckSqlConvert {
+ DataCheckSqlConvert INSTANCE = Mappers.getMapper(DataCheckSqlConvert.class);
+
+ DataCheckSqlEntity convert(DataCheckSqlDto dataCheckSqlDto);
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java
new file mode 100644
index 0000000..f3775cd
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataCheckSqlDto.java
@@ -0,0 +1,24 @@
+package net.srt.disposition.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import net.srt.disposition.entity.DataDatabaseDevEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class DataCheckSqlDto {
+ private String alias;
+ private Long catalogueId;
+ private Long databaseId;
+ private List databaseList;
+ private Integer dialect;
+ private Long id;
+ private String name;
+ private Integer openTrans;
+ private Integer pvdataNum;
+ private Integer sqlDbType;
+ private String statement;
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlDto.java
new file mode 100644
index 0000000..08e1ac8
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlDto.java
@@ -0,0 +1,59 @@
+package net.srt.disposition.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import net.srt.disposition.entity.DataDatabaseDevEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+import java.util.List;
+
+@Data
+public class DataSqlDto {
+ private Long alertGroupId;
+ private String alias;
+ private String batchModel;
+ private String checkPoint;
+ private Long clusterConfigurationId;
+ private Long clusterId;
+ private String configJson;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date creatTime;
+ private String creator;
+ private Long databaseId;
+ private List databaseList;
+ private String deleted;
+ private Integer dialect;
+ private String enabled;
+ private Long envId;
+ private String fragment;
+ private Long id;
+ private Long jarId;
+ private Long jobInstanceId;
+ private String jobName;
+ private Integer maxRowNum;
+ private String name;
+ private String note;
+ private Integer parallelism;
+ private boolean processEnd;
+ private Long projectId;
+ private Integer pvdataNum;
+ private String savePointPath;
+ private String savePointStrategy;
+ private Integer sqlDbType;
+ private String statement;
+ private String statementSet;
+ private String step;
+ private Integer taskId;
+ private String type;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date updateTime;
+ private String updater;
+ private String usrAutoCancel;
+ private String usrChangeLog;
+ private String userResult;
+ private String version;
+ private Long versionId;
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java
new file mode 100644
index 0000000..5eb25f4
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/dto/DataSqlSaveDto.java
@@ -0,0 +1,23 @@
+package net.srt.disposition.dto;
+
+import lombok.Data;
+import net.srt.disposition.entity.DataDatabaseDevEntity;
+
+import java.util.List;
+
+@Data
+public class DataSqlSaveDto {
+ private String alias;
+ private Integer catalogueId;
+ private Integer databaseId;
+ private List databaseList;
+ private Integer dialect;
+ private Integer id;
+ private String name;
+ private Integer openTrans;
+ private boolean processEnd;
+ private Integer pvdataNum;
+ private Integer sqlDbType;
+ private String statement;
+
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataCentre.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCentre.java
new file mode 100644
index 0000000..0742b52
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCentre.java
@@ -0,0 +1,58 @@
+package net.srt.disposition.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@TableName("data_centre")
+public class DataCentre {
+ private Long id;
+ private Long projectId;
+ private Integer sqlDbType;
+ private Long databaseId;
+ private Long clusterId;
+ private Long clusterConfigurationId;
+ private String session;
+ private Long jobId;
+ private String jobName;
+ private String jobManagerAddress;
+ private Integer status;
+ private Integer dialect;
+ private String type;
+ private String statement;
+ private String error;
+ private String result;
+ private String configJson;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date startTime;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date endTime;
+ private Long taskId;
+ private String executeType;
+ private Long scheduleId;
+ private Long scheduleRecordId;
+ private Long scheduleNodeRecordId;
+ private Integer version;
+ private Integer deleted;
+ private String creator;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date createTime;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date updateTime;@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date finishTime;
+ private String instanceStatus;
+ private String executeSql;
+ private String executeNo;
+ private String jib;
+ private Integer duration;
+
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java
new file mode 100644
index 0000000..0e309ae
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataCheckSqlEntity.java
@@ -0,0 +1,58 @@
+package net.srt.disposition.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@TableName("data_check_sql")
+public class DataCheckSqlEntity {
+ private Long id;
+ @TableId
+ private Long taskId;
+ private String name;
+ private Long projectId;
+ private String alias;
+ private Integer dialect;
+ private String type;
+ private Integer checkPoint;
+ private Integer savePointStrategy;
+ private String savePointPath;
+ private Integer parallelism;
+ private Boolean fragment;
+ private Boolean statementSet;
+ private Boolean batchModel;
+ private Long clusterId;
+ private Long clusterConfigurationId;
+ private Integer sqlDbType;
+ private Long databaseId;
+ private Integer openTrans;
+ private Long jarId;
+ private Long envId;
+ private Long alertGroupId;
+ private String configJson;
+ private String note;
+ private Integer step;
+ private Long jobInstanceId;
+ private Boolean useAutoCancel;
+ private Boolean useChangeLog;
+ private Boolean useResult;
+ private Integer pvdataNum;
+ private Boolean enabled;
+ private Long versionId;
+ private Integer version;
+ private Integer deleted;
+ private Long creator;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date createTime;
+ private Long updater;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date updateTime;
+ private String statement;
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java
new file mode 100644
index 0000000..c528f23
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DataDatabaseDevEntity.java
@@ -0,0 +1,42 @@
+package net.srt.disposition.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import net.srt.framework.mybatis.entity.BaseEntity;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+public class DataDatabaseDevEntity {
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date createTime;
+ private String creator;
+ private String databaseDocument;
+ private String databaseIndex;
+ private String databaseIp;
+ private String databaseKafka;
+ private String databaseName;
+ private String databasePort;
+ private Integer databaseType;
+ private Integer deleted;
+ private Long id;
+ private String isJdbc;
+ private String isRtApprove;
+ private String jdbcUrl;
+ private String name;
+ private String noReReason;
+ private String password;
+ private Integer projectId;
+ private Integer status;
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
+ private Date updateTime;
+ private String updater;
+ private String userName;
+ private Integer version;
+
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/entity/DevelopmentOperationalRecordsQuery.java b/srt-data-development/src/main/java/net/srt/disposition/entity/DevelopmentOperationalRecordsQuery.java
new file mode 100644
index 0000000..17d93e4
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/entity/DevelopmentOperationalRecordsQuery.java
@@ -0,0 +1,71 @@
+package net.srt.disposition.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import net.srt.framework.common.query.Query;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数据开发-运维中心查询")
+public class DevelopmentOperationalRecordsQuery extends Query {
+
+
+ @Schema(description = "调度节点记录唯一标识符")
+ private Long nodeRecordId;
+
+ @Schema(description = "记录标识符")
+ private Long recordId;
+
+ @Schema(description = "任务唯一标识符")
+ private Long taskId;
+
+ @Schema(description = "作业名称")
+ private String jobName;
+
+ @Schema(description = "执行状态")
+ private Integer status;
+
+ @Schema(description = "实例状态")
+ private String instanceStatus;
+
+ @Schema(description = "方言")
+ private Integer dialect;
+
+ @Schema(description = "类型")
+ private String type;
+
+ @Schema(description = "SQL数据库类型")
+ private String sqlDbType;
+
+ @Schema(description = "数据库唯一标识符")
+ private Long databaseId;
+
+ @Schema(description = "集群唯一标识符")
+ private Integer clusterId;
+
+ @Schema(description = "集群配置唯一标识符")
+ private Long clusterConfigurationId;
+
+ @Schema(description = "开始时间")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date startTime;
+
+ @Schema(description = "结束时间")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date endTime;
+
+ @Schema(description = "执行完成时间戳")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private Date finishTime;
+
+
+}
+
diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCentreMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCentreMapper.java
new file mode 100644
index 0000000..bfe1352
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCentreMapper.java
@@ -0,0 +1,7 @@
+package net.srt.disposition.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import net.srt.disposition.entity.DataCentre;
+
+public interface DataCentreMapper extends BaseMapper {
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java
new file mode 100644
index 0000000..d7b04e1
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataCheckSqlMapper.java
@@ -0,0 +1,9 @@
+package net.srt.disposition.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import net.srt.disposition.entity.DataCheckSqlEntity;
+import org.apache.ibatis.annotations.Mapper;
+
+@Mapper
+public interface DataCheckSqlMapper extends BaseMapper {
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java
index 15c512c..0b1c1b8 100644
--- a/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java
+++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DataProductionMapper.java
@@ -2,6 +2,8 @@ package net.srt.disposition.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.srt.disposition.entity.DataProductionTreeEntity;
+import org.apache.ibatis.annotations.Mapper;
+@Mapper
public interface DataProductionMapper extends BaseMapper {
}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java b/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java
index cc3cb28..d7cf138 100644
--- a/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java
+++ b/srt-data-development/src/main/java/net/srt/disposition/mapper/DispositionMapper.java
@@ -2,6 +2,8 @@ package net.srt.disposition.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import net.srt.disposition.entity.DispositionEntity;
+import org.apache.ibatis.annotations.Mapper;
+@Mapper
public interface DispositionMapper extends BaseMapper {
}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/DataCenterService.java b/srt-data-development/src/main/java/net/srt/disposition/service/DataCenterService.java
new file mode 100644
index 0000000..6983cf7
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/service/DataCenterService.java
@@ -0,0 +1,19 @@
+package net.srt.disposition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import net.srt.disposition.entity.DataCentre;
+import net.srt.disposition.entity.DevelopmentOperationalRecordsQuery;
+import net.srt.disposition.vo.DevelopmentTaskSaveVo;
+import net.srt.framework.common.page.PageResult;
+
+import java.util.List;
+
+public interface DataCenterService extends IService {
+ PageResult dataCenterService(DevelopmentOperationalRecordsQuery query);
+
+ void deleted(List ids);
+
+ List listEnvList();
+
+
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java b/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java
new file mode 100644
index 0000000..bda4f2e
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/service/DataCheckSqlService.java
@@ -0,0 +1,32 @@
+package net.srt.disposition.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import net.srt.disposition.dto.DataCheckSqlDto;
+import net.srt.disposition.dto.DataSqlDto;
+import net.srt.disposition.entity.DataCentre;
+import net.srt.disposition.entity.DataCheckSqlEntity;
+import net.srt.disposition.vo.DataCheckSqlVo;
+import net.srt.disposition.vo.DataCheckVo;
+import net.srt.disposition.vo.DataSqlVo;
+import net.srt.disposition.vo.LogVo;
+import net.srt.flink.common.result.SqlExplainResult;
+import net.srt.framework.common.page.PageResult;
+
+import java.util.List;
+
+public interface DataCheckSqlService extends IService {
+ DataCheckSqlEntity find(Integer id);
+
+ void add(DataCheckSqlDto dataCheckSqlDto);
+
+ List explainSql(DataSqlDto dataSqlDto);
+
+ DataCheckVo executeSql(DataSqlDto dataSqlDto);
+
+ LogVo getLog();
+
+ void clearLog();
+
+
+
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCenterServiceImpl.java b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCenterServiceImpl.java
new file mode 100644
index 0000000..225db47
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCenterServiceImpl.java
@@ -0,0 +1,68 @@
+package net.srt.disposition.service.impl;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import lombok.AllArgsConstructor;
+import net.srt.disposition.convert.DataCentreConvert;
+import net.srt.disposition.entity.DataCentre;
+import net.srt.disposition.entity.DevelopmentOperationalRecordsQuery;
+import net.srt.disposition.mapper.DataCentreMapper;
+import net.srt.disposition.service.DataCenterService;
+import net.srt.disposition.vo.DevelopmentTaskSaveVo;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+@AllArgsConstructor
+public class DataCenterServiceImpl extends BaseServiceImpl implements DataCenterService {
+
+ @Override
+ public PageResult dataCenterService(DevelopmentOperationalRecordsQuery query) {
+ IPage page=baseMapper.selectPage(getPage(query),getWrapper(query));
+
+ return new PageResult<>(DataCentreConvert.INSTANCE.convertList(page.getRecords()),page.getTotal());
+ }
+
+ @Override
+ public void deleted(List ids) {
+ removeByIds(ids);
+ for (Long id : ids) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(DataCentre::getId,id);
+ baseMapper.delete(wrapper);
+ }
+
+ }
+
+ @Override
+ public List listEnvList() {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ List entities = baseMapper.selectList(wrapper);
+ List developmentTaskSaveVos = DataCentreConvert.INSTANCE.convert(entities);
+ return developmentTaskSaveVos;
+ }
+
+ private LambdaQueryWrapper getWrapper(DevelopmentOperationalRecordsQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(query.getNodeRecordId()!=null,DataCentre::getScheduleNodeRecordId,query.getNodeRecordId());
+ wrapper.eq(query.getTaskId()!=null,DataCentre::getTaskId,query.getTaskId());
+ wrapper.like(StringUtils.isNotBlank(query.getJobName()),DataCentre::getJobName,query.getJobName());
+ wrapper.eq(query.getStatus()!=null,DataCentre::getStatus,query.getStatus());
+ wrapper.eq(query.getInstanceStatus()!=null,DataCentre::getInstanceStatus,query.getInstanceStatus());
+ wrapper.eq(query.getDialect()!=null,DataCentre::getDialect,query.getDialect());
+ wrapper.eq(StringUtils.isNotBlank(query.getSqlDbType()),DataCentre::getSqlDbType,query.getSqlDbType());
+ wrapper.eq(query.getDatabaseId()!=null,DataCentre::getDatabaseId,query.getDatabaseId());
+ wrapper.eq(query.getClusterId()!=null,DataCentre::getClusterId,query.getClusterId());
+ wrapper.eq(query.getClusterConfigurationId()!=null,DataCentre::getClusterConfigurationId,query.getClusterConfigurationId());
+ wrapper.gt(query.getStartTime()!=null,DataCentre::getStartTime,query.getStartTime());
+ wrapper.lt(query.getEndTime()!=null,DataCentre::getEndTime,query.getEndTime());
+ wrapper.eq(query.getFinishTime()!=null,DataCentre::getFinishTime,query.getFinishTime());
+
+ return wrapper;
+ }
+}
diff --git a/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java
new file mode 100644
index 0000000..5af9fb8
--- /dev/null
+++ b/srt-data-development/src/main/java/net/srt/disposition/service/impl/DataCheckSqlServiceImpl.java
@@ -0,0 +1,380 @@
+package net.srt.disposition.service.impl;
+
+import com.alibaba.druid.sql.SQLUtils;
+import com.alibaba.druid.sql.ast.SQLStatement;
+import lombok.AllArgsConstructor;
+import net.srt.disposition.convert.DataCheckSqlConvert;
+import net.srt.disposition.dto.DataCheckSqlDto;
+import net.srt.disposition.dto.DataSqlDto;
+import net.srt.disposition.entity.DataCentre;
+import net.srt.disposition.entity.DataCheckSqlEntity;
+import net.srt.disposition.entity.DataDatabaseDevEntity;
+import net.srt.disposition.entity.DataProductionTreeEntity;
+import net.srt.disposition.mapper.DataCentreMapper;
+import net.srt.disposition.mapper.DataCheckSqlMapper;
+import net.srt.disposition.mapper.DataProductionMapper;
+import net.srt.disposition.service.DataCheckSqlService;
+import net.srt.disposition.vo.DataCheckVo;
+import net.srt.disposition.vo.LogVo;
+import net.srt.disposition.vo.Result;
+import net.srt.flink.common.result.SqlExplainResult;
+import net.srt.flink.common.utils.LogUtil;
+import net.srt.flink.process.context.ProcessContextHolder;
+import net.srt.flink.process.model.ProcessEntity;
+import net.srt.flink.process.model.ProcessStatus;
+import net.srt.flink.process.model.ProcessStep;
+import net.srt.flink.process.model.ProcessType;
+import net.srt.flink.process.pool.ConsolePool;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.framework.security.cache.TokenStoreCache;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Service;
+import srt.cloud.framework.dbswitch.common.type.ProductTypeEnum;
+
+import javax.servlet.http.HttpServletRequest;
+import java.sql.*;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.Date;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+@Service
+@AllArgsConstructor
+public class DataCheckSqlServiceImpl extends BaseServiceImpl implements DataCheckSqlService {
+
+ private DataProductionMapper dataProductionMapper;
+ private TokenStoreCache storeCache;
+ private DataCentreMapper dataCentreMapper;
+ private HttpServletRequest request;
+ @Override
+ public DataCheckSqlEntity find(Integer id) {
+ DataCheckSqlEntity dataCheckSqlEntity = baseMapper.selectById(id);
+ return dataCheckSqlEntity;
+ }
+
+ @Override
+ public void add(DataCheckSqlDto dataCheckSqlDto) {
+ DataCheckSqlEntity convert = DataCheckSqlConvert.INSTANCE.convert(dataCheckSqlDto);
+ convert.setTaskId(dataCheckSqlDto.getCatalogueId());
+ DataProductionTreeEntity dataProductionTreeEntity = new DataProductionTreeEntity();
+ dataProductionTreeEntity.setId(dataCheckSqlDto.getCatalogueId());
+ dataProductionTreeEntity.setTaskId(dataCheckSqlDto.getCatalogueId());
+ dataProductionMapper.updateById(dataProductionTreeEntity);
+ baseMapper.insert(convert);
+ }
+
+ @Override
+ public List explainSql(DataSqlDto dataSqlDto) {
+ ProcessEntity process = BuildStes(dataSqlDto);
+ // 初始化一个列表,用于存储SQL解析结果
+ List sqlExplainResults = new ArrayList<>();
+ // 初始化一个变量,用于存储当前正在处理的SQL语句
+ String current = null;
+ // 记录SQL验证开始的日志
+ process.info("Start check sql...");
+
+ try {
+ // 使用SQLUtils将输入的SQL解析为SQL语句列表
+ List stmtList = SQLUtils.parseStatements(dataSqlDto.getStatement(), "SqlServer");
+
+ // 遍历列表中的每个SQL语句
+ for (SQLStatement item : stmtList) {
+ // 设置当前正在处理的SQL语句,以便记录日志
+ current = item.toString();
+
+ // 获取SQL语句的类型(例如,SELECT、INSERT)并添加到结果列表中
+ String type = item.getClass().getSimpleName();
+ SqlExplainResult success = SqlExplainResult.success(type, current, null);
+ sqlExplainResults.add(success);
+ }
+
+ // 记录SQL正确的日志消息
+ process.info("Sql is correct.");
+
+ } catch (Exception e) {
+ // 如果在SQL解析过程中发生异常,将失败的结果添加到列表中
+ SqlExplainResult fail = SqlExplainResult.fail(current, LogUtil.getError(e));
+ sqlExplainResults.add(fail);
+
+ String error = LogUtil.getError(e);
+ // 记录错误消息
+ process.error(error);
+ }
+
+ // 返回SQL解析结果列表
+ return sqlExplainResults;
+ }
+
+ @Override
+ public DataCheckVo executeSql(DataSqlDto dataSqlDto) {
+ DataCheckVo dataCheckVo=null;
+ try {
+ dataCheckVo = selectColumns(dataSqlDto);
+ dataCheckVo.setEndTime(new Date());
+
+ //构建运维数据
+ DataCentre operationalRecordsEntity= getDataCentre(dataCheckVo,dataSqlDto);
+
+ //添加到运维作业表中
+ dataCentreMapper.insert(operationalRecordsEntity);
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ return dataCheckVo;
+ }
+
+ private DataCentre getDataCentre(DataCheckVo exeCuteSql, DataSqlDto dto) {
+
+ DataCentre operationalRecords = new DataCentre();
+ //获取租户id\项目id
+ Long projectId = storeCache.getProjectId(getAccessToken1());
+
+ operationalRecords.setProjectId(projectId);
+ operationalRecords.setSqlDbType(dto.getSqlDbType());
+ operationalRecords.setDatabaseId(dto.getDatabaseId());
+ operationalRecords.setJobName(dto.getJobName());
+ operationalRecords.setStatement(dto.getStatement());
+ operationalRecords.setExecuteType(dto.getBatchModel());
+ Result result = exeCuteSql.getResult();
+ List results = result.getResults();
+ String Result= "";
+ for (Result resultsDTO : results) {
+ Result=resultsDTO.getRowData().toString();
+ }
+ operationalRecords.setResult(Result);
+ operationalRecords.setEndTime(new Date());
+ operationalRecords.setStartTime(new Date());
+ operationalRecords.setTaskId(dto.getId());
+ operationalRecords.setCreateTime(new Date());
+ operationalRecords.setExecuteNo(UUID.randomUUID().toString());
+ operationalRecords.setDuration(0);
+ return operationalRecords;
+ }
+
+ public String getAccessToken1() {
+ String accessToken = request.getHeader("Authorization");
+ if (StringUtils.isBlank(accessToken)) {
+ accessToken = request.getParameter("access_token");
+ }
+ return accessToken;
+ }
+
+ public DataCheckVo selectColumns(DataSqlDto dto) throws Exception{
+
+ //获取数据库信息
+ List databaseList = dto.getDatabaseList();
+ DataDatabaseDevEntity databaseVO = new DataDatabaseDevEntity();
+ for (DataDatabaseDevEntity dataDatabaseVO : databaseList) {
+ if(dto.getDatabaseId().equals(dataDatabaseVO.getId())){
+ databaseVO.setId(dataDatabaseVO.getId());
+ databaseVO.setDatabaseName(dataDatabaseVO.getDatabaseName());
+ databaseVO.setDatabaseIp(dataDatabaseVO.getDatabaseIp());
+ databaseVO.setDatabasePort(dataDatabaseVO.getDatabasePort());
+ databaseVO.setUserName(dataDatabaseVO.getUserName());
+ databaseVO.setPassword(dataDatabaseVO.getPassword());
+ databaseVO.setDatabaseType(dataDatabaseVO.getDatabaseType());
+ databaseVO.setJdbcUrl(dataDatabaseVO.getJdbcUrl());
+ databaseVO.setVersion(dataDatabaseVO.getVersion());
+ databaseVO.setCreateTime(dataDatabaseVO.getCreateTime());
+ databaseVO.setUpdateTime(dataDatabaseVO.getUpdateTime());
+ databaseVO.setDeleted(dataDatabaseVO.getDeleted());
+ databaseVO.setCreator(dataDatabaseVO.getCreator());
+ databaseVO.setUpdater(dataDatabaseVO.getUpdater());
+ }
+ }
+ //日志对象构建
+ ProcessEntity process= BuildStes(dto);
+
+ DataCheckVo exeCuteSql = new DataCheckVo();
+ List sqlExplainResults = new ArrayList<>();
+ String current = null;
+ try {
+ // 记录SQL验证开始的日志
+ process.info("Start execute sql...");
+
+ if(databaseVO.getDatabaseType().equals(ProductTypeEnum.MYSQL.getIndex())){
+ String className = ProductTypeEnum.MYSQL.getDriveClassName();
+
+ //1. 注册驱动
+ try {
+ Class.forName(className);
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ }
+ // 获取数据库连接
+ try (Connection conn = DriverManager.getConnection(databaseVO.getJdbcUrl(), databaseVO.getUserName(), databaseVO.getPassword())) {
+ // 获取表名
+ String dtoStatement = dto.getStatement();
+ String tableName = getTableName(dtoStatement);
+
+ // 获取数据库操作对象
+ try (Statement statement = conn.createStatement()) {
+ String sql = "SHOW COLUMNS FROM " + tableName;
+
+ // 获取列名并存储在一个列表中
+ List columnNames = new ArrayList<>();
+ try (ResultSet selectColumnNames = statement.executeQuery(sql)) {
+ while (selectColumnNames.next()) {
+ String columnName = selectColumnNames.getString("Field");
+ columnNames.add(columnName);
+ System.out.println("列名: " + columnName);
+ }
+ }
+ // 获取表中数据
+ try (ResultSet row = statement.executeQuery(dtoStatement)) {
+ // 创建集合用于存储查询结果
+ List