commit 89119f3c8bfcc41871253ef051dd2d5e2ce3ab52
Author: fjj <1066869486@qq.com>
Date: Fri Dec 8 11:44:35 2023 +0800
Changes
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..46e1f4b
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,25 @@
+# Compiled class file
+*.class
+
+# Log file
+logs/
+*.log
+
+# BlueJ files
+*.ctxt
+
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+
+# Package Files #
+.idea
+*.iml
+*.war
+*.nar
+*.ear
+*.tar.gz
+*.rar
+target/
+
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..24c10e4
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,9 @@
+SRT License
+
+Copyright (c) 2023 天津数睿通科技有限公司
+
+The data center of Shuruitong 2.0 can be used for learning and communication, and for secondary developers to use in projects, but cannot be modified. After transformation, profits can be made by selling source code
+The intellectual property rights of the software belong to Tianjin Shuruitong Technology Co., Ltd. Violators will be held legally responsible!
+
+数睿通 2.0 数据中台可用于学习交流、二开商用于项目之中,但不可经过修改,换化之后通过售卖源码谋利
+软件知识产权归天津数睿通科技有限公司所有,违者将追究其法律责任!
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..8fe7027
--- /dev/null
+++ b/README.md
@@ -0,0 +1,304 @@
+## 项目说明
+srt-cloud 是采用 Vue3,Ts,Spring Cloud Alibaba、SpringSecurity、Spring Cloud Gateway、SpringBoot、Nacos、Redis、Mybatis-Plus,Tidb,Flink,Hadoop 等最新技术,开发的全新数睿通数据中台,包含数据集成,数据开发,数据治理,数据资产,数据服务,数据集市六大模块,解决数据孤岛问题,实现数据统一口径标准,自定义数据开发任务,帮助企业,政府等解决数据问题!目前项目正在开发中,会尽快做出一版成型可用的产品。
+
+## 功能模块说明
+
+目前全局管理,应用管理,日志管理,系统管理,数据集成,数据开发,数据服务几大模块已基本完毕。
+
+- 数据集成
+
+ - 数据库管理 — 管理用户添加的数据源,支持 MYSQL/ORACLE/SQLSERVER/POSTGRESQL/GREENPLUM/MARIADB/DB2/DM/OSCAR/KINGBASE8/OSCAR/GBASE8A/HIVE/SQLITE3/SYBASE/DORIS,支持库表查询,测试连接等
+ - 文件管理 — 管理用户上传的文件数据
+ - 数据接入 — 接入外部数据源的数据到中台 **ODS** 层,也可自定义接入目的端数据源,支持一次性全量同步和周期性增量同步;可自定义表名,字段名的映射规则,支持正则表达式匹配;支持查看执行记录及详细执行结果,可查看同步的数据量,数据大小,成功表数量,失败表数量,成功信息,失败信息,也可查看具体每张表同步的数据量,数据大小,错误信息等,帮助用户全面掌握数据接入的执行情况
+ - 贴源数据 — 查看接入到ods层的数据表和数据,可查看每张表的同步记录
+- 数据开发
+ - 数据生产 — 对数据进行作业代码化编辑,自行 DDL 建模,运行,调试等
+ - 调度中心
+ - 调度管理 — 对生产作业进行流程编辑,可视化调度
+ - 调度记录 — 查看调度结果,日志等
+ - 运维中心 — 对作业执行运维管理
+ - 资源中心
+ - Flink 集群实例 — 管理 FLink 资源
+ - Hadoop 集群配置 — 管理 Hadoop 资源
+ - 配置中心 — 管理 FlinkSql 执行配置
+- 数据服务
+ - API 目录 — 用户自定义 API 目录,动态生成 API,对外提供服务
+ - API 权限 — 对私有 API 进行授权操作
+ - API 日志 — 查看 API 调用日志
+- 数据治理
+ - 元数据
+ - 元模型 — 描述元数据的元数据,主要定义了元数据的属性,通常元模型都是系统内置的,如表元模型,字段元模型等
+ - 元数据采集 — 根据定义的元模型对元数据进行采集,通常是每一种元模型有自己内置的采集逻辑,可以设置采集周期等
+ - 元数据管理 — 对采集的元数据进行查看和管理
+ - 数据血缘 — 通过数据接入,数据生产流程之间的关系自动构建数据血缘关系图,追溯数据流向(70%)
+ - 数据标准
+ - 数据质量
+- 数据资产(70%)
+ - 资源管理 — 自定义资源目录,在每个目录下自定义资源,挂在数据库,api等
+ - 资产总览 — 对中台资源做一个总的统计概览
+- 数据集市(50%)
+ - 资源目录 — 中台资源目录以及目录下资源的查看,可对资源进行申请操作
+ - API 目录 — 中台 API 目录以及目录下 API 的查看,可对 API 进行申请
+ - 我的申请 — 可以查看自己的申请记录,审批结果
+ - 服务审批 — 管理员对其他角色的申请做出审批,若审批通过,申请人便可以收到审批通过的消息,使用自己申请的服务资源
+- 全局管理
+ - 数据项目管理 — 中台项目(租户)的管理,每个项目下可以关联用户,用户只能查看自己关联的项目下的数据,选择自己的数据仓库,所有的模块数据都会有所属项目
+ - 数仓分层展示 — 对中台数仓的分成做展示说明
+- 应用管理
+ - 消息管理
+ - 短信平台 — 集成短信平台,支持阿里,腾讯等常用的短信平台
+ - 短信日志 — 调用短信所产生的日志
+- 日志管理
+
+ - 登录日志 — 系统登录产生的日志
+- 系统管理
+ - 用户管理 — 对系统用户进行管理
+ - 菜单管理 — 对系统菜单进行管理,用于实现动态菜单
+ - 定时任务 — 可自定义定时任务,调度执行
+ - 数据字典 — 系统的字典数据
+ - 机构管理 — 机构数据,若各模块中的数据有所属机构概念,可用于数据权限管理
+ - 岗位管理 — 岗位的管理
+ - 角色管理 — 角色管理,可以为每个角色自定义菜单查看权限以及机构级的数据权限
+ - 附件管理 — 系统附件管理,可以上传下载
+
+## 系统数仓架构
+
+系统数仓可以在全局项目管理中配置不同租户的数据仓库,在数据集成集成到ods层之后, 可以通过数据生产进行数据开发,数据整体流向图如下:
+
+###### 
+
+关于数仓为什么要分层:分层可以有助于数据的管理,同时每次取数只需要获取统计分析过的成品就可以,不需要从源头数据反复计算,避免了计算资源的浪费,通常源头数据量较大,并且中间的处理逻辑较为复杂,所以采用建模分层的方式解决,通常表的前缀都用层级来定义。
+
+## 系统核心技术栈
+
+前台:
+
+- vue3
+- vite
+- typeScript
+- element-plus
+- pinia
+- 。。。
+
+后台:
+
+- Spring Cloud Alibaba
+- SpringSecurity
+- Spring Cloud Gateway
+- SpringBoot
+- Nacos
+- Redis
+- Mybatis-Plus
+- mysql8.0
+- tidb
+- doris
+- flink
+- flink cdc
+- flink sql
+- neo4j
+- 。。。
+
+## 系统运行方式
+
+### 下载Nacos
+
+需要从GitHub下载Nacos,下载地址:https://github.com/alibaba/nacos/releases
+下载2.1.1版本,因为本项目使用的是Nacos 2.1.1,如果版本号对应不上,后面项目启动会出错。
+
+### nacos数据库
+
+注意:Nacos 目前只支持MySQL数据库,请安装MySQL8.0版本,以免出现其他错误。
+
+新建数据库nacos_config,并运行【conf/nacos-mysql.sql】文件,初始化数据库即可。
+
+### 修改Nacos的配置文件
+
+需要在【conf/application.properties】文件末尾,新增如下配置:
+
+```bash
+# 填自己的ip地址,本地填124.223.48.209就行
+nacos.inetutils.ip-address=124.223.48.209
+
+spring.datasource.platform=mysql
+db.num=1
+#填自己的数据库连接和密码
+db.url.0=jdbc:mysql://124.223.48.209:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
+db.user.0=root
+db.password.0=root
+```
+
+### 启动Nacos
+
+```bash
+Windows:
+startup.cmd -m standalone
+
+Linux:
+sh startup.sh -m standalone
+
+# 集群启动可关注公众号 螺旋编程极客 查看
+```
+
+访问Nacos管理界面(http://localhost:8848/nacos) ,初始用户名nacos,密码nacos,登录之后,如下所示:
+
+
+
+### 创建系统数据库
+
+创建 `srt_cloud` 数据库,数据库编码为`utf8mb4`
+执行`db/srt_cloud.sql`文件,初始化数据库脚本
+
+### 导入Nacos配置文件
+
+导入Nacos配置文件,配置文件在项目里,文件名为:【deploy/nacos_config.zip】,如下所示:
+
+
+
+导入配置文件后,还需要在Nacos里,修改datasource.yaml,如:Redis、MySQL信息等。
+
+### 下载安装 neo4j
+
+具体参考
+
+[neo4j安装](https://blog.csdn.net/weixin_44593504/article/details/119903908)
+
+安装 neo4j-community-3.5.3-unix.tar.gz 版本(相关安装包文件夹里有),否则可能不适配
+
+### 启动后端
+
+把系统导入 idea,注意部门 jdbc 驱动包 maven 官方仓库不存在,需要手动在本地 mvn install 一下,jar 包在网盘 jdbc 驱动包自取,导入项目后,右上角 profiles 勾选 flink1.14,多刷新几次,导入完 maven 依赖之后,依次启动:
+
+#### 启动 srt-cloud-gateway
+
+运行 GatewayApplication.java
+
+#### 启动 srt-cloud-system
+
+运行 SystemApplication.java
+
+#### 启动 srt-cloud-data-integrate
+
+运行 DataIntegrateApplication.java
+
+#### 启动 srt-cloud-data-development
+
+运行 DataDevelopmentApplication.java
+
+#### 启动 srt-cloud-data-service
+
+运行 DataServiceApplication.java
+
+#### 启动 srt-cloud-data-governance
+
+运行 DataGovernanceApplication.java
+
+#### 启动 srt-cloud-data-assets
+
+运行 DataAssetsApplication.java
+
+#### 启动 srt-cloud-quartz
+
+运行 QuartzApplication.java
+
+#### 启动 srt-cloud-message
+
+运行 MessageApplication.java
+
+### 启动前端
+
+安装版本号为`16.15.0`的`nodejs`,如果已经安装了,请先卸载,推荐使用 nvm 安装 node.js,方便切换不同版本
+
+1. 需要先把本地安装的`nodejs`卸载,然后再下载nvm,地址:
+ https://github.com/coreybutler/nvm-windows/releases
+2. 一般情况,找到最新版本,然后下载`nvm-setup.exe`文件就可以了,下载后,我们双击安装即可。
+3. 我们使用`PowerShell`打开命令行,这里需要注意下,要使用`管理员`身份打开`PowerShell`
+4. 命令`nvm version` ,可以查看版本号
+5. 命令`nvm ls available`查看`nodejs`可用的版本
+6. 命令`nvm install 16.15.0`,可以安装版本号为`16.15.0`的`nodejs`
+7. 命令`nvm list`,可以查看已安装的版本号
+8. 命令`nvm use 16.15.0`,可以切换到版本号为`16.15.0`的`nodejs`,现在就可以通过命令`node -v`查看当前的`nodejs`版本号
+9. 命令`nvm uninstall 16.15.0`,可以卸载版本号为`16.15.0`的`nodejs`
+
+用 vscode 或 hbuildx 打开 srt-cloud-web
+
+安装依赖:
+
+```bash
+npm install
+```
+
+运行项目:
+
+```bash
+npm run dev
+```
+
+打包项目
+
+```bash
+npm run build
+```
+
+## 系统运行展示
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## 帮助支持
+
+想要了解更多的朋友请关注公众号 **螺旋编程极客** 添加作者微信或在菜单栏加入知识星球,一起进步,一起成长。
diff --git a/README.pdf b/README.pdf
new file mode 100644
index 0000000..10e7f3b
Binary files /dev/null and b/README.pdf differ
diff --git a/assembly/assembly-linux.xml b/assembly/assembly-linux.xml
new file mode 100644
index 0000000..7b96a40
--- /dev/null
+++ b/assembly/assembly-linux.xml
@@ -0,0 +1,41 @@
+
+ linux
+ false
+
+ tar.gz
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/bin
+ ${project.artifactId}/bin
+ 0755
+
+ ${project.artifactId}
+ wrapper-linux*
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/lib
+ ${project.artifactId}/lib
+
+ *.jar
+ libwrapper-linux*
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/conf
+ ${project.artifactId}/conf
+
+ *
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/logs
+ ${project.artifactId}/logs
+
+ **/*
+
+
+
+
+
diff --git a/assembly/assembly-win.xml b/assembly/assembly-win.xml
new file mode 100644
index 0000000..bb2970b
--- /dev/null
+++ b/assembly/assembly-win.xml
@@ -0,0 +1,40 @@
+
+ win
+ false
+
+ tar.gz
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/bin
+ ${project.artifactId}/bin
+ 0755
+
+ ${project.artifactId}.bat
+ wrapper-windows*
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/lib
+ ${project.artifactId}/lib
+
+ *.jar
+ wrapper-windows*
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/conf
+ ${project.artifactId}/conf
+
+ *
+
+
+
+ target/generated-resources/appassembler/jsw/${project.artifactId}/logs
+ ${project.artifactId}/logs
+
+ **/*
+
+
+
+
diff --git a/deploy/nacos_config.zip b/deploy/nacos_config.zip
new file mode 100644
index 0000000..7c8e540
Binary files /dev/null and b/deploy/nacos_config.zip differ
diff --git a/images/login.png b/images/login.png
new file mode 100644
index 0000000..6fe03e7
Binary files /dev/null and b/images/login.png differ
diff --git a/images/nacos-config.png b/images/nacos-config.png
new file mode 100644
index 0000000..4090370
Binary files /dev/null and b/images/nacos-config.png differ
diff --git a/images/nacos.png b/images/nacos.png
new file mode 100644
index 0000000..451843b
Binary files /dev/null and b/images/nacos.png differ
diff --git a/images/修改数据库.png b/images/修改数据库.png
new file mode 100644
index 0000000..2b98ab5
Binary files /dev/null and b/images/修改数据库.png differ
diff --git a/images/元数据管理.png b/images/元数据管理.png
new file mode 100644
index 0000000..5d47792
Binary files /dev/null and b/images/元数据管理.png differ
diff --git a/images/元数据采集.png b/images/元数据采集.png
new file mode 100644
index 0000000..7942c9a
Binary files /dev/null and b/images/元数据采集.png differ
diff --git a/images/元数据采集记录.png b/images/元数据采集记录.png
new file mode 100644
index 0000000..e097cbf
Binary files /dev/null and b/images/元数据采集记录.png differ
diff --git a/images/元模型.png b/images/元模型.png
new file mode 100644
index 0000000..f15eed0
Binary files /dev/null and b/images/元模型.png differ
diff --git a/images/同步结果.png b/images/同步结果.png
new file mode 100644
index 0000000..a395bfc
Binary files /dev/null and b/images/同步结果.png differ
diff --git a/images/开放范围.png b/images/开放范围.png
new file mode 100644
index 0000000..449856e
Binary files /dev/null and b/images/开放范围.png differ
diff --git a/images/执行记录.png b/images/执行记录.png
new file mode 100644
index 0000000..ab01d4a
Binary files /dev/null and b/images/执行记录.png differ
diff --git a/images/挂载api.png b/images/挂载api.png
new file mode 100644
index 0000000..397c5d9
Binary files /dev/null and b/images/挂载api.png differ
diff --git a/images/挂载数据库表.png b/images/挂载数据库表.png
new file mode 100644
index 0000000..f2a0294
Binary files /dev/null and b/images/挂载数据库表.png differ
diff --git a/images/接入查看.png b/images/接入查看.png
new file mode 100644
index 0000000..cf078b8
Binary files /dev/null and b/images/接入查看.png differ
diff --git a/images/接入编辑.png b/images/接入编辑.png
new file mode 100644
index 0000000..5e5f0d0
Binary files /dev/null and b/images/接入编辑.png differ
diff --git a/images/数据库管理.png b/images/数据库管理.png
new file mode 100644
index 0000000..a84655d
Binary files /dev/null and b/images/数据库管理.png differ
diff --git a/images/数据库表.png b/images/数据库表.png
new file mode 100644
index 0000000..9324f2f
Binary files /dev/null and b/images/数据库表.png differ
diff --git a/images/数据接入.png b/images/数据接入.png
new file mode 100644
index 0000000..51d051d
Binary files /dev/null and b/images/数据接入.png differ
diff --git a/images/数据生产-flinksql校验.png b/images/数据生产-flinksql校验.png
new file mode 100644
index 0000000..ec25440
Binary files /dev/null and b/images/数据生产-flinksql校验.png differ
diff --git a/images/数据生产-mysql-cdc.png b/images/数据生产-mysql-cdc.png
new file mode 100644
index 0000000..060a720
Binary files /dev/null and b/images/数据生产-mysql-cdc.png differ
diff --git a/images/数据生产-sql.png b/images/数据生产-sql.png
new file mode 100644
index 0000000..1cd1d59
Binary files /dev/null and b/images/数据生产-sql.png differ
diff --git a/images/数据生产-执行.png b/images/数据生产-执行.png
new file mode 100644
index 0000000..44c2717
Binary files /dev/null and b/images/数据生产-执行.png differ
diff --git a/images/数据生产-调度.png b/images/数据生产-调度.png
new file mode 100644
index 0000000..34c3b81
Binary files /dev/null and b/images/数据生产-调度.png differ
diff --git a/images/数睿通数仓架构图.png b/images/数睿通数仓架构图.png
new file mode 100644
index 0000000..3209313
Binary files /dev/null and b/images/数睿通数仓架构图.png differ
diff --git a/images/查看库表.png b/images/查看库表.png
new file mode 100644
index 0000000..3087162
Binary files /dev/null and b/images/查看库表.png differ
diff --git a/images/资产目录.png b/images/资产目录.png
new file mode 100644
index 0000000..56791e0
Binary files /dev/null and b/images/资产目录.png differ
diff --git a/images/资产详情.png b/images/资产详情.png
new file mode 100644
index 0000000..9a413a9
Binary files /dev/null and b/images/资产详情.png differ
diff --git a/images/资源挂载.png b/images/资源挂载.png
new file mode 100644
index 0000000..4779666
Binary files /dev/null and b/images/资源挂载.png differ
diff --git a/images/资源查阅.png b/images/资源查阅.png
new file mode 100644
index 0000000..ef37e46
Binary files /dev/null and b/images/资源查阅.png differ
diff --git a/images/运维中心.png b/images/运维中心.png
new file mode 100644
index 0000000..644ed89
Binary files /dev/null and b/images/运维中心.png differ
diff --git a/images/采集日志.png b/images/采集日志.png
new file mode 100644
index 0000000..4b5ee50
Binary files /dev/null and b/images/采集日志.png differ
diff --git a/images/首页.png b/images/首页.png
new file mode 100644
index 0000000..acb3dc2
Binary files /dev/null and b/images/首页.png differ
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..f9bed64
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,238 @@
+
+ 4.0.0
+ net.srt
+ srt-cloud
+ 2.0.0
+ pom
+
+ srt-cloud
+ 新一代数睿通数据中台
+
+
+ org.springframework.boot
+ spring-boot-starter-parent
+ 2.6.11
+
+
+
+ srt-cloud-framework
+ srt-cloud-api
+ srt-cloud-module
+ srt-cloud-data-integrate
+ srt-cloud-system
+ srt-cloud-gateway
+
+
+
+ 2.0.0
+ true
+ UTF-8
+ UTF-8
+ 1.8
+ 2021.0.1
+ 2021.0.1.0
+ 3.5.1
+ 3.0.3
+ 1.6.8
+ 1.6.2
+ 1.4.2.Final
+ 2.1.1
+ 5.8.4
+ 3.8.0
+ 8.1.2.79
+ 2.0.18
+ 3.1.574
+ 7.11.0
+ 8.4.3
+ 5.6.89
+ 3.22.3
+ 6.2.2
+
+ 8.0.16
+ 42.2.18
+ 19.3.0.0
+ 6.0
+ 3.0
+ 3.0
+ 3.0
+ 5.1.4
+ 1.0.0
+ 8.6.0
+ 3.1.2
+ 0.4.0
+ 2.3
+ 1.21.0
+ 1.21.0
+ 4.3
+ 1.2.8
+
+
+
+
+ org.projectlombok
+ lombok
+ true
+
+
+ org.mapstruct
+ mapstruct
+
+
+ org.mapstruct
+ mapstruct-jdk8
+
+
+ org.mapstruct
+ mapstruct-processor
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring.cloud.version}
+ pom
+ import
+
+
+ com.alibaba.cloud
+ spring-cloud-alibaba-dependencies
+ ${spring.cloud.alibaba.version}
+ pom
+ import
+
+
+ com.alibaba
+ druid-spring-boot-starter
+ ${druid-starter-version}
+
+
+ com.baomidou
+ mybatis-plus-boot-starter
+ ${mybatisplus.version}
+
+
+ com.github.xiaoymin
+ knife4j-springdoc-ui
+ ${knife4j.version}
+
+
+ org.springdoc
+ springdoc-openapi-webmvc-core
+ ${springdoc.version}
+
+
+ org.springdoc
+ springdoc-openapi-ui
+ ${springdoc.version}
+
+
+ org.springdoc
+ springdoc-openapi-webflux-ui
+ ${springdoc.version}
+
+
+ com.github.whvcse
+ easy-captcha
+ ${captcha.version}
+
+
+ org.mapstruct
+ mapstruct
+ ${mapstruct.version}
+
+
+ org.mapstruct
+ mapstruct-jdk8
+ ${mapstruct.version}
+
+
+ org.mapstruct
+ mapstruct-processor
+ ${mapstruct.version}
+
+
+ com.alibaba.nacos
+ nacos-client
+ ${nacos.version}
+
+
+ cn.hutool
+ hutool-all
+ ${hutool.version}
+
+
+ com.aliyun.oss
+ aliyun-sdk-oss
+ ${aliyun.oss.version}
+
+
+ com.dameng
+ DmJdbcDriver18
+ ${dameng.version}
+
+
+ com.aliyun
+ dysmsapi20170525
+ ${aliyun.dysmsapi.version}
+
+
+ com.tencentcloudapi
+ tencentcloud-sdk-java
+ ${tencentcloud.sdk.version}
+
+
+ com.qiniu
+ qiniu-java-sdk
+ ${qiniu.version}
+
+
+ io.minio
+ minio
+ ${minio.version}
+
+
+ com.qcloud
+ cos_api
+ ${qcloud.cos.version}
+
+
+ com.huaweicloud
+ esdk-obs-java-bundle
+ ${huaweicloud.obs.version}
+
+
+
+
+
+
+
+ public
+ 阿里云公共仓库
+ https://maven.aliyun.com/repository/public/
+
+ true
+
+
+
+
+
+ public
+ 阿里云公共仓库
+ https://maven.aliyun.com/repository/public/
+
+ true
+
+
+ false
+
+
+
+
diff --git a/sql/srt_cloud2.0.sql b/sql/srt_cloud2.0.sql
new file mode 100644
index 0000000..d042f65
--- /dev/null
+++ b/sql/srt_cloud2.0.sql
@@ -0,0 +1,2027 @@
+/*
+Navicat MySQL Data Transfer
+
+Source Server : 124.223.48.209
+Source Server Version : 80033
+Source Host : 124.223.48.209:3310
+Source Database : srt_cloud2.0
+
+Target Server Type : MYSQL
+Target Server Version : 80033
+File Encoding : 65001
+
+Date: 2023-09-11 14:49:06
+*/
+
+SET FOREIGN_KEY_CHECKS=0;
+
+-- ----------------------------
+-- Table structure for data_access
+-- ----------------------------
+DROP TABLE IF EXISTS `data_access`;
+CREATE TABLE `data_access` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `task_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务名称',
+ `description` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `source_database_id` bigint NOT NULL COMMENT '源端数据库id',
+ `target_database_id` bigint DEFAULT NULL COMMENT '目的端数据库id(同步方式为1有此值)',
+ `access_mode` int NOT NULL COMMENT '接入方式 1-接入ods 2-自定义接入',
+ `task_type` int NOT NULL COMMENT '任务类型 1-实时同步 2-一次性全量同步 3-一次性全量周期性增量',
+ `cron` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'cron表达式(秒 分 时 日 月 星期 年,例如 0 0 3 * * ? 表示每天凌晨三点执行)',
+ `status` int NOT NULL DEFAULT '0' COMMENT '发布状态 0-未发布 1-已发布',
+ `run_status` int NOT NULL DEFAULT '1' COMMENT '最新状态 1-等待中 2-运行中 3-正常结束 4-异常结束',
+ `data_access_json` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '数据接入基础配置json',
+ `start_time` datetime DEFAULT NULL COMMENT '最近开始时间',
+ `end_time` datetime DEFAULT NULL COMMENT '最近结束时间',
+ `release_time` datetime DEFAULT NULL COMMENT '发布时间',
+ `note` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '备注',
+ `release_user_id` bigint DEFAULT NULL COMMENT '发布人id',
+ `next_run_time` datetime DEFAULT NULL COMMENT '下次执行时间',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=120014 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数据集成-数据接入';
+
+-- ----------------------------
+-- Records of data_access
+-- ----------------------------
+INSERT INTO `data_access` VALUES ('120008', '人口数据-》中台库', '人口测试数据-》中台库', '10002', '5', null, '1', '3', '0/30 * * * * ? *', '0', '4', '{\"source\":[{\"sourceProductType\":\"MYSQL\",\"url\":\"jdbc:mysql://124.223.48.209:3306/srt_cloud_test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true\",\"driverClassName\":\"com.mysql.jdbc.Driver\",\"username\":\"root\",\"password\":\"root\",\"connectionTimeout\":60000,\"maxLifeTime\":3600000,\"fetchSize\":10000,\"tableType\":null,\"sourceSchema\":\"srt_cloud_test\",\"includeOrExclude\":1,\"sourceIncludes\":\"people,people_cdc_test\",\"sourceExcludes\":\"\",\"regexTableMapper\":[],\"regexColumnMapper\":[]}],\"target\":{\"targetProductType\":\"MYSQL\",\"url\":\"jdbc:mysql://124.223.48.209:3306/srt_data_warehouse_p_10002?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true\",\"driverClassName\":\"com.mysql.jdbc.Driver\",\"username\":\"srt_data_warehouse_p_10002\",\"password\":\"BschnvGuVatChHQ7\",\"connectionTimeout\":60000,\"maxLifeTime\":3600000,\"targetSchema\":\"srt_data_warehouse_p_10002\",\"targetDrop\":false,\"syncExist\":true,\"onlyCreate\":false,\"indexCreate\":true,\"tablePrefix\":\"ods_\",\"lowercase\":true,\"uppercase\":false,\"createTableAutoIncrement\":true,\"writerEngineInsert\":true,\"changeDataSync\":true}}', '2023-07-23 11:19:21', '2023-07-23 11:19:22', null, null, null, '2023-07-23 11:19:30', '1', '0', '10000', '2023-01-21 11:51:07', '10000', '2023-07-23 11:19:13');
+INSERT INTO `data_access` VALUES ('120011', 'mysql->doris', 'mysql->doris', '10002', '5', '8', '2', '2', '', '0', '3', '{\"source\":[{\"sourceProductType\":\"MYSQL\",\"url\":\"jdbc:mysql://124.223.48.209:3306/srt_cloud_test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true\",\"driverClassName\":\"com.mysql.jdbc.Driver\",\"username\":\"root\",\"password\":\"root\",\"connectionTimeout\":60000,\"maxLifeTime\":3600000,\"fetchSize\":5000,\"tableType\":null,\"sourceSchema\":\"srt_cloud_test\",\"includeOrExclude\":1,\"sourceIncludes\":\"people,example_tbl,people_cdc_test\",\"sourceExcludes\":\"\",\"regexTableMapper\":[],\"regexColumnMapper\":[]}],\"target\":{\"targetProductType\":\"DORIS\",\"url\":\"jdbc:mysql://192.168.30.128:9030/test_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true\",\"driverClassName\":\"com.mysql.jdbc.Driver\",\"username\":\"root\",\"password\":\"123456\",\"connectionTimeout\":60000,\"maxLifeTime\":3600000,\"targetSchema\":\"test_db\",\"targetDrop\":false,\"syncExist\":true,\"onlyCreate\":false,\"indexCreate\":false,\"tablePrefix\":null,\"lowercase\":false,\"uppercase\":false,\"createTableAutoIncrement\":true,\"writerEngineInsert\":true,\"changeDataSync\":true}}', '2023-06-26 22:37:39', '2023-06-26 22:37:48', null, null, null, null, '0', '0', '10000', '2023-06-19 17:58:05', '10000', '2023-06-26 22:37:28');
+INSERT INTO `data_access` VALUES ('120013', 'doris->mysql', 'doris->mysql', '10002', '8', '5', '1', '2', '', '0', '1', '{\"source\":[{\"sourceProductType\":\"DORIS\",\"url\":\"jdbc:mysql://192.168.30.128:9030/test_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true\",\"driverClassName\":\"com.mysql.jdbc.Driver\",\"username\":\"root\",\"password\":\"123456\",\"connectionTimeout\":60000,\"maxLifeTime\":3600000,\"fetchSize\":50000,\"tableType\":null,\"sourceSchema\":\"test_db\",\"includeOrExclude\":1,\"sourceIncludes\":\"\",\"sourceExcludes\":\"\",\"regexTableMapper\":[],\"regexColumnMapper\":[]}],\"target\":{\"targetProductType\":\"MYSQL\",\"url\":\"jdbc:mysql://124.223.48.209:3306/srt_data_warehouse_p_10002?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true\",\"driverClassName\":\"com.mysql.jdbc.Driver\",\"username\":\"srt_data_warehouse_p_10002\",\"password\":\"BschnvGuVatChHQ7\",\"connectionTimeout\":60000,\"maxLifeTime\":3600000,\"targetSchema\":\"srt_data_warehouse_p_10002\",\"targetDrop\":false,\"syncExist\":true,\"onlyCreate\":false,\"indexCreate\":false,\"tablePrefix\":\"ods_\",\"lowercase\":true,\"uppercase\":false,\"createTableAutoIncrement\":true,\"writerEngineInsert\":true,\"changeDataSync\":true}}', '2023-06-23 10:20:57', '2023-06-23 10:21:03', null, null, null, null, '0', '0', '10000', '2023-06-20 21:34:00', '10000', '2023-06-26 22:33:04');
+
+-- ----------------------------
+-- Table structure for data_access_task
+-- ----------------------------
+DROP TABLE IF EXISTS `data_access_task`;
+CREATE TABLE `data_access_task` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `data_access_id` bigint NOT NULL COMMENT '数据接入任务id',
+ `run_status` int NOT NULL COMMENT '运行状态( 1-等待中 2-运行中 3-正常结束 4-异常结束)',
+ `start_time` datetime NOT NULL COMMENT '开始时间',
+ `end_time` datetime DEFAULT NULL COMMENT '结束时间',
+ `real_time_log` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '实时日志',
+ `error_info` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin COMMENT '错误信息',
+ `data_count` bigint DEFAULT '0' COMMENT '更新数据量',
+ `table_success_count` bigint DEFAULT '0' COMMENT '成功表数量',
+ `table_fail_count` bigint DEFAULT '0' COMMENT '失败表数量',
+ `byte_count` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT '0' COMMENT '更新大小',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `access_id_index` (`data_access_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='数据接入任务记录';
+
+-- ----------------------------
+-- Records of data_access_task
+-- ----------------------------
+INSERT INTO `data_access_task` VALUES ('1', '120011', '3', '2023-06-26 22:37:39', '2023-06-26 22:37:48', 0x323032332D30362D32362032323A33373A333920537461727420746F2072756E206461746120616363657373207461736B0D0A323032332D30362D32362032323A33373A34372053796E63207461626C65205B6578616D706C655F74626C5D2D3E5B6578616D706C655F74626C5D2073756363657373203D3D3E2073796E63436F756E743A5B315D2C73796E6342797465733A5B323442205D2C73796E634D73673A5BE5908CE6ADA5E68890E58A9F5D0D0A323032332D30362D32362032323A33373A34382053796E63207461626C65205B70656F706C655F6364635F746573745D2D3E5B70656F706C655F6364635F746573745D2073756363657373203D3D3E2073796E63436F756E743A5B345D2C73796E6342797465733A5B32353642205D2C73796E634D73673A5BE5908CE6ADA5E68890E58A9F5D0D0A323032332D30362D32362032323A33373A34382053796E63207461626C65205B70656F706C655D2D3E5B70656F706C655D2073756363657373203D3D3E2073796E63436F756E743A5B355D2C73796E6342797465733A5B33363042205D2C73796E634D73673A5BE5908CE6ADA5E68890E58A9F5D0D0A323032332D30362D32362032323A33373A3438204461746120616363657373207461736B20656E6420737563636565640D0A323032332D30362D32362032323A33373A3438204461746120636F756E743A5B31305D2C7461626C6553756363657373436F756E743A5B335D2C7461626C654661696C436F756E743A5B305D2C62797465436F756E743A5B36343042205D0D0A, null, '10', '3', '0', '640B ', '10002', '0', '0', null, '2023-06-26 22:37:40', null, '2023-06-26 22:37:49');
+INSERT INTO `data_access_task` VALUES ('2', '120008', '4', '2023-07-23 11:19:21', '2023-07-23 11:19:22', 0x323032332D30372D32332031313A31393A323120537461727420746F2072756E206461746120616363657373207461736B0D0A323032332D30372D32332031313A31393A32322053796E63207461626C65205B70656F706C655F6364635F746573745D2D3E5B6F64735F70656F706C655F6364635F746573745D2073756363657373203D3D3E2073796E63436F756E743A5B345D2C73796E6342797465733A5B32353642205D2C73796E634D73673A5BE5908CE6ADA5E68890E58A9F5D0D0A6A6176612E7574696C2E636F6E63757272656E742E457865637574696F6E457863657074696F6E3A206A6176612E6C616E672E4172726179496E6465784F75744F66426F756E6473457863657074696F6E0D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E7265706F727447657428436F6D706C657461626C654675747572652E6A6176613A333537290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E67657428436F6D706C657461626C654675747572652E6A6176613A31383935290D0A096174207372742E636C6F75642E6672616D65776F726B2E64627377697463682E646174612E736572766963652E4D6967726174696F6E536572766963652E72756E284D6967726174696F6E536572766963652E6A6176613A313839290D0A096174206E65742E7372742E71756172747A2E7461736B2E446174614163636573735461736B2E72756E28446174614163636573735461736B2E6A6176613A313037290D0A0961742073756E2E7265666C6563742E4E61746976654D6574686F644163636573736F72496D706C2E696E766F6B6530284E6174697665204D6574686F64290D0A0961742073756E2E7265666C6563742E4E61746976654D6574686F644163636573736F72496D706C2E696E766F6B65284E61746976654D6574686F644163636573736F72496D706C2E6A6176613A3632290D0A0961742073756E2E7265666C6563742E44656C65676174696E674D6574686F644163636573736F72496D706C2E696E766F6B652844656C65676174696E674D6574686F644163636573736F72496D706C2E6A6176613A3433290D0A096174206A6176612E6C616E672E7265666C6563742E4D6574686F642E696E766F6B65284D6574686F642E6A6176613A343938290D0A096174206E65742E7372742E71756172747A2E7574696C732E41627374726163745363686564756C654A6F622E646F457865637574652841627374726163745363686564756C654A6F622E6A6176613A3635290D0A096174206E65742E7372742E71756172747A2E7574696C732E41627374726163745363686564756C654A6F622E657865637574652841627374726163745363686564756C654A6F622E6A6176613A3435290D0A096174206F72672E71756172747A2E636F72652E4A6F6252756E5368656C6C2E72756E284A6F6252756E5368656C6C2E6A6176613A323032290D0A096174206F72672E71756172747A2E73696D706C2E53696D706C65546872656164506F6F6C24576F726B65725468726561642E72756E2853696D706C65546872656164506F6F6C2E6A6176613A353733290D0A4361757365642062793A206A6176612E6C616E672E4172726179496E6465784F75744F66426F756E6473457863657074696F6E0D0A096174206A6176612E6C616E672E53797374656D2E6172726179636F7079284E6174697665204D6574686F64290D0A096174206A6176612E6C616E672E537472696E672E676574436861727328537472696E672E6A6176613A383236290D0A096174206A6176612E6C616E672E4162737472616374537472696E674275696C6465722E617070656E64284162737472616374537472696E674275696C6465722E6A6176613A343439290D0A096174206A6176612E6C616E672E537472696E674275696C6465722E617070656E6428537472696E674275696C6465722E6A6176613A313336290D0A096174206E65742E7372742E71756172747A2E7461736B2E446174614163636573735461736B2E6C616D626461246275696C644D6967726174696F6E53657276696365243128446174614163636573735461736B2E6A6176613A333336290D0A096174207372742E636C6F75642E6672616D65776F726B2E64627377697463682E646174612E736572766963652E4D6967726174696F6E536572766963652E67657441636365707448616E646C6572284D6967726174696F6E536572766963652E6A6176613A323733290D0A096174207372742E636C6F75642E6672616D65776F726B2E64627377697463682E646174612E736572766963652E4D6967726174696F6E536572766963652E6C616D626461246D616B654675747572655461736B2431284D6967726174696F6E536572766963652E6A6176613A323431290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E756E6941636365707428436F6D706C657461626C654675747572652E6A6176613A363536290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C6546757475726524556E694163636570742E747279466972652424246361707475726528436F6D706C657461626C654675747572652E6A6176613A363332290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C6546757475726524556E694163636570742E7472794669726528436F6D706C657461626C654675747572652E6A617661290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E706F7374436F6D706C65746528436F6D706C657461626C654675747572652E6A6176613A343734290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C65467574757265244173796E63537570706C792E72756E2424246361707475726528436F6D706C657461626C654675747572652E6A6176613A31353935290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C65467574757265244173796E63537570706C792E72756E28436F6D706C657461626C654675747572652E6A617661290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C65467574757265244173796E63537570706C792E6578656328436F6D706C657461626C654675747572652E6A6176613A31353832290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E5461736B2E646F4578656328466F726B4A6F696E5461736B2E6A6176613A323839290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E506F6F6C24576F726B51756575652E72756E5461736B28466F726B4A6F696E506F6F6C2E6A6176613A31303536290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E506F6F6C2E72756E576F726B657228466F726B4A6F696E506F6F6C2E6A6176613A31363932290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E576F726B65725468726561642E72756E28466F726B4A6F696E576F726B65725468726561642E6A6176613A313537290D0A323032332D30372D32332031313A31393A3232204461746120616363657373207461736B20656E64206661696C65640D0A, 0x6A6176612E7574696C2E636F6E63757272656E742E457865637574696F6E457863657074696F6E3A206A6176612E6C616E672E4172726179496E6465784F75744F66426F756E6473457863657074696F6E0D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E7265706F727447657428436F6D706C657461626C654675747572652E6A6176613A333537290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E67657428436F6D706C657461626C654675747572652E6A6176613A31383935290D0A096174207372742E636C6F75642E6672616D65776F726B2E64627377697463682E646174612E736572766963652E4D6967726174696F6E536572766963652E72756E284D6967726174696F6E536572766963652E6A6176613A313839290D0A096174206E65742E7372742E71756172747A2E7461736B2E446174614163636573735461736B2E72756E28446174614163636573735461736B2E6A6176613A313037290D0A0961742073756E2E7265666C6563742E4E61746976654D6574686F644163636573736F72496D706C2E696E766F6B6530284E6174697665204D6574686F64290D0A0961742073756E2E7265666C6563742E4E61746976654D6574686F644163636573736F72496D706C2E696E766F6B65284E61746976654D6574686F644163636573736F72496D706C2E6A6176613A3632290D0A0961742073756E2E7265666C6563742E44656C65676174696E674D6574686F644163636573736F72496D706C2E696E766F6B652844656C65676174696E674D6574686F644163636573736F72496D706C2E6A6176613A3433290D0A096174206A6176612E6C616E672E7265666C6563742E4D6574686F642E696E766F6B65284D6574686F642E6A6176613A343938290D0A096174206E65742E7372742E71756172747A2E7574696C732E41627374726163745363686564756C654A6F622E646F457865637574652841627374726163745363686564756C654A6F622E6A6176613A3635290D0A096174206E65742E7372742E71756172747A2E7574696C732E41627374726163745363686564756C654A6F622E657865637574652841627374726163745363686564756C654A6F622E6A6176613A3435290D0A096174206F72672E71756172747A2E636F72652E4A6F6252756E5368656C6C2E72756E284A6F6252756E5368656C6C2E6A6176613A323032290D0A096174206F72672E71756172747A2E73696D706C2E53696D706C65546872656164506F6F6C24576F726B65725468726561642E72756E2853696D706C65546872656164506F6F6C2E6A6176613A353733290D0A4361757365642062793A206A6176612E6C616E672E4172726179496E6465784F75744F66426F756E6473457863657074696F6E0D0A096174206A6176612E6C616E672E53797374656D2E6172726179636F7079284E6174697665204D6574686F64290D0A096174206A6176612E6C616E672E537472696E672E676574436861727328537472696E672E6A6176613A383236290D0A096174206A6176612E6C616E672E4162737472616374537472696E674275696C6465722E617070656E64284162737472616374537472696E674275696C6465722E6A6176613A343439290D0A096174206A6176612E6C616E672E537472696E674275696C6465722E617070656E6428537472696E674275696C6465722E6A6176613A313336290D0A096174206E65742E7372742E71756172747A2E7461736B2E446174614163636573735461736B2E6C616D626461246275696C644D6967726174696F6E53657276696365243128446174614163636573735461736B2E6A6176613A333336290D0A096174207372742E636C6F75642E6672616D65776F726B2E64627377697463682E646174612E736572766963652E4D6967726174696F6E536572766963652E67657441636365707448616E646C6572284D6967726174696F6E536572766963652E6A6176613A323733290D0A096174207372742E636C6F75642E6672616D65776F726B2E64627377697463682E646174612E736572766963652E4D6967726174696F6E536572766963652E6C616D626461246D616B654675747572655461736B2431284D6967726174696F6E536572766963652E6A6176613A323431290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E756E6941636365707428436F6D706C657461626C654675747572652E6A6176613A363536290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C6546757475726524556E694163636570742E747279466972652424246361707475726528436F6D706C657461626C654675747572652E6A6176613A363332290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C6546757475726524556E694163636570742E7472794669726528436F6D706C657461626C654675747572652E6A617661290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C654675747572652E706F7374436F6D706C65746528436F6D706C657461626C654675747572652E6A6176613A343734290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C65467574757265244173796E63537570706C792E72756E2424246361707475726528436F6D706C657461626C654675747572652E6A6176613A31353935290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C65467574757265244173796E63537570706C792E72756E28436F6D706C657461626C654675747572652E6A617661290D0A096174206A6176612E7574696C2E636F6E63757272656E742E436F6D706C657461626C65467574757265244173796E63537570706C792E6578656328436F6D706C657461626C654675747572652E6A6176613A31353832290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E5461736B2E646F4578656328466F726B4A6F696E5461736B2E6A6176613A323839290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E506F6F6C24576F726B51756575652E72756E5461736B28466F726B4A6F696E506F6F6C2E6A6176613A31303536290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E506F6F6C2E72756E576F726B657228466F726B4A6F696E506F6F6C2E6A6176613A31363932290D0A096174206A6176612E7574696C2E636F6E63757272656E742E466F726B4A6F696E576F726B65725468726561642E72756E28466F726B4A6F696E576F726B65725468726561642E6A6176613A313537290D0A, '9', '2', '0', '616B ', '10002', '0', '0', null, '2023-07-23 11:19:22', null, '2023-07-23 11:19:23');
+
+-- ----------------------------
+-- Table structure for data_access_task_detail
+-- ----------------------------
+DROP TABLE IF EXISTS `data_access_task_detail`;
+CREATE TABLE `data_access_task_detail` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `data_access_id` bigint NOT NULL COMMENT '数据接入id',
+ `task_id` bigint NOT NULL COMMENT '数据接入任务id',
+ `source_schema_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '源端库名',
+ `source_table_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '源端表名',
+ `target_schema_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '目的端库名',
+ `target_table_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '目的端表名',
+ `sync_count` bigint NOT NULL COMMENT '同步记录数',
+ `sync_bytes` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '同步数据量',
+ `if_success` int NOT NULL COMMENT '是否成功 0-否 1-是',
+ `error_msg` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '失败信息',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `success_msg` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '成功信息',
+ `create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `target_table_name_idx` (`target_table_name`) USING BTREE,
+ KEY `access_id_idx` (`data_access_id`) USING BTREE,
+ KEY `task_id_idx` (`task_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数据接入-同步记录详情';
+
+-- ----------------------------
+-- Records of data_access_task_detail
+-- ----------------------------
+INSERT INTO `data_access_task_detail` VALUES ('1', '120011', '1', 'srt_cloud_test', 'example_tbl', 'test_db', 'example_tbl', '1', '24B ', '1', null, '10002', '同步成功', '2023-06-26 22:37:48');
+INSERT INTO `data_access_task_detail` VALUES ('2', '120011', '1', 'srt_cloud_test', 'people_cdc_test', 'test_db', 'people_cdc_test', '4', '256B ', '1', null, '10002', '同步成功', '2023-06-26 22:37:49');
+INSERT INTO `data_access_task_detail` VALUES ('3', '120011', '1', 'srt_cloud_test', 'people', 'test_db', 'people', '5', '360B ', '1', null, '10002', '同步成功', '2023-06-26 22:37:49');
+INSERT INTO `data_access_task_detail` VALUES ('4', '120008', '2', 'srt_cloud_test', 'people', 'srt_data_warehouse_p_10002', 'ods_people', '5', '360B ', '1', null, '10002', '同步成功', '2023-07-23 11:19:23');
+INSERT INTO `data_access_task_detail` VALUES ('5', '120008', '2', 'srt_cloud_test', 'people_cdc_test', 'srt_data_warehouse_p_10002', 'ods_people_cdc_test', '4', '256B ', '1', null, '10002', '同步成功', '2023-07-23 11:19:23');
+
+-- ----------------------------
+-- Table structure for data_database
+-- ----------------------------
+DROP TABLE IF EXISTS `data_database`;
+CREATE TABLE `data_database` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `database_type` int NOT NULL COMMENT '数据库类型(字典 database_type)',
+ `database_ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主机ip地址',
+ `database_port` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '端口',
+ `database_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '库名',
+ `status` int NOT NULL DEFAULT '0' COMMENT '状态(字典 database_status)',
+ `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户名',
+ `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密码',
+ `is_rt_approve` int DEFAULT NULL COMMENT '是否支持实时接入(字典 yes_or_no)',
+ `no_rt_reason` varchar(150) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '不支持实时接入原因',
+ `jdbc_url` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'jdbcUrl',
+ `project_id` bigint DEFAULT NULL COMMENT '所属项目id',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数据集成-数据库管理';
+
+-- ----------------------------
+-- Records of data_database
+-- ----------------------------
+INSERT INTO `data_database` VALUES ('5', '人口测试数据', '1', '124.223.48.209', '3306', 'srt_cloud_test', '1', 'root', 'root', null, null, 'jdbc:mysql://124.223.48.209:3306/srt_cloud_test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&allowPublicKeyRetrieval=true', '10002', '4', '0', '10000', '2023-01-20 13:43:12', '10000', '2023-02-11 21:46:07');
+INSERT INTO `data_database` VALUES ('8', 'doris测试', '16', '192.168.30.128', '9030', 'test_db', '1', 'root', '123456', null, null, 'jdbc:mysql://192.168.30.128:9030/test_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true', '10002', '1', '0', '10000', '2023-06-19 17:49:30', '10000', '2023-06-26 22:33:04');
+
+-- ----------------------------
+-- Table structure for data_file
+-- ----------------------------
+DROP TABLE IF EXISTS `data_file`;
+CREATE TABLE `data_file` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
+ `file_category_id` bigint NOT NULL COMMENT '所属分组id',
+ `type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '文件类型',
+ `file_url` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '文件url地址',
+ `description` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '描述',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `size` bigint DEFAULT NULL COMMENT '文件大小',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='文件表';
+
+-- ----------------------------
+-- Records of data_file
+-- ----------------------------
+INSERT INTO `data_file` VALUES ('1', '642fdd9f405aa93f862d70572d88ece.png', '5', 'png', 'http://localhost:8082/sys/upload/20230718/642fdd9f405aa93f862d70572d88ece_56737.png', '', '10002', '71957', '0', '0', '10000', '2023-07-18 15:45:52', '10000', '2023-07-18 15:45:52');
+
+-- ----------------------------
+-- Table structure for data_file_category
+-- ----------------------------
+DROP TABLE IF EXISTS `data_file_category`;
+CREATE TABLE `data_file_category` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `parent_id` bigint NOT NULL DEFAULT '0' COMMENT '父级id(顶级为0)',
+ `type` int NOT NULL DEFAULT '0' COMMENT '0-文件夹 1-文件目录',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '分组名称',
+ `order_no` int NOT NULL COMMENT '分组序号',
+ `description` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL COMMENT '描述',
+ `path` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL COMMENT '分组路径',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='文件分组表';
+
+-- ----------------------------
+-- Records of data_file_category
+-- ----------------------------
+INSERT INTO `data_file_category` VALUES ('2', '0', '0', '111', '0', '111', '111', '10002', '0', '0', '10000', '2023-07-11 11:16:44', '10000', '2023-07-11 11:16:44');
+INSERT INTO `data_file_category` VALUES ('3', '2', '1', '222', '0', '', '111/222', '10002', '0', '0', '10000', '2023-07-18 15:10:57', '10000', '2023-07-18 15:10:57');
+INSERT INTO `data_file_category` VALUES ('4', '2', '0', '测试目录', '0', '', '111/测试目录', '10002', '0', '0', '10000', '2023-07-18 15:41:21', '10000', '2023-07-18 15:41:21');
+INSERT INTO `data_file_category` VALUES ('5', '4', '1', '测试文件目录', '0', '顶顶顶', '111/测试目录/测试文件目录', '10002', '0', '0', '10000', '2023-07-18 15:42:47', '10000', '2023-07-18 15:42:56');
+
+-- ----------------------------
+-- Table structure for data_layer
+-- ----------------------------
+DROP TABLE IF EXISTS `data_layer`;
+CREATE TABLE `data_layer` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分层英文名称',
+ `cn_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '分层中文名称',
+ `note` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '分层描述',
+ `table_prefix` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '表名前缀',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=30008 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数仓分层';
+
+-- ----------------------------
+-- Records of data_layer
+-- ----------------------------
+INSERT INTO `data_layer` VALUES ('30002', 'ODS', '数据引入层', '用于接收并处理需要存储至数据仓库系统的原始数据,其数据表的结构与原始数据所在的数据系统中的表结构一致,是数据仓库的数据准备区', 'ods', '3', '0', '10000', '2022-10-08 17:16:35', '10000', '2022-10-08 17:16:41');
+INSERT INTO `data_layer` VALUES ('30003', 'DIM', '维度层', '使用维度构建数据模型', 'dim', '0', '0', '10000', '2022-10-08 17:17:40', '10000', '2022-10-08 17:17:42');
+INSERT INTO `data_layer` VALUES ('30004', 'DWD', '明细数据层', '通过企业的业务活动事件构建数据模型。基于具体业务事件的特点,构建最细粒度的明细数据事实表。', 'dwd', '0', '0', '10000', '2022-10-08 17:18:13', '10000', '2022-10-08 17:18:18');
+INSERT INTO `data_layer` VALUES ('30006', 'DWS', '汇总数据层', '通过分析的主题对象构建数据模型。基于上层的应用和产品的指标需求,构建公共粒度的汇总指标表。', 'dws', '0', '0', '10000', '2022-10-08 17:20:03', '10000', '2022-10-08 17:20:09');
+INSERT INTO `data_layer` VALUES ('30007', 'ADS', '应用数据层', '用于存放数据产品个性化的统计指标数据,输出各种报表', 'ads', '0', '0', '10000', '2022-10-08 17:20:52', '10000', '2022-10-08 17:20:57');
+
+-- ----------------------------
+-- Table structure for data_ods
+-- ----------------------------
+DROP TABLE IF EXISTS `data_ods`;
+CREATE TABLE `data_ods` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `data_access_id` bigint NOT NULL COMMENT '数据接入id',
+ `table_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '表名',
+ `remarks` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '注释',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `recently_sync_time` datetime DEFAULT NULL COMMENT '最近同步时间',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE KEY `table_name_uni` (`table_name`,`project_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='数据集成-贴源数据';
+
+-- ----------------------------
+-- Records of data_ods
+-- ----------------------------
+INSERT INTO `data_ods` VALUES ('1', '120008', 'ods_people', '人口信息表', '10002', '2023-07-23 11:19:22', '0', '0', null, '2023-04-07 16:39:00', null, '2023-07-23 11:19:23');
+INSERT INTO `data_ods` VALUES ('4', '120008', 'ods_people_cdc_test', '人口信息表', '10002', '2023-07-23 11:19:22', '0', '0', null, '2023-07-23 11:19:23', null, '2023-07-23 11:19:23');
+
+-- ----------------------------
+-- Table structure for data_project
+-- ----------------------------
+DROP TABLE IF EXISTS `data_project`;
+CREATE TABLE `data_project` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '项目名称',
+ `eng_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '英文名称',
+ `description` varchar(300) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '描述',
+ `status` int NOT NULL COMMENT '0-停用 1-启用',
+ `duty_person` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '负责人',
+ `db_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '数仓库名',
+ `db_url` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '数仓url',
+ `db_username` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '数仓用户名',
+ `db_password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '数仓密码',
+ `db_type` int NOT NULL DEFAULT '1' COMMENT '数仓类型 字典 data_house_type',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=10010 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='数据项目';
+
+-- ----------------------------
+-- Records of data_project
+-- ----------------------------
+INSERT INTO `data_project` VALUES ('10002', '默认项目', 'test_project', '测试', '1', 'admin', 'srt_data_warehouse_p_10002', 'jdbc:mysql://124.223.48.209:3306/srt_data_warehouse_p_10002?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true', 'srt_data_warehouse_p_10002', 'BschnvGuVatChHQ7', '1', '75', '0', '10000', '2022-09-27 20:59:19', '10000', '2023-06-13 16:49:33');
+INSERT INTO `data_project` VALUES ('10009', 'doris数仓测试', 'doris-test', '', '1', 'admin', 'test_db', 'jdbc:mysql://192.168.30.128:9030/test_db?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true', 'root', '123456', '16', '2', '0', '10000', '2023-06-23 10:27:15', '10000', '2023-06-26 22:43:15');
+
+-- ----------------------------
+-- Table structure for data_project_user_rel
+-- ----------------------------
+DROP TABLE IF EXISTS `data_project_user_rel`;
+CREATE TABLE `data_project_user_rel` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键id',
+ `data_project_id` bigint NOT NULL COMMENT '项目id',
+ `user_id` bigint NOT NULL COMMENT '用户id',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ UNIQUE KEY `project_admin_uni` (`data_project_id`,`user_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=DYNAMIC COMMENT='项目用户关联表';
+
+-- ----------------------------
+-- Records of data_project_user_rel
+-- ----------------------------
+INSERT INTO `data_project_user_rel` VALUES ('7', '10002', '10001', '0', '0', '10000', '2022-10-28 16:20:58', '10000', '2022-10-28 16:20:58');
+INSERT INTO `data_project_user_rel` VALUES ('8', '10002', '10002', '0', '0', '10000', '2022-10-28 16:20:58', '10000', '2022-10-28 16:20:58');
+
+-- ----------------------------
+-- Table structure for qrtz_blob_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_blob_triggers`;
+CREATE TABLE `qrtz_blob_triggers` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键',
+ `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键',
+ `blob_data` blob COMMENT '存放持久化Trigger对象',
+ PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
+ CONSTRAINT `qrtz_blob_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='Blob类型的触发器表';
+
+-- ----------------------------
+-- Records of qrtz_blob_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_calendars
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_calendars`;
+CREATE TABLE `qrtz_calendars` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `calendar_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '日历名称',
+ `calendar` blob NOT NULL COMMENT '存放持久化calendar对象',
+ PRIMARY KEY (`sched_name`,`calendar_name`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='日历信息表';
+
+-- ----------------------------
+-- Records of qrtz_calendars
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_cron_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_cron_triggers`;
+CREATE TABLE `qrtz_cron_triggers` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键',
+ `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键',
+ `cron_expression` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'cron表达式',
+ `time_zone_id` varchar(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '时区',
+ PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
+ CONSTRAINT `qrtz_cron_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='Cron类型的触发器表';
+
+-- ----------------------------
+-- Records of qrtz_cron_triggers
+-- ----------------------------
+INSERT INTO `qrtz_cron_triggers` VALUES ('SrtScheduler', 'TASK_NAME_1', 'data_access', '0/30 * * * * ? *', 'GMT+08:00');
+INSERT INTO `qrtz_cron_triggers` VALUES ('SrtScheduler', 'TASK_NAME_10', 'data_quality', '0/30 * * * * ? *', 'GMT+08:00');
+INSERT INTO `qrtz_cron_triggers` VALUES ('SrtScheduler', 'TASK_NAME_2', 'data_production', '0/30 * * * * ? *', 'GMT+08:00');
+INSERT INTO `qrtz_cron_triggers` VALUES ('SrtScheduler', 'TASK_NAME_4', 'data_governance', '0/30 * * * * ? *', 'GMT+08:00');
+INSERT INTO `qrtz_cron_triggers` VALUES ('SrtScheduler', 'TASK_NAME_8', 'data_access', '0/30 * * * * ?', 'GMT+08:00');
+
+-- ----------------------------
+-- Table structure for qrtz_fired_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_fired_triggers`;
+CREATE TABLE `qrtz_fired_triggers` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `entry_id` varchar(95) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度器实例id',
+ `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键',
+ `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键',
+ `instance_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度器实例名',
+ `fired_time` bigint NOT NULL COMMENT '触发的时间',
+ `sched_time` bigint NOT NULL COMMENT '定时器制定的时间',
+ `priority` int NOT NULL COMMENT '优先级',
+ `state` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '状态',
+ `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务名称',
+ `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '任务组名',
+ `is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '是否并发',
+ `requests_recovery` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '是否接受恢复执行',
+ PRIMARY KEY (`sched_name`,`entry_id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='已触发的触发器表';
+
+-- ----------------------------
+-- Records of qrtz_fired_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_job_details
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_job_details`;
+CREATE TABLE `qrtz_job_details` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务名称',
+ `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '任务组名',
+ `description` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '相关介绍',
+ `job_class_name` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '执行任务类名称',
+ `is_durable` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否持久化',
+ `is_nonconcurrent` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否并发',
+ `is_update_data` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否更新数据',
+ `requests_recovery` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '是否接受恢复执行',
+ `job_data` blob COMMENT '存放持久化job对象',
+ PRIMARY KEY (`sched_name`,`job_name`,`job_group`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='任务详细信息表';
+
+-- ----------------------------
+-- Records of qrtz_job_details
+-- ----------------------------
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_1', 'data_access', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074000E646174614163636573735461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007070740010302F3330202A202A202A202A203F202A71007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000174000B646174615F6163636573737400275B3132303030385DE4BABAE58FA3E6B58BE8AF95E695B0E68DAE2DE3808BE4B8ADE58FB0E5BA937371007E00100000000274000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C75657870007400063132303030387371007E001400000000000027127071007E00127371007E0014000000000001D4C87372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000187555334687870707800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_10', 'data_quality', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074000F646174615175616C6974795461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000188F1A05A707870740010302F3330202A202A202A202A203F202A71007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000A74000C646174615F7175616C6974797400125B335DE6B58BE8AF95E6898BE69CBAE58FB77371007E00100000000574000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787000740001337371007E001600000000000027127071007E00127371007E001600000000000000037371007E0013770800000188F1A1F0B078707371007E0010000000017800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_11', 'data_access', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074000E646174614163636573735461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000188F80B2138787074000071007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000B74000B646174615F6163636573737400155B3132303031325D6F7261636C652D3E646F7269737371007E00100000000274000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C75657870017400063132303031327371007E001600000000000027127071007E00127371007E0016000000000001D4CC7371007E0013770800000188F80B213878707371007E0010000000017800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_12', 'data_access', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074000E646174614163636573735461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000188F80B30D8787074000071007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000C74000B646174615F6163636573737400175B3132303031305D6F7261636C652DE3808B6D7973716C7371007E00100000000274000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C75657870017400063132303031307371007E001600000000000027127071007E00127371007E0016000000000001D4CA7371007E0013770800000188F80B30D878707371007E0010000000017800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_2', 'data_production', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074001A6461746150726F64756374696F6E5363686564756C655461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000185D2B187407870740010302F3330202A202A202A202A203F202A71007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000274000F646174615F70726F64756374696F6E74000F5B315DE6B58BE8AF95E8B083E5BAA67371007E00100000000374000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787000740001317371007E001600000000000027127071007E00127371007E001600000000000000017371007E0013770800000185D2B2D73078707371007E0010000000017800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_3', 'data_access', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074000E646174614163636573735461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000185D32B2410787074000071007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000374000B646174615F6163636573737400275B3132303030385DE4BABAE58FA3E6B58BE8AF95E695B0E68DAE2DE3808BE4B8ADE58FB0E5BA937371007E00100000000274000873796E6344617461737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C75657870017400063132303030387371007E001600000000000027127071007E00127371007E0016000000000001D4C87371007E0013770800000185D391D13878707371007E0010000000017800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_4', 'data_governance', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074002164617461476F7665726E616E63654D65746164617461436F6C6C6563745461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B59741903000078707708000001874FA9F0B07870740010302F3330202A202A202A202A203F202A71007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000474000F646174615F676F7665726E616E636574000F5B315DE6B58BE8AF95E98787E99B867371007E00100000000474000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787000740001317371007E001600000000000027127071007E00127371007E001600000000000000017371007E00137708000001875F2E526078707371007E0010000000037800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_5', 'data_governance', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074002164617461476F7665726E616E63654D65746164617461436F6C6C6563745461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B59741903000078707708000001874FC7486878707071007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000574000F646174615F676F7665726E616E636574000F5B315DE6B58BE8AF95E98787E99B867371007E00100000000474000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787001740001317371007E001500000000000027127071007E00127371007E001500000000000000017371007E001377080000018750619C3878707371007E0010000000057800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_6', 'data_governance', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074002164617461476F7665726E616E63654D65746164617461436F6C6C6563745461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000187515DE62878707071007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000674000F646174615F676F7665726E616E63657400185B365DE4B8ADE58FB0E5BA93E98787E99B86E6B58BE8AF957371007E00100000000474000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787001740001367371007E001500000000000027127071007E001271007E00167371007E0013770800000187544C920878707371007E0010000000027800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_7', 'data_governance', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074002164617461476F7665726E616E63654D65746164617461436F6C6C6563745461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B597419030000787077080000018751646E0878707071007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000774000F646174615F676F7665726E616E636574000F5B375D6F7261636C65E6B58BE8AF957371007E00100000000474000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787001740001377371007E001500000000000027127071007E001271007E00167371007E001377080000018751FC02B878707371007E0010000000087800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_8', 'data_access', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074000E646174614163636573735461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B59741903000078707708000001875560E068787074000E302F3330202A202A202A202A203F71007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000874000B646174615F61636365737374001A5B3132303030395D6F7261636C65E695B4E5BA93E5908CE6ADA57371007E00100000000274000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C75657870007400063132303030397371007E001600000000000027127071007E00127371007E0016000000000001D4C97371007E001377080000018755772B70787071007E001A7800);
+INSERT INTO `qrtz_job_details` VALUES ('SrtScheduler', 'TASK_NAME_9', 'data_quality', null, 'net.srt.quartz.utils.ScheduleDisallowConcurrentExecution', '0', '1', '0', '0', 0xACED0005737200156F72672E71756172747A2E4A6F62446174614D61709FB083E8BFA9B0CB020000787200266F72672E71756172747A2E7574696C732E537472696E674B65794469727479466C61674D61708208E8C3FBC55D280200015A0013616C6C6F77735472616E7369656E74446174617872001D6F72672E71756172747A2E7574696C732E4469727479466C61674D617013E62EAD28760ACE0200025A000564697274794C00036D617074000F4C6A6176612F7574696C2F4D61703B787001737200116A6176612E7574696C2E486173684D61700507DAC1C31660D103000246000A6C6F6164466163746F724900097468726573686F6C6478703F4000000000000C7708000000100000000174000D4A4F425F504152414D5F4B4559737200276E65742E7372742E71756172747A2E656E746974792E5363686564756C654A6F62456E7469747900000000000000010200155A0007736176654C6F674C00086265616E4E616D657400124C6A6176612F6C616E672F537472696E673B4C000A636F6E63757272656E747400134C6A6176612F6C616E672F496E74656765723B4C000A63726561746554696D657400104C6A6176612F7574696C2F446174653B4C000763726561746F727400104C6A6176612F6C616E672F4C6F6E673B4C000E63726F6E45787072657373696F6E71007E00094C000764656C6574656471007E000A4C0002696471007E000C4C00086A6F6247726F757071007E00094C00076A6F624E616D6571007E00094C00076A6F625479706571007E000A4C00066D6574686F6471007E00094C00046F6E63657400134C6A6176612F6C616E672F426F6F6C65616E3B4C0006706172616D7371007E00094C000970726F6A656374496471007E000C4C000672656D61726B71007E00094C000673746174757371007E000A4C000674797065496471007E000C4C000A75706461746554696D6571007E000B4C00077570646174657271007E000C4C000776657273696F6E71007E000A78700074000F646174615175616C6974795461736B737200116A6176612E6C616E672E496E746567657212E2A0A4F781873802000149000576616C7565787200106A6176612E6C616E672E4E756D62657286AC951D0B94E08B0200007870000000007372000E6A6176612E7574696C2E44617465686A81014B5974190300007870770800000188ED8C02E0787074000071007E00127372000E6A6176612E6C616E672E4C6F6E673B8BE490CC8F23DF0200014A000576616C75657871007E0011000000000000000974000C646174615F7175616C6974797400125B315DE6B58BE8AF95E594AFE4B880E680A77371007E00100000000574000372756E737200116A6176612E6C616E672E426F6F6C65616ECD207280D59CFAEE0200015A000576616C7565787001740001317371007E001600000000000027127071007E00127371007E001600000000000000017371007E0013770800000188ED8C9B3878707371007E0010000000027800);
+
+-- ----------------------------
+-- Table structure for qrtz_locks
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_locks`;
+CREATE TABLE `qrtz_locks` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `lock_name` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '悲观锁名称',
+ PRIMARY KEY (`sched_name`,`lock_name`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='存储的悲观锁信息表';
+
+-- ----------------------------
+-- Records of qrtz_locks
+-- ----------------------------
+INSERT INTO `qrtz_locks` VALUES ('SrtScheduler', 'STATE_ACCESS');
+INSERT INTO `qrtz_locks` VALUES ('SrtScheduler', 'TRIGGER_ACCESS');
+
+-- ----------------------------
+-- Table structure for qrtz_paused_trigger_grps
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_paused_trigger_grps`;
+CREATE TABLE `qrtz_paused_trigger_grps` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键',
+ PRIMARY KEY (`sched_name`,`trigger_group`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='暂停的触发器表';
+
+-- ----------------------------
+-- Records of qrtz_paused_trigger_grps
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_scheduler_state
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_scheduler_state`;
+CREATE TABLE `qrtz_scheduler_state` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `instance_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '实例名称',
+ `last_checkin_time` bigint NOT NULL COMMENT '上次检查时间',
+ `checkin_interval` bigint NOT NULL COMMENT '检查间隔时间',
+ PRIMARY KEY (`sched_name`,`instance_name`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='调度器状态表';
+
+-- ----------------------------
+-- Records of qrtz_scheduler_state
+-- ----------------------------
+INSERT INTO `qrtz_scheduler_state` VALUES ('SrtScheduler', 'PC-20230301UOMX1689904842681', '1690086191090', '15000');
+
+-- ----------------------------
+-- Table structure for qrtz_simple_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_simple_triggers`;
+CREATE TABLE `qrtz_simple_triggers` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键',
+ `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键',
+ `repeat_count` bigint NOT NULL COMMENT '重复的次数统计',
+ `repeat_interval` bigint NOT NULL COMMENT '重复的间隔时间',
+ `times_triggered` bigint NOT NULL COMMENT '已经触发的次数',
+ PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
+ CONSTRAINT `qrtz_simple_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='简单触发器的信息表';
+
+-- ----------------------------
+-- Records of qrtz_simple_triggers
+-- ----------------------------
+INSERT INTO `qrtz_simple_triggers` VALUES ('SrtScheduler', 'TASK_NAME_11', 'data_access', '0', '0', '0');
+INSERT INTO `qrtz_simple_triggers` VALUES ('SrtScheduler', 'TASK_NAME_12', 'data_access', '0', '0', '0');
+INSERT INTO `qrtz_simple_triggers` VALUES ('SrtScheduler', 'TASK_NAME_3', 'data_access', '0', '0', '0');
+INSERT INTO `qrtz_simple_triggers` VALUES ('SrtScheduler', 'TASK_NAME_5', 'data_governance', '0', '0', '0');
+INSERT INTO `qrtz_simple_triggers` VALUES ('SrtScheduler', 'TASK_NAME_6', 'data_governance', '0', '0', '0');
+INSERT INTO `qrtz_simple_triggers` VALUES ('SrtScheduler', 'TASK_NAME_7', 'data_governance', '0', '0', '0');
+INSERT INTO `qrtz_simple_triggers` VALUES ('SrtScheduler', 'TASK_NAME_9', 'data_quality', '0', '0', '0');
+
+-- ----------------------------
+-- Table structure for qrtz_simprop_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_simprop_triggers`;
+CREATE TABLE `qrtz_simprop_triggers` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_name的外键',
+ `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_triggers表trigger_group的外键',
+ `str_prop_1` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'String类型的trigger的第一个参数',
+ `str_prop_2` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'String类型的trigger的第二个参数',
+ `str_prop_3` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'String类型的trigger的第三个参数',
+ `int_prop_1` int DEFAULT NULL COMMENT 'int类型的trigger的第一个参数',
+ `int_prop_2` int DEFAULT NULL COMMENT 'int类型的trigger的第二个参数',
+ `long_prop_1` bigint DEFAULT NULL COMMENT 'long类型的trigger的第一个参数',
+ `long_prop_2` bigint DEFAULT NULL COMMENT 'long类型的trigger的第二个参数',
+ `dec_prop_1` decimal(13,4) DEFAULT NULL COMMENT 'decimal类型的trigger的第一个参数',
+ `dec_prop_2` decimal(13,4) DEFAULT NULL COMMENT 'decimal类型的trigger的第二个参数',
+ `bool_prop_1` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Boolean类型的trigger的第一个参数',
+ `bool_prop_2` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'Boolean类型的trigger的第二个参数',
+ PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
+ CONSTRAINT `qrtz_simprop_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `trigger_name`, `trigger_group`) REFERENCES `qrtz_triggers` (`sched_name`, `trigger_name`, `trigger_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='同步机制的行锁表';
+
+-- ----------------------------
+-- Records of qrtz_simprop_triggers
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for qrtz_triggers
+-- ----------------------------
+DROP TABLE IF EXISTS `qrtz_triggers`;
+CREATE TABLE `qrtz_triggers` (
+ `sched_name` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调度名称',
+ `trigger_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '触发器的名字',
+ `trigger_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '触发器所属组的名字',
+ `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_job_details表job_name的外键',
+ `job_group` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT 'qrtz_job_details表job_group的外键',
+ `description` varchar(250) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '相关介绍',
+ `next_fire_time` bigint DEFAULT NULL COMMENT '上一次触发时间(毫秒)',
+ `prev_fire_time` bigint DEFAULT NULL COMMENT '下一次触发时间(默认为-1表示不触发)',
+ `priority` int DEFAULT NULL COMMENT '优先级',
+ `trigger_state` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '触发器状态',
+ `trigger_type` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '触发器的类型',
+ `start_time` bigint NOT NULL COMMENT '开始时间',
+ `end_time` bigint DEFAULT NULL COMMENT '结束时间',
+ `calendar_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '日程表名称',
+ `misfire_instr` smallint DEFAULT NULL COMMENT '补偿执行的策略',
+ `job_data` blob COMMENT '存放持久化job对象',
+ PRIMARY KEY (`sched_name`,`trigger_name`,`trigger_group`) USING BTREE,
+ KEY `sched_name` (`sched_name`,`job_name`,`job_group`) USING BTREE,
+ CONSTRAINT `qrtz_triggers_ibfk_1` FOREIGN KEY (`sched_name`, `job_name`, `job_group`) REFERENCES `qrtz_job_details` (`sched_name`, `job_name`, `job_group`) ON DELETE RESTRICT ON UPDATE RESTRICT
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='触发器详细信息表';
+
+-- ----------------------------
+-- Records of qrtz_triggers
+-- ----------------------------
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_1', 'data_access', 'TASK_NAME_1', 'data_access', null, '1689904860000', '-1', '5', 'PAUSED', 'CRON', '1689904854000', '0', null, '2', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_10', 'data_quality', 'TASK_NAME_10', 'data_quality', null, '1689904860000', '-1', '5', 'PAUSED', 'CRON', '1689904855000', '0', null, '2', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_11', 'data_access', 'TASK_NAME_11', 'data_access', null, '1689904855176', '-1', '5', 'PAUSED', 'SIMPLE', '1689904855176', '0', null, '0', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_12', 'data_access', 'TASK_NAME_12', 'data_access', null, '1689904855196', '-1', '5', 'PAUSED', 'SIMPLE', '1689904855196', '0', null, '0', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_2', 'data_production', 'TASK_NAME_2', 'data_production', null, '1689904860000', '-1', '5', 'PAUSED', 'CRON', '1689904854000', '0', null, '2', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_3', 'data_access', 'TASK_NAME_3', 'data_access', null, '1689904854985', '-1', '5', 'PAUSED', 'SIMPLE', '1689904854985', '0', null, '0', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_4', 'data_governance', 'TASK_NAME_4', 'data_governance', null, '1689904860000', '-1', '5', 'PAUSED', 'CRON', '1689904855000', '0', null, '2', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_5', 'data_governance', 'TASK_NAME_5', 'data_governance', null, '1689904855045', '-1', '5', 'PAUSED', 'SIMPLE', '1689904855045', '0', null, '0', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_6', 'data_governance', 'TASK_NAME_6', 'data_governance', null, '1689904855066', '-1', '5', 'PAUSED', 'SIMPLE', '1689904855066', '0', null, '0', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_7', 'data_governance', 'TASK_NAME_7', 'data_governance', null, '1689904855087', '-1', '5', 'PAUSED', 'SIMPLE', '1689904855087', '0', null, '0', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_8', 'data_access', 'TASK_NAME_8', 'data_access', null, '1689904860000', '-1', '5', 'PAUSED', 'CRON', '1689904855000', '0', null, '2', '');
+INSERT INTO `qrtz_triggers` VALUES ('SrtScheduler', 'TASK_NAME_9', 'data_quality', 'TASK_NAME_9', 'data_quality', null, '1689904855133', '-1', '5', 'PAUSED', 'SIMPLE', '1689904855133', '0', null, '0', '');
+
+-- ----------------------------
+-- Table structure for schedule_job
+-- ----------------------------
+DROP TABLE IF EXISTS `schedule_job`;
+CREATE TABLE `schedule_job` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `project_id` bigint NOT NULL COMMENT '项目(租户)id',
+ `type_id` bigint DEFAULT NULL COMMENT '类型id',
+ `job_type` int NOT NULL DEFAULT '1' COMMENT '任务类型 1-自定义 2-数据接入 3-数据生产',
+ `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '名称',
+ `job_group` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '分组',
+ `bean_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'spring bean名称',
+ `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '执行方法',
+ `params` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '参数',
+ `once` tinyint(1) NOT NULL DEFAULT '0' COMMENT '只一次',
+ `cron_expression` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'cron表达式',
+ `status` tinyint unsigned DEFAULT NULL COMMENT '状态 0:暂停 1:正常',
+ `concurrent` tinyint unsigned DEFAULT NULL COMMENT '是否并发 0:禁止 1:允许',
+ `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='定时任务';
+
+-- ----------------------------
+-- Records of schedule_job
+-- ----------------------------
+INSERT INTO `schedule_job` VALUES ('1', '10002', '120008', '2', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'run', '120008', '0', '0/30 * * * * ? *', '0', '0', null, null, '0', null, null, null, '2023-04-06 14:48:49');
+INSERT INTO `schedule_job` VALUES ('2', '10002', '1', '3', '[1]测试调度', 'data_production', 'dataProductionScheduleTask', 'run', '1', '0', '0/30 * * * * ? *', '0', '0', null, '1', '0', null, '2023-01-21 12:58:48', null, '2023-01-21 13:00:14');
+INSERT INTO `schedule_job` VALUES ('3', '10002', '120008', '2', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', '', '0', '0', null, '1', '0', null, '2023-01-21 15:11:38', null, '2023-01-21 17:03:47');
+INSERT INTO `schedule_job` VALUES ('4', '10002', '1', '4', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '0', '0/30 * * * * ? *', '0', '0', null, '3', '0', null, '2023-04-05 12:25:50', null, '2023-04-08 12:44:44');
+INSERT INTO `schedule_job` VALUES ('5', '10002', '1', '4', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '0', '0', null, '5', '0', null, '2023-04-05 12:57:53', null, '2023-04-05 15:46:27');
+INSERT INTO `schedule_job` VALUES ('6', '10002', '6', '4', '[6]中台库采集测试', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '6', '1', null, '0', '0', null, '2', '0', null, '2023-04-05 20:22:01', null, '2023-04-06 10:01:57');
+INSERT INTO `schedule_job` VALUES ('7', '10002', '7', '4', '[7]oracle测试', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '7', '1', null, '0', '0', null, '8', '0', null, '2023-04-05 20:29:09', null, '2023-04-05 23:14:43');
+INSERT INTO `schedule_job` VALUES ('8', '10002', '120009', '2', '[120009]oracle整库同步', 'data_access', 'dataAccessTask', 'run', '120009', '0', '0/30 * * * * ?', '0', '0', null, '2', '0', null, '2023-04-06 15:03:45', null, '2023-04-06 15:28:06');
+INSERT INTO `schedule_job` VALUES ('9', '10002', '1', '5', '[1]测试唯一性', 'data_quality', 'dataQualityTask', 'run', '1', '1', '', '0', '0', null, '2', '0', null, '2023-06-24 21:15:56', null, '2023-06-24 21:16:35');
+INSERT INTO `schedule_job` VALUES ('10', '10002', '3', '5', '[3]测试手机号', 'data_quality', 'dataQualityTask', 'run', '3', '0', '0/30 * * * * ? *', '0', '0', null, '1', '0', null, '2023-06-25 16:16:38', null, '2023-06-25 16:18:22');
+INSERT INTO `schedule_job` VALUES ('11', '10002', '120012', '2', '[120012]oracle->doris', 'data_access', 'dataAccessTask', 'run', '120012', '1', '', '0', '0', null, '1', '0', null, '2023-06-26 22:10:59', null, '2023-06-26 22:10:59');
+INSERT INTO `schedule_job` VALUES ('12', '10002', '120010', '2', '[120010]oracle-》mysql', 'data_access', 'dataAccessTask', 'run', '120010', '1', '', '0', '0', null, '1', '0', null, '2023-06-26 22:11:03', null, '2023-06-26 22:11:03');
+
+-- ----------------------------
+-- Table structure for schedule_job_log
+-- ----------------------------
+DROP TABLE IF EXISTS `schedule_job_log`;
+CREATE TABLE `schedule_job_log` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `project_id` bigint NOT NULL COMMENT '项目(租户)id',
+ `type_id` bigint DEFAULT NULL COMMENT '类型id',
+ `job_type` int NOT NULL COMMENT '任务类型 1-自定义 2-数据接入 3-数据生产调度',
+ `job_id` bigint NOT NULL COMMENT '任务id',
+ `job_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '任务名称',
+ `job_group` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '任务组名',
+ `bean_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'spring bean名称',
+ `method` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '执行方法',
+ `params` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '参数',
+ `status` tinyint unsigned NOT NULL COMMENT '任务状态 0:失败 1:成功',
+ `error` text CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci COMMENT '异常信息',
+ `times` bigint NOT NULL COMMENT '耗时(单位:毫秒)',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_job_id` (`job_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='定时任务日志';
+
+-- ----------------------------
+-- Records of schedule_job_log
+-- ----------------------------
+INSERT INTO `schedule_job_log` VALUES ('1', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '1806', '2023-01-20 14:10:32');
+INSERT INTO `schedule_job_log` VALUES ('2', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '354', '2023-01-20 14:11:00');
+INSERT INTO `schedule_job_log` VALUES ('3', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '1397', '2023-01-20 14:11:31');
+INSERT INTO `schedule_job_log` VALUES ('4', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '1949', '2023-01-20 16:06:18');
+INSERT INTO `schedule_job_log` VALUES ('5', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '553', '2023-01-20 16:10:42');
+INSERT INTO `schedule_job_log` VALUES ('6', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '513', '2023-01-20 16:11:01');
+INSERT INTO `schedule_job_log` VALUES ('7', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '571', '2023-01-20 16:11:41');
+INSERT INTO `schedule_job_log` VALUES ('8', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '794', '2023-01-20 16:35:34');
+INSERT INTO `schedule_job_log` VALUES ('9', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '658', '2023-01-20 16:36:44');
+INSERT INTO `schedule_job_log` VALUES ('10', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '2172', '2023-01-21 12:26:40');
+INSERT INTO `schedule_job_log` VALUES ('11', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '1371', '2023-01-21 12:28:02');
+INSERT INTO `schedule_job_log` VALUES ('12', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '737', '2023-01-21 12:28:31');
+INSERT INTO `schedule_job_log` VALUES ('13', '10002', '1', '3', '2', '[1]测试调度', 'data_production', 'dataProductionScheduleTask', 'run', '1', '1', null, '15125', '2023-01-21 12:59:15');
+INSERT INTO `schedule_job_log` VALUES ('14', '10002', '1', '3', '2', '[1]测试调度', 'data_production', 'dataProductionScheduleTask', 'run', '1', '1', null, '5062', '2023-01-21 12:59:35');
+INSERT INTO `schedule_job_log` VALUES ('15', '10002', '1', '3', '2', '[1]测试调度', 'data_production', 'dataProductionScheduleTask', 'run', '1', '1', null, '5070', '2023-01-21 13:00:05');
+INSERT INTO `schedule_job_log` VALUES ('16', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '991', '2023-01-21 14:51:01');
+INSERT INTO `schedule_job_log` VALUES ('17', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '538', '2023-01-21 14:51:31');
+INSERT INTO `schedule_job_log` VALUES ('18', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '560', '2023-01-21 14:52:01');
+INSERT INTO `schedule_job_log` VALUES ('19', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '775', '2023-01-21 14:53:01');
+INSERT INTO `schedule_job_log` VALUES ('20', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '524', '2023-01-21 14:53:31');
+INSERT INTO `schedule_job_log` VALUES ('21', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '779', '2023-01-21 14:54:01');
+INSERT INTO `schedule_job_log` VALUES ('22', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '819', '2023-01-21 14:54:31');
+INSERT INTO `schedule_job_log` VALUES ('23', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '439', '2023-01-21 14:55:00');
+INSERT INTO `schedule_job_log` VALUES ('24', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '479', '2023-01-21 14:56:31');
+INSERT INTO `schedule_job_log` VALUES ('25', '10002', '120008', '2', '3', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '682', '2023-01-21 15:11:39');
+INSERT INTO `schedule_job_log` VALUES ('26', '10002', '120008', '2', '3', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '542', '2023-01-21 17:03:00');
+INSERT INTO `schedule_job_log` VALUES ('27', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '537', '2023-01-21 17:04:31');
+INSERT INTO `schedule_job_log` VALUES ('28', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '1721', '2023-01-22 20:47:02');
+INSERT INTO `schedule_job_log` VALUES ('29', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '1023', '2023-01-22 20:47:31');
+INSERT INTO `schedule_job_log` VALUES ('30', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'syncData', '120008', '1', null, '848', '2023-01-22 20:48:01');
+INSERT INTO `schedule_job_log` VALUES ('31', '10002', '1', '4', '5', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '4069', '2023-04-05 12:57:57');
+INSERT INTO `schedule_job_log` VALUES ('32', '10002', '1', '4', '5', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '4221', '2023-04-05 13:11:34');
+INSERT INTO `schedule_job_log` VALUES ('33', '10002', '1', '4', '5', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '3640', '2023-04-05 13:16:59');
+INSERT INTO `schedule_job_log` VALUES ('34', '10002', '1', '4', '5', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '3214', '2023-04-05 13:18:20');
+INSERT INTO `schedule_job_log` VALUES ('35', '10002', '1', '4', '5', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '4004', '2023-04-05 15:45:26');
+INSERT INTO `schedule_job_log` VALUES ('36', '10002', '6', '4', '6', '[6]中台库采集测试', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '6', '1', null, '2554', '2023-04-05 20:22:03');
+INSERT INTO `schedule_job_log` VALUES ('37', '10002', '7', '4', '7', '[7]oracle测试', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '7', '1', null, '4613576', '2023-04-05 21:46:02');
+INSERT INTO `schedule_job_log` VALUES ('38', '10002', '6', '4', '6', '[6]中台库采集测试', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '6', '1', null, '2357', '2023-04-06 10:01:48');
+INSERT INTO `schedule_job_log` VALUES ('39', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'run', '120008', '1', null, '668', '2023-04-06 14:48:01');
+INSERT INTO `schedule_job_log` VALUES ('40', '10002', '120008', '2', '1', '[120008]人口测试数据-》中台库', 'data_access', 'dataAccessTask', 'run', '120008', '1', null, '242', '2023-04-06 14:48:30');
+INSERT INTO `schedule_job_log` VALUES ('41', '10002', '120009', '2', '8', '[120009]oracle整库同步', 'data_access', 'dataAccessTask', 'run', '120009', '1', null, '756177', '2023-04-06 15:16:36');
+INSERT INTO `schedule_job_log` VALUES ('42', '10002', '1', '4', '4', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '4127', '2023-04-06 16:30:04');
+INSERT INTO `schedule_job_log` VALUES ('43', '10002', '1', '4', '4', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '3934', '2023-04-06 16:30:34');
+INSERT INTO `schedule_job_log` VALUES ('44', '10002', '1', '4', '4', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '4633', '2023-04-08 12:44:05');
+INSERT INTO `schedule_job_log` VALUES ('45', '10002', '1', '4', '4', '[1]测试采集', 'data_governance', 'dataGovernanceMetadataCollectTask', 'run', '1', '1', null, '4590', '2023-04-08 12:44:35');
+INSERT INTO `schedule_job_log` VALUES ('46', '10002', '1', '5', '9', '[1]测试唯一性', 'data_quality', 'dataQualityTask', 'run', '1', '1', null, '429', '2023-06-24 21:15:56');
+INSERT INTO `schedule_job_log` VALUES ('47', '10002', '1', '5', '9', '[1]测试唯一性', 'data_quality', 'dataQualityTask', 'run', '1', '1', null, '361', '2023-06-24 21:16:31');
+INSERT INTO `schedule_job_log` VALUES ('48', '10002', '3', '5', '10', '[3]测试手机号', 'data_quality', 'dataQualityTask', 'run', '3', '1', null, '174', '2023-06-25 16:17:00');
+INSERT INTO `schedule_job_log` VALUES ('49', '10002', '3', '5', '10', '[3]测试手机号', 'data_quality', 'dataQualityTask', 'run', '3', '1', null, '136', '2023-06-25 16:17:30');
+INSERT INTO `schedule_job_log` VALUES ('50', '10002', '3', '5', '10', '[3]测试手机号', 'data_quality', 'dataQualityTask', 'run', '3', '1', null, '159', '2023-06-25 16:18:00');
+INSERT INTO `schedule_job_log` VALUES ('51', '10002', '120010', '2', '12', '[120010]oracle-》mysql', 'data_access', 'dataAccessTask', 'run', '120010', '0', 'java.lang.reflect.InvocationTargetException\r\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)\r\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n at java.lang.reflect.Method.invoke(Method.java:498)\r\n at net.srt.quartz.utils.AbstractScheduleJob.doExecute(AbstractScheduleJob.java:65)\r\n at net.srt.quartz.utils.AbstractScheduleJob.execute(AbstractScheduleJob.java:45)\r\n at org.quartz.core.JobRunShell.run(JobRunShell.java:202)\r\n at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)\r\nCaused by: java.lang.NullPointerException\r\n at net.srt.quartz.task.DataAccessTask.run(DataAccessTask.java:82)\r\n ... 8 more\r\n', '406', '2023-07-21 10:02:02');
+
+-- ----------------------------
+-- Table structure for sms_log
+-- ----------------------------
+DROP TABLE IF EXISTS `sms_log`;
+CREATE TABLE `sms_log` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `platform_id` bigint DEFAULT NULL COMMENT '平台ID',
+ `platform` tinyint DEFAULT NULL COMMENT '平台类型',
+ `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '手机号',
+ `params` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '参数',
+ `status` tinyint DEFAULT NULL COMMENT '状态 0:失败 1:成功',
+ `error` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '异常信息',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='短信日志';
+
+-- ----------------------------
+-- Records of sms_log
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for sms_platform
+-- ----------------------------
+DROP TABLE IF EXISTS `sms_platform`;
+CREATE TABLE `sms_platform` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `platform` tinyint DEFAULT NULL COMMENT '平台类型 0:阿里云 1:腾讯云 2:七牛云 3:华为云',
+ `sign_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '短信签名',
+ `template_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '短信模板',
+ `app_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '短信应用ID,如:腾讯云等',
+ `sender_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '腾讯云国际短信、华为云等需要',
+ `url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '接入地址,如:华为云',
+ `access_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'AccessKey',
+ `secret_key` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'SecretKey',
+ `status` tinyint DEFAULT NULL COMMENT '状态 0:禁用 1:启用',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='短信平台';
+
+-- ----------------------------
+-- Records of sms_platform
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for sys_attachment
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_attachment`;
+CREATE TABLE `sys_attachment` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '附件名称',
+ `url` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '附件地址',
+ `size` bigint DEFAULT NULL COMMENT '附件大小',
+ `platform` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '存储平台',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='附件管理';
+
+-- ----------------------------
+-- Records of sys_attachment
+-- ----------------------------
+INSERT INTO `sys_attachment` VALUES ('1', '调度配置.png', 'http://localhost:8080/sys/upload/20221028/调度配置_59019.png', '68077', 'LOCAL', '0', '1', '10000', '2022-10-28 16:23:40', '10000', '2022-10-28 16:29:22');
+
+-- ----------------------------
+-- Table structure for sys_dict_data
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_dict_data`;
+CREATE TABLE `sys_dict_data` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `dict_type_id` bigint NOT NULL COMMENT '字典类型ID',
+ `dict_label` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '字典标签',
+ `dict_value` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '字典值',
+ `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=154 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='字典数据';
+
+-- ----------------------------
+-- Records of sys_dict_data
+-- ----------------------------
+INSERT INTO `sys_dict_data` VALUES ('1', '1', '停用', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('2', '1', '正常', '1', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('3', '2', '男', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('4', '2', '女', '1', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('5', '2', '未知', '2', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('6', '3', '正常', '1', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('7', '3', '停用', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('8', '4', '全部数据', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('9', '4', '本部门及子部门数据', '1', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('10', '4', '本部门数据', '2', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('11', '4', '本人数据', '3', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('12', '4', '自定义数据', '4', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('13', '5', '禁用', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('14', '5', '启用', '1', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('15', '6', '失败', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('16', '6', '成功', '1', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('17', '7', '登录成功', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('18', '7', '退出成功', '1', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('19', '7', '验证码错误', '2', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('20', '7', '账号密码错误', '3', '', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_data` VALUES ('21', '8', '阿里云', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_dict_data` VALUES ('22', '8', '腾讯云', '1', '', '1', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_dict_data` VALUES ('23', '8', '七牛云', '2', '', '2', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_dict_data` VALUES ('24', '8', '华为云', '3', '', '3', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_dict_data` VALUES ('25', '9', '默认', 'default', '', '0', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_dict_data` VALUES ('26', '9', '数据生产', 'data_production', '', '2', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2023-01-19 16:51:31');
+INSERT INTO `sys_dict_data` VALUES ('27', '10', '暂停', '0', '', '0', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_dict_data` VALUES ('28', '10', '正常', '1', '', '1', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_dict_data` VALUES ('29', '11', '停用', '0', '', '0', '0', '0', '10000', '2022-09-27 12:00:10', '10000', '2022-09-27 12:00:10');
+INSERT INTO `sys_dict_data` VALUES ('30', '11', '启用', '1', '', '0', '0', '0', '10000', '2022-09-27 12:00:17', '10000', '2022-09-27 12:00:17');
+INSERT INTO `sys_dict_data` VALUES ('31', '12', 'MYSQL', '1', '', '1', '0', '0', '10000', '2022-10-09 17:17:20', '10000', '2022-10-09 17:17:20');
+INSERT INTO `sys_dict_data` VALUES ('32', '12', 'ORACLE', '2', '', '2', '0', '0', '10000', '2022-10-09 17:17:30', '10000', '2022-10-09 17:17:30');
+INSERT INTO `sys_dict_data` VALUES ('33', '12', 'SQLSERVER2000', '3', '', '5', '0', '0', '10000', '2022-10-09 17:17:46', '10000', '2022-10-09 17:17:46');
+INSERT INTO `sys_dict_data` VALUES ('34', '12', 'SQLSERVER', '4', '', '4', '0', '0', '10000', '2022-10-09 17:17:55', '10000', '2022-10-09 17:17:55');
+INSERT INTO `sys_dict_data` VALUES ('35', '12', 'POSTGRESQL', '5', '', '3', '0', '0', '10000', '2022-10-09 17:18:06', '10000', '2022-10-09 17:18:06');
+INSERT INTO `sys_dict_data` VALUES ('36', '12', 'GREENPLUM', '6', '', '12', '0', '0', '10000', '2022-10-09 17:18:20', '10000', '2022-10-09 17:18:20');
+INSERT INTO `sys_dict_data` VALUES ('37', '12', 'MARIADB', '7', '', '7', '0', '0', '10000', '2022-10-09 17:18:31', '10000', '2022-10-09 17:18:31');
+INSERT INTO `sys_dict_data` VALUES ('38', '12', 'DB2', '8', '', '6', '0', '0', '10000', '2022-10-09 17:18:40', '10000', '2022-10-09 17:18:40');
+INSERT INTO `sys_dict_data` VALUES ('39', '12', 'DM', '9', '', '8', '0', '0', '10000', '2022-10-09 17:19:00', '10000', '2022-10-09 17:19:00');
+INSERT INTO `sys_dict_data` VALUES ('40', '12', 'KINGBASE', '10', '', '11', '0', '0', '10000', '2022-10-09 17:19:16', '10000', '2022-10-09 17:19:16');
+INSERT INTO `sys_dict_data` VALUES ('41', '12', 'OSCAR', '11', '', '15', '0', '0', '10000', '2022-10-09 17:19:25', '10000', '2022-10-09 17:19:25');
+INSERT INTO `sys_dict_data` VALUES ('42', '12', 'GBASE8A', '12', '', '13', '0', '0', '10000', '2022-10-09 17:19:37', '10000', '2022-10-09 17:19:37');
+INSERT INTO `sys_dict_data` VALUES ('43', '12', 'HIVE', '13', '', '9', '0', '0', '10000', '2022-10-09 17:19:57', '10000', '2022-10-09 17:19:57');
+INSERT INTO `sys_dict_data` VALUES ('44', '12', 'SQLITE3', '14', '', '10', '0', '0', '10000', '2022-10-09 17:20:09', '10000', '2022-10-09 17:20:09');
+INSERT INTO `sys_dict_data` VALUES ('45', '12', 'SYBASE', '15', '', '14', '0', '0', '10000', '2022-10-09 17:20:19', '10000', '2022-10-09 17:20:19');
+INSERT INTO `sys_dict_data` VALUES ('46', '11', '断开', '0', '', '0', '0', '1', '10000', '2022-10-09 17:23:42', '10000', '2022-10-09 17:23:52');
+INSERT INTO `sys_dict_data` VALUES ('47', '13', '断开', '0', '', '0', '0', '0', '10000', '2022-10-09 17:24:31', '10000', '2022-10-09 17:24:31');
+INSERT INTO `sys_dict_data` VALUES ('48', '13', '正常', '1', '', '0', '0', '0', '10000', '2022-10-09 17:24:37', '10000', '2022-10-09 17:24:37');
+INSERT INTO `sys_dict_data` VALUES ('49', '14', '否', '0', '', '0', '0', '0', '10000', '2022-10-09 17:25:13', '10000', '2022-10-09 17:25:13');
+INSERT INTO `sys_dict_data` VALUES ('50', '14', '是', '1', '', '0', '0', '0', '10000', '2022-10-09 17:25:18', '10000', '2022-10-09 17:25:18');
+INSERT INTO `sys_dict_data` VALUES ('51', '15', '实时同步', '1', '', '1', '0', '1', '10000', '2022-10-24 17:47:15', '10000', '2023-01-21 14:50:00');
+INSERT INTO `sys_dict_data` VALUES ('52', '15', '一次性全量同步', '2', '', '2', '0', '0', '10000', '2022-10-24 17:47:26', '10000', '2022-10-24 17:47:26');
+INSERT INTO `sys_dict_data` VALUES ('53', '15', '周期性增量(全量比对)', '3', '', '3', '0', '0', '10000', '2022-10-24 17:47:41', '10000', '2023-06-25 16:36:05');
+INSERT INTO `sys_dict_data` VALUES ('54', '16', '等待中', '1', '', '1', '0', '0', '10000', '2022-10-24 17:49:04', '10000', '2022-10-24 17:49:04');
+INSERT INTO `sys_dict_data` VALUES ('55', '16', '运行中', '2', '', '2', '0', '0', '10000', '2022-10-24 17:49:13', '10000', '2022-10-24 17:49:13');
+INSERT INTO `sys_dict_data` VALUES ('56', '16', '正常结束', '3', '', '3', '0', '0', '10000', '2022-10-24 17:49:23', '10000', '2022-10-24 17:49:23');
+INSERT INTO `sys_dict_data` VALUES ('57', '16', '异常结束', '4', '', '4', '0', '0', '10000', '2022-10-24 17:49:33', '10000', '2022-10-24 17:49:33');
+INSERT INTO `sys_dict_data` VALUES ('58', '17', '未发布', '0', '', '0', '0', '0', '10000', '2022-10-24 17:50:23', '10000', '2022-10-24 17:50:23');
+INSERT INTO `sys_dict_data` VALUES ('59', '17', '已发布', '1', '', '1', '0', '0', '10000', '2022-10-24 17:50:31', '10000', '2022-10-24 17:50:31');
+INSERT INTO `sys_dict_data` VALUES ('60', '18', 'Sql', '1', '', '1', '0', '0', '10000', '2022-11-26 20:29:36', '10000', '2023-01-10 17:09:02');
+INSERT INTO `sys_dict_data` VALUES ('61', '18', 'FlinkSql', '2', '', '2', '0', '0', '10000', '2022-11-26 20:29:49', '10000', '2023-01-10 17:09:08');
+INSERT INTO `sys_dict_data` VALUES ('62', '19', 'Standalone', '1', null, '1', '0', '0', '10000', '2022-12-03 10:41:18', '10000', '2022-12-03 10:41:23');
+INSERT INTO `sys_dict_data` VALUES ('63', '19', 'Yarn Session', '2', null, '2', '0', '0', '10000', '2022-12-03 10:41:55', '10000', '2022-12-03 10:42:00');
+INSERT INTO `sys_dict_data` VALUES ('64', '19', 'Yarn Per-Job', '3', null, '3', '0', '0', '10000', '2022-12-03 10:42:29', '10000', '2022-12-03 10:42:35');
+INSERT INTO `sys_dict_data` VALUES ('65', '19', 'Yarn Application', '4', null, '4', '0', '0', '10000', '2022-12-03 10:43:02', '10000', '2022-12-03 10:43:08');
+INSERT INTO `sys_dict_data` VALUES ('66', '19', 'K8s Session', '5', null, '5', '0', '1', '10000', '2022-12-03 10:43:41', '10000', '2023-01-03 21:37:16');
+INSERT INTO `sys_dict_data` VALUES ('67', '19', 'K8s Application', '6', null, '6', '0', '1', '10000', '2022-12-03 10:44:24', '10000', '2023-01-03 21:37:19');
+INSERT INTO `sys_dict_data` VALUES ('68', '19', 'Local', '0', '', '0', '0', '0', '10000', '2022-12-21 11:35:54', '10000', '2022-12-21 11:35:54');
+INSERT INTO `sys_dict_data` VALUES ('69', '20', 'Flink On Yarn', 'Yarn', '', '0', '0', '0', '10000', '2022-12-22 09:31:02', '10000', '2022-12-22 09:31:02');
+INSERT INTO `sys_dict_data` VALUES ('70', '21', 'INITIALIZE', '0', '', '0', '0', '0', '10000', '2023-01-03 20:47:20', '10000', '2023-01-03 20:47:20');
+INSERT INTO `sys_dict_data` VALUES ('71', '21', 'RUNNING', '1', '', '1', '0', '0', '10000', '2023-01-03 20:47:27', '10000', '2023-01-03 20:47:27');
+INSERT INTO `sys_dict_data` VALUES ('72', '21', 'SUCCESS', '2', '', '2', '0', '0', '10000', '2023-01-03 20:47:36', '10000', '2023-01-03 20:47:36');
+INSERT INTO `sys_dict_data` VALUES ('73', '21', 'FAILED', '3', '', '3', '0', '0', '10000', '2023-01-03 20:47:43', '10000', '2023-01-03 20:47:43');
+INSERT INTO `sys_dict_data` VALUES ('74', '22', 'INITIALIZING', 'INITIALIZING', '', '0', '0', '0', '10000', '2023-01-03 20:50:05', '10000', '2023-01-03 20:50:05');
+INSERT INTO `sys_dict_data` VALUES ('75', '22', 'CREATED', 'CREATED', '', '1', '0', '0', '10000', '2023-01-03 20:50:15', '10000', '2023-01-03 20:50:15');
+INSERT INTO `sys_dict_data` VALUES ('76', '22', 'RUNNING', 'RUNNING', '', '2', '0', '0', '10000', '2023-01-03 20:50:22', '10000', '2023-01-03 20:50:22');
+INSERT INTO `sys_dict_data` VALUES ('77', '22', 'FAILING', 'FAILING', '', '3', '0', '0', '10000', '2023-01-03 20:50:29', '10000', '2023-01-03 20:50:29');
+INSERT INTO `sys_dict_data` VALUES ('78', '22', 'FAILED', 'FAILED', '', '4', '0', '0', '10000', '2023-01-03 20:50:36', '10000', '2023-01-03 20:50:36');
+INSERT INTO `sys_dict_data` VALUES ('79', '22', 'CANCELLING', 'CANCELLING', '', '5', '0', '0', '10000', '2023-01-03 20:50:44', '10000', '2023-01-03 20:50:44');
+INSERT INTO `sys_dict_data` VALUES ('80', '22', 'CANCELED', 'CANCELED', '', '6', '0', '0', '10000', '2023-01-03 20:50:51', '10000', '2023-01-03 20:50:51');
+INSERT INTO `sys_dict_data` VALUES ('81', '22', 'FINISHED', 'FINISHED', '', '7', '0', '0', '10000', '2023-01-03 20:50:58', '10000', '2023-01-03 20:50:58');
+INSERT INTO `sys_dict_data` VALUES ('82', '22', 'RESTARTING', 'RESTARTING', '', '8', '0', '0', '10000', '2023-01-03 20:51:05', '10000', '2023-01-03 20:51:05');
+INSERT INTO `sys_dict_data` VALUES ('83', '22', 'SUSPENDED', 'SUSPENDED', '', '9', '0', '0', '10000', '2023-01-03 20:51:11', '10000', '2023-01-03 20:51:11');
+INSERT INTO `sys_dict_data` VALUES ('84', '22', 'RECONCILING', 'RECONCILING', '', '10', '0', '0', '10000', '2023-01-03 20:51:18', '10000', '2023-01-03 20:51:18');
+INSERT INTO `sys_dict_data` VALUES ('85', '22', 'UNKNOWN', 'UNKNOWN', '', '11', '0', '0', '10000', '2023-01-03 20:51:25', '10000', '2023-01-03 20:51:25');
+INSERT INTO `sys_dict_data` VALUES ('86', '23', '禁用', '0', '', '0', '0', '0', '10000', '2023-01-09 21:23:38', '10000', '2023-01-09 21:23:38');
+INSERT INTO `sys_dict_data` VALUES ('87', '23', '最近一次', '1', '', '1', '0', '0', '10000', '2023-01-09 21:23:49', '10000', '2023-01-09 21:23:53');
+INSERT INTO `sys_dict_data` VALUES ('88', '23', '最早一次', '2', '', '2', '0', '0', '10000', '2023-01-09 21:24:02', '10000', '2023-01-09 21:24:02');
+INSERT INTO `sys_dict_data` VALUES ('89', '23', '指定一次', '3', '', '3', '0', '0', '10000', '2023-01-09 21:24:12', '10000', '2023-01-09 21:24:17');
+INSERT INTO `sys_dict_data` VALUES ('90', '18', 'FlinkSqlCommon', '4', 'FlinkSql的公共代码块,例如一些初始化的ddl等', '4', '0', '0', '10000', '2023-01-10 17:07:45', '10000', '2023-01-10 17:09:12');
+INSERT INTO `sys_dict_data` VALUES ('91', '24', '手动', '1', '', '0', '0', '0', '10000', '2023-01-18 15:13:22', '10000', '2023-01-18 15:13:22');
+INSERT INTO `sys_dict_data` VALUES ('92', '24', '调度', '2', '', '1', '0', '0', '10000', '2023-01-18 15:13:30', '10000', '2023-01-18 15:13:30');
+INSERT INTO `sys_dict_data` VALUES ('93', '9', '数据接入', 'data_access', '', '1', '0', '0', '10000', '2023-01-19 16:51:55', '10000', '2023-01-19 16:51:55');
+INSERT INTO `sys_dict_data` VALUES ('94', '25', '文件夹', '1', '', '0', '0', '0', '10000', '2023-01-30 11:34:40', '10000', '2023-01-30 11:34:40');
+INSERT INTO `sys_dict_data` VALUES ('95', '25', 'API 目录', '2', '', '0', '0', '0', '10000', '2023-01-30 11:34:46', '10000', '2023-01-30 11:34:55');
+INSERT INTO `sys_dict_data` VALUES ('96', '26', 'GET', 'GET', '', '0', '0', '0', '10000', '2023-02-12 11:26:50', '10000', '2023-02-12 11:26:50');
+INSERT INTO `sys_dict_data` VALUES ('97', '26', 'POST', 'POST', '', '1', '0', '0', '10000', '2023-02-12 11:26:58', '10000', '2023-02-12 11:26:58');
+INSERT INTO `sys_dict_data` VALUES ('98', '26', 'PUT', 'PUT', '', '2', '0', '0', '10000', '2023-02-12 11:27:05', '10000', '2023-02-12 11:27:05');
+INSERT INTO `sys_dict_data` VALUES ('99', '26', 'DELETE', 'DELETE', '', '3', '0', '0', '10000', '2023-02-12 11:27:15', '10000', '2023-02-12 11:27:15');
+INSERT INTO `sys_dict_data` VALUES ('100', '27', 'application/json', 'application/json', '', '0', '0', '0', '10000', '2023-02-12 11:33:16', '10000', '2023-02-12 11:33:16');
+INSERT INTO `sys_dict_data` VALUES ('101', '28', '10分钟', '10min', '', '0', '0', '0', '10000', '2023-02-16 14:44:06', '10000', '2023-02-16 14:44:22');
+INSERT INTO `sys_dict_data` VALUES ('102', '28', '1小时', '1hour', '', '1', '0', '0', '10000', '2023-02-16 14:44:36', '10000', '2023-02-16 14:44:36');
+INSERT INTO `sys_dict_data` VALUES ('103', '28', '1天', '1day', '', '2', '0', '0', '10000', '2023-02-16 14:44:52', '10000', '2023-02-16 14:44:57');
+INSERT INTO `sys_dict_data` VALUES ('104', '28', '30天', '30day', '', '3', '0', '0', '10000', '2023-02-16 14:45:59', '10000', '2023-02-16 14:46:03');
+INSERT INTO `sys_dict_data` VALUES ('105', '28', '仅一次', 'once', '', '4', '0', '0', '10000', '2023-02-16 14:46:19', '10000', '2023-02-16 14:46:25');
+INSERT INTO `sys_dict_data` VALUES ('106', '28', '永不失效', 'forever', '', '5', '0', '0', '10000', '2023-02-16 14:46:40', '10000', '2023-02-16 14:46:40');
+INSERT INTO `sys_dict_data` VALUES ('107', '29', '数字', '1', '', '0', '0', '0', '10000', '2023-03-28 16:02:20', '10000', '2023-03-28 16:02:20');
+INSERT INTO `sys_dict_data` VALUES ('108', '29', '字符串', '2', '', '1', '0', '0', '10000', '2023-03-28 16:02:27', '10000', '2023-03-28 16:02:31');
+INSERT INTO `sys_dict_data` VALUES ('109', '30', '文本框', '1', '', '0', '0', '0', '10000', '2023-03-28 16:03:10', '10000', '2023-03-28 16:03:10');
+INSERT INTO `sys_dict_data` VALUES ('110', '31', '全量', '0', '', '0', '0', '0', '10000', '2023-04-01 09:53:29', '10000', '2023-04-01 09:53:29');
+INSERT INTO `sys_dict_data` VALUES ('111', '31', '增量', '1', '', '1', '0', '0', '10000', '2023-04-01 09:53:35', '10000', '2023-04-01 09:53:35');
+INSERT INTO `sys_dict_data` VALUES ('112', '32', '一次性', '1', '', '1', '0', '0', '10000', '2023-04-01 09:54:05', '10000', '2023-04-01 12:26:03');
+INSERT INTO `sys_dict_data` VALUES ('113', '32', '周期性', '2', '', '2', '0', '0', '10000', '2023-04-01 09:54:11', '10000', '2023-04-01 09:54:14');
+INSERT INTO `sys_dict_data` VALUES ('114', '33', '数据库', '1', '', '1', '0', '0', '10000', '2023-04-01 09:54:45', '10000', '2023-04-01 09:54:48');
+INSERT INTO `sys_dict_data` VALUES ('115', '33', '中台库', '2', '', '2', '0', '0', '10000', '2023-04-01 09:54:55', '10000', '2023-04-01 09:54:55');
+INSERT INTO `sys_dict_data` VALUES ('116', '9', '数据治理', 'data_governance', '', '3', '0', '0', '10000', '2023-04-03 17:12:43', '10000', '2023-04-03 17:12:58');
+INSERT INTO `sys_dict_data` VALUES ('117', '34', '运行中', '2', '', '0', '0', '0', '10000', '2023-04-05 16:20:05', '10000', '2023-04-05 16:20:05');
+INSERT INTO `sys_dict_data` VALUES ('118', '34', '成功', '1', '', '1', '0', '0', '10000', '2023-04-05 16:20:11', '10000', '2023-04-05 16:20:11');
+INSERT INTO `sys_dict_data` VALUES ('119', '34', '失败', '0', '', '2', '0', '0', '10000', '2023-04-05 16:20:23', '10000', '2023-04-05 16:20:23');
+INSERT INTO `sys_dict_data` VALUES ('120', '35', '标准字段', '1', '', '1', '0', '0', '10000', '2023-05-08 15:52:49', '10000', '2023-05-08 15:52:49');
+INSERT INTO `sys_dict_data` VALUES ('121', '35', '标准码表', '2', '', '2', '0', '0', '10000', '2023-05-08 15:52:57', '10000', '2023-05-08 15:52:57');
+INSERT INTO `sys_dict_data` VALUES ('122', '36', '数字', '1', '', '1', '0', '0', '10000', '2023-05-18 16:24:32', '10000', '2023-05-18 16:24:32');
+INSERT INTO `sys_dict_data` VALUES ('123', '36', '字符串', '2', '', '2', '0', '0', '10000', '2023-05-18 16:24:39', '10000', '2023-05-18 16:24:39');
+INSERT INTO `sys_dict_data` VALUES ('124', '36', '日期', '3', '', '3', '0', '0', '10000', '2023-05-18 16:24:47', '10000', '2023-05-18 16:24:47');
+INSERT INTO `sys_dict_data` VALUES ('125', '36', '小数', '4', '', '4', '0', '0', '10000', '2023-05-18 16:24:56', '10000', '2023-05-18 16:24:56');
+INSERT INTO `sys_dict_data` VALUES ('126', '37', '唯一性', '1', '', '1', '0', '0', '10000', '2023-05-28 09:49:18', '10000', '2023-05-28 09:49:18');
+INSERT INTO `sys_dict_data` VALUES ('127', '37', '规范性', '2', '', '2', '0', '0', '10000', '2023-05-28 09:49:24', '10000', '2023-05-28 09:49:24');
+INSERT INTO `sys_dict_data` VALUES ('128', '37', '有效性', '3', '', '3', '0', '0', '10000', '2023-05-28 09:49:32', '10000', '2023-05-28 09:49:32');
+INSERT INTO `sys_dict_data` VALUES ('129', '37', '完整性', '4', '', '4', '0', '0', '10000', '2023-05-28 09:49:40', '10000', '2023-05-28 09:49:40');
+INSERT INTO `sys_dict_data` VALUES ('130', '37', '一致性', '5', '', '5', '0', '0', '10000', '2023-05-28 09:49:47', '10000', '2023-05-28 09:49:47');
+INSERT INTO `sys_dict_data` VALUES ('131', '37', '及时性', '6', '', '6', '0', '0', '10000', '2023-05-28 09:49:57', '10000', '2023-05-28 09:49:57');
+INSERT INTO `sys_dict_data` VALUES ('132', '37', '准确性', '7', '', '7', '0', '0', '10000', '2023-05-28 09:50:08', '10000', '2023-05-28 09:50:08');
+INSERT INTO `sys_dict_data` VALUES ('133', '38', '一次性', '1', '', '1', '0', '0', '10000', '2023-05-29 11:52:19', '10000', '2023-05-29 11:52:51');
+INSERT INTO `sys_dict_data` VALUES ('134', '38', '周期性', '2', '', '2', '0', '0', '10000', '2023-05-29 11:52:27', '10000', '2023-05-29 11:52:57');
+INSERT INTO `sys_dict_data` VALUES ('135', '39', '单字段唯一', '1', '', '1', '0', '0', '10000', '2023-05-30 12:43:31', '10000', '2023-05-30 12:43:31');
+INSERT INTO `sys_dict_data` VALUES ('136', '39', '组合字段唯一', '2', '', '2', '0', '0', '10000', '2023-05-30 12:43:40', '10000', '2023-05-30 12:43:40');
+INSERT INTO `sys_dict_data` VALUES ('137', '40', 'TiDB(MySql)', '1', '', '1', '0', '0', '10000', '2023-06-03 11:07:47', '10000', '2023-06-03 11:07:47');
+INSERT INTO `sys_dict_data` VALUES ('138', '40', 'ORACLE', '2', '', '2', '0', '0', '10000', '2023-06-13 16:57:00', '10000', '2023-06-13 16:57:00');
+INSERT INTO `sys_dict_data` VALUES ('139', '40', 'POSTGRESQL', '3', '', '3', '0', '0', '10000', '2023-06-13 17:12:18', '10000', '2023-06-13 17:12:18');
+INSERT INTO `sys_dict_data` VALUES ('140', '12', 'DORIS', '16', '', '16', '0', '0', '10000', '2023-06-19 17:46:51', '10000', '2023-06-19 17:46:51');
+INSERT INTO `sys_dict_data` VALUES ('141', '40', 'DORIS', '16', '', '16', '0', '0', '10000', '2023-06-23 10:24:52', '10000', '2023-06-23 10:24:52');
+INSERT INTO `sys_dict_data` VALUES ('142', '40', 'GREENPLUM', '6', '', '6', '0', '0', '10000', '2023-06-23 10:25:53', '10000', '2023-06-23 10:25:53');
+INSERT INTO `sys_dict_data` VALUES ('143', '41', '未上架', '0', '', '0', '0', '0', '10000', '2023-07-07 10:51:35', '10000', '2023-07-07 10:51:35');
+INSERT INTO `sys_dict_data` VALUES ('144', '41', '已上架', '1', '', '1', '0', '0', '10000', '2023-07-07 10:51:42', '10000', '2023-07-07 10:51:42');
+INSERT INTO `sys_dict_data` VALUES ('145', '42', '未挂载', '0', '', '0', '0', '0', '10000', '2023-07-07 10:52:09', '10000', '2023-07-07 10:52:09');
+INSERT INTO `sys_dict_data` VALUES ('146', '42', '已挂载', '1', '', '1', '0', '0', '10000', '2023-07-07 10:52:17', '10000', '2023-07-07 10:52:24');
+INSERT INTO `sys_dict_data` VALUES ('147', '43', '全部', '1', '', '1', '0', '0', '10000', '2023-07-07 15:09:02', '10000', '2023-07-07 15:09:02');
+INSERT INTO `sys_dict_data` VALUES ('148', '43', '角色', '2', '', '2', '0', '0', '10000', '2023-07-07 15:09:10', '10000', '2023-07-07 15:09:10');
+INSERT INTO `sys_dict_data` VALUES ('149', '43', '用户', '3', '', '3', '0', '0', '10000', '2023-07-07 15:09:16', '10000', '2023-07-07 15:09:16');
+INSERT INTO `sys_dict_data` VALUES ('150', '44', '数据库表', '1', '', '1', '0', '0', '10000', '2023-07-14 14:00:48', '10000', '2023-07-14 14:00:48');
+INSERT INTO `sys_dict_data` VALUES ('151', '44', 'API', '2', '', '2', '0', '0', '10000', '2023-07-14 14:00:52', '10000', '2023-07-14 14:00:57');
+INSERT INTO `sys_dict_data` VALUES ('152', '44', '文件', '3', '', '3', '0', '0', '10000', '2023-07-14 14:01:05', '10000', '2023-07-14 14:01:05');
+INSERT INTO `sys_dict_data` VALUES ('153', '9', '数据质量', 'data_quality', '', '4', '0', '0', '10000', '2023-07-21 10:03:30', '10000', '2023-07-21 10:03:38');
+
+-- ----------------------------
+-- Table structure for sys_dict_type
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_dict_type`;
+CREATE TABLE `sys_dict_type` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `dict_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '字典类型',
+ `dict_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '字典名称',
+ `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=45 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='字典类型';
+
+-- ----------------------------
+-- Records of sys_dict_type
+-- ----------------------------
+INSERT INTO `sys_dict_type` VALUES ('1', 'post_status', '状态', '岗位管理', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('2', 'user_gender', '性别', '用户管理', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('3', 'user_status', '状态', '用户管理', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('4', 'role_data_scope', '数据范围', '角色管理', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('5', 'enable_disable', '状态', '功能状态:启用 | 禁用 ', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('6', 'success_fail', '状态', '操作状态:成功 | 失败', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('7', 'login_operation', '操作信息', '登录管理', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('8', 'sms_platform', '平台类型', '短信管理', '0', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_dict_type` VALUES ('9', 'schedule_group', '任务组名', '定时任务', '0', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_dict_type` VALUES ('10', 'schedule_status', '状态', '定时任务', '0', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_dict_type` VALUES ('11', 'project_status', '项目状态', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_dict_type` VALUES ('12', 'database_type', '数据库类型', '', '0', '0', '0', '10000', '2022-10-09 16:07:56', '10000', '2022-10-09 16:07:56');
+INSERT INTO `sys_dict_type` VALUES ('13', 'database_status', '数据库状态', '', '0', '0', '0', '10000', '2022-10-09 17:24:20', '10000', '2022-10-09 17:24:20');
+INSERT INTO `sys_dict_type` VALUES ('14', 'yes_or_no', '是否', '', '0', '0', '0', '10000', '2022-10-09 17:25:01', '10000', '2022-10-09 17:25:01');
+INSERT INTO `sys_dict_type` VALUES ('15', 'task_type', '任务类型', '', '0', '0', '0', '10000', '2022-10-24 17:46:19', '10000', '2022-10-24 17:46:19');
+INSERT INTO `sys_dict_type` VALUES ('16', 'run_status', '运行状态', '', '0', '0', '0', '10000', '2022-10-24 17:48:48', '10000', '2022-10-24 17:48:48');
+INSERT INTO `sys_dict_type` VALUES ('17', 'release_status', '发布状态', '', '0', '0', '0', '10000', '2022-10-24 17:50:07', '10000', '2022-10-24 17:50:07');
+INSERT INTO `sys_dict_type` VALUES ('18', 'production_task_type', '数据生产作业类型', '数据生产作业类型', '0', '0', '0', '10000', '2022-11-26 20:28:20', '10000', '2022-11-26 20:28:20');
+INSERT INTO `sys_dict_type` VALUES ('19', 'production_cluster_type', '数据生产集群实例类型', '数据生产集群实例类型', '0', '0', '0', '10000', '2022-12-03 10:40:37', '10000', '2022-12-03 10:40:43');
+INSERT INTO `sys_dict_type` VALUES ('20', 'production_cluster_configuration_type', '集群配置类型', '', '0', '0', '0', '10000', '2022-12-22 09:30:02', '10000', '2022-12-22 09:30:02');
+INSERT INTO `sys_dict_type` VALUES ('21', 'task_status', '作业状态', '', '0', '0', '0', '10000', '2023-01-03 20:46:59', '10000', '2023-01-03 20:46:59');
+INSERT INTO `sys_dict_type` VALUES ('22', 'instance_status', '作业实例状态', '', '0', '0', '0', '10000', '2023-01-03 20:49:16', '10000', '2023-01-03 20:49:16');
+INSERT INTO `sys_dict_type` VALUES ('23', 'savepoint_strategy', 'flink的savepoint策略', '', '0', '0', '0', '10000', '2023-01-09 21:22:38', '10000', '2023-01-09 21:22:38');
+INSERT INTO `sys_dict_type` VALUES ('24', 'execute_type', '执行类型', '', '0', '0', '0', '10000', '2023-01-18 15:13:05', '10000', '2023-01-18 15:13:05');
+INSERT INTO `sys_dict_type` VALUES ('25', 'api_group_type', 'api分组类型', '', '0', '0', '0', '10000', '2023-01-30 11:34:24', '10000', '2023-01-30 11:34:24');
+INSERT INTO `sys_dict_type` VALUES ('26', 'api_type', 'api请求方式', '', '0', '0', '0', '10000', '2023-02-12 11:26:37', '10000', '2023-02-12 11:26:37');
+INSERT INTO `sys_dict_type` VALUES ('27', 'content_type', '请求参数类型', '', '0', '0', '0', '10000', '2023-02-12 11:32:28', '10000', '2023-02-12 11:32:28');
+INSERT INTO `sys_dict_type` VALUES ('28', 'api_expire_desc', 'api有效期', '', '0', '0', '0', '10000', '2023-02-16 14:43:43', '10000', '2023-02-16 14:43:43');
+INSERT INTO `sys_dict_type` VALUES ('29', 'model_property_data_type', '元模型属性数据类型', '', '0', '0', '0', '10000', '2023-03-28 16:02:07', '10000', '2023-03-28 16:02:07');
+INSERT INTO `sys_dict_type` VALUES ('30', 'model_property_input_type', '元模型属性输入类型', '', '0', '0', '0', '10000', '2023-03-28 16:02:59', '10000', '2023-03-28 16:02:59');
+INSERT INTO `sys_dict_type` VALUES ('31', 'metadata_collect_strategy', '元数据采集策略', '', '0', '0', '0', '10000', '2023-04-01 09:53:13', '10000', '2023-04-01 09:53:13');
+INSERT INTO `sys_dict_type` VALUES ('32', 'metadata_collect_type', '元数据采集类型', '', '0', '0', '0', '10000', '2023-04-01 09:53:55', '10000', '2023-04-01 09:53:55');
+INSERT INTO `sys_dict_type` VALUES ('33', 'db_type', '数据源类型', '', '0', '0', '0', '10000', '2023-04-01 09:54:35', '10000', '2023-04-01 09:54:35');
+INSERT INTO `sys_dict_type` VALUES ('34', 'metadata_collect_status', '元数据采集运行状态', '', '0', '0', '0', '10000', '2023-04-05 16:19:14', '10000', '2023-04-05 16:19:14');
+INSERT INTO `sys_dict_type` VALUES ('35', 'standard_type', '标准类型', '', '0', '0', '0', '10000', '2023-05-08 15:52:35', '10000', '2023-05-08 15:52:35');
+INSERT INTO `sys_dict_type` VALUES ('36', 'standard_data_type', '标准字段-数据类型', '', '0', '0', '0', '10000', '2023-05-18 16:23:44', '10000', '2023-05-18 16:23:44');
+INSERT INTO `sys_dict_type` VALUES ('37', 'quality_rule_type', '质量规则类型', '', '0', '0', '0', '10000', '2023-05-28 09:49:04', '10000', '2023-05-28 09:49:04');
+INSERT INTO `sys_dict_type` VALUES ('38', 'quality_config_task_type', '质量规则任务类型', '', '0', '0', '0', '10000', '2023-05-29 11:52:07', '10000', '2023-05-29 11:52:07');
+INSERT INTO `sys_dict_type` VALUES ('39', 'quality_unique_type', '质量唯一类型', '', '0', '0', '0', '10000', '2023-05-30 12:43:05', '10000', '2023-05-30 12:43:05');
+INSERT INTO `sys_dict_type` VALUES ('40', 'data_house_type', '数仓类型', '', '0', '0', '0', '10000', '2023-06-03 11:07:31', '10000', '2023-06-03 11:07:31');
+INSERT INTO `sys_dict_type` VALUES ('41', 'ground_status', '上架状态', '', '0', '0', '0', '10000', '2023-07-07 10:51:19', '10000', '2023-07-07 10:51:19');
+INSERT INTO `sys_dict_type` VALUES ('42', 'mount_status', '挂载状态', '', '0', '0', '0', '10000', '2023-07-07 10:51:56', '10000', '2023-07-07 10:51:56');
+INSERT INTO `sys_dict_type` VALUES ('43', 'open_type', '开放类型', '', '0', '0', '0', '10000', '2023-07-07 15:08:42', '10000', '2023-07-07 15:08:42');
+INSERT INTO `sys_dict_type` VALUES ('44', 'mount_type', '挂载资源类型', '', '0', '0', '0', '10000', '2023-07-14 14:00:25', '10000', '2023-07-14 14:00:25');
+
+-- ----------------------------
+-- Table structure for sys_log_login
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_log_login`;
+CREATE TABLE `sys_log_login` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用户名',
+ `ip` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '登录IP',
+ `address` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '登录地点',
+ `user_agent` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT 'User Agent',
+ `status` tinyint DEFAULT NULL COMMENT '登录状态 0:失败 1:成功',
+ `operation` tinyint unsigned DEFAULT NULL COMMENT '操作信息 0:登录成功 1:退出成功 2:验证码错误 3:账号密码错误',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=399 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='登录日志';
+
+-- ----------------------------
+-- Records of sys_log_login
+-- ----------------------------
+INSERT INTO `sys_log_login` VALUES ('1', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-09-27 17:11:24');
+INSERT INTO `sys_log_login` VALUES ('2', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-09-27 17:11:36');
+INSERT INTO `sys_log_login` VALUES ('3', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-09-27 20:48:32');
+INSERT INTO `sys_log_login` VALUES ('4', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-09-27 20:48:42');
+INSERT INTO `sys_log_login` VALUES ('5', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-04 14:09:31');
+INSERT INTO `sys_log_login` VALUES ('6', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-07 11:23:48');
+INSERT INTO `sys_log_login` VALUES ('7', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-07 12:00:53');
+INSERT INTO `sys_log_login` VALUES ('8', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-07 12:01:05');
+INSERT INTO `sys_log_login` VALUES ('9', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-08 12:42:10');
+INSERT INTO `sys_log_login` VALUES ('10', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-08 16:57:53');
+INSERT INTO `sys_log_login` VALUES ('11', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-08 16:58:11');
+INSERT INTO `sys_log_login` VALUES ('12', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-08 17:30:44');
+INSERT INTO `sys_log_login` VALUES ('13', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-08 17:30:52');
+INSERT INTO `sys_log_login` VALUES ('14', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-09 12:40:22');
+INSERT INTO `sys_log_login` VALUES ('15', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-09 12:40:31');
+INSERT INTO `sys_log_login` VALUES ('16', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-10-11 17:47:52');
+INSERT INTO `sys_log_login` VALUES ('17', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-11 17:48:06');
+INSERT INTO `sys_log_login` VALUES ('18', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-17 11:03:13');
+INSERT INTO `sys_log_login` VALUES ('19', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-17 13:48:23');
+INSERT INTO `sys_log_login` VALUES ('20', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-17 13:48:37');
+INSERT INTO `sys_log_login` VALUES ('21', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-17 13:49:08');
+INSERT INTO `sys_log_login` VALUES ('22', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '3', '2022-10-17 13:49:21');
+INSERT INTO `sys_log_login` VALUES ('23', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-10-17 13:49:32');
+INSERT INTO `sys_log_login` VALUES ('24', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-17 13:49:44');
+INSERT INTO `sys_log_login` VALUES ('25', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-17 13:51:26');
+INSERT INTO `sys_log_login` VALUES ('26', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-10-17 13:51:42');
+INSERT INTO `sys_log_login` VALUES ('27', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-17 13:51:49');
+INSERT INTO `sys_log_login` VALUES ('28', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-17 13:59:53');
+INSERT INTO `sys_log_login` VALUES ('29', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-10-17 14:00:05');
+INSERT INTO `sys_log_login` VALUES ('30', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-17 14:00:11');
+INSERT INTO `sys_log_login` VALUES ('31', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-19 10:10:25');
+INSERT INTO `sys_log_login` VALUES ('32', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-20 10:48:03');
+INSERT INTO `sys_log_login` VALUES ('33', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-20 12:01:44');
+INSERT INTO `sys_log_login` VALUES ('34', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-20 12:01:51');
+INSERT INTO `sys_log_login` VALUES ('35', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-20 12:55:48');
+INSERT INTO `sys_log_login` VALUES ('36', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-20 12:55:48');
+INSERT INTO `sys_log_login` VALUES ('37', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-20 12:56:10');
+INSERT INTO `sys_log_login` VALUES ('38', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-22 11:46:48');
+INSERT INTO `sys_log_login` VALUES ('39', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-22 13:15:51');
+INSERT INTO `sys_log_login` VALUES ('40', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-22 13:16:05');
+INSERT INTO `sys_log_login` VALUES ('41', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-22 13:34:19');
+INSERT INTO `sys_log_login` VALUES ('42', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-10-22 13:34:27');
+INSERT INTO `sys_log_login` VALUES ('43', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-22 13:34:33');
+INSERT INTO `sys_log_login` VALUES ('44', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-22 16:39:23');
+INSERT INTO `sys_log_login` VALUES ('45', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-22 16:39:30');
+INSERT INTO `sys_log_login` VALUES ('46', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-22 17:00:00');
+INSERT INTO `sys_log_login` VALUES ('47', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-22 17:00:09');
+INSERT INTO `sys_log_login` VALUES ('48', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-22 17:17:08');
+INSERT INTO `sys_log_login` VALUES ('49', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-22 17:17:24');
+INSERT INTO `sys_log_login` VALUES ('50', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-22 20:04:14');
+INSERT INTO `sys_log_login` VALUES ('51', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-22 20:04:23');
+INSERT INTO `sys_log_login` VALUES ('52', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-23 20:10:49');
+INSERT INTO `sys_log_login` VALUES ('53', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-24 21:45:07');
+INSERT INTO `sys_log_login` VALUES ('54', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-25 15:27:30');
+INSERT INTO `sys_log_login` VALUES ('55', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-25 15:27:39');
+INSERT INTO `sys_log_login` VALUES ('56', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-26 22:37:16');
+INSERT INTO `sys_log_login` VALUES ('57', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-27 14:59:36');
+INSERT INTO `sys_log_login` VALUES ('58', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-27 14:59:50');
+INSERT INTO `sys_log_login` VALUES ('59', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-27 15:35:46');
+INSERT INTO `sys_log_login` VALUES ('60', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-27 16:14:35');
+INSERT INTO `sys_log_login` VALUES ('61', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-27 22:19:45');
+INSERT INTO `sys_log_login` VALUES ('62', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-27 22:19:56');
+INSERT INTO `sys_log_login` VALUES ('63', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-28 17:00:33');
+INSERT INTO `sys_log_login` VALUES ('64', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-28 17:00:41');
+INSERT INTO `sys_log_login` VALUES ('65', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-29 12:49:32');
+INSERT INTO `sys_log_login` VALUES ('66', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-29 12:55:40');
+INSERT INTO `sys_log_login` VALUES ('67', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-29 12:57:00');
+INSERT INTO `sys_log_login` VALUES ('68', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-29 12:57:10');
+INSERT INTO `sys_log_login` VALUES ('69', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-10-29 14:30:10');
+INSERT INTO `sys_log_login` VALUES ('70', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-10-29 14:30:18');
+INSERT INTO `sys_log_login` VALUES ('71', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-01 23:14:43');
+INSERT INTO `sys_log_login` VALUES ('72', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-01 23:15:01');
+INSERT INTO `sys_log_login` VALUES ('73', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-10 16:51:17');
+INSERT INTO `sys_log_login` VALUES ('74', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-11 17:38:02');
+INSERT INTO `sys_log_login` VALUES ('75', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-11 17:38:10');
+INSERT INTO `sys_log_login` VALUES ('76', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-12 21:23:47');
+INSERT INTO `sys_log_login` VALUES ('77', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-14 15:04:59');
+INSERT INTO `sys_log_login` VALUES ('78', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-16 11:15:56');
+INSERT INTO `sys_log_login` VALUES ('79', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-16 11:53:52');
+INSERT INTO `sys_log_login` VALUES ('80', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-16 11:54:04');
+INSERT INTO `sys_log_login` VALUES ('81', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-16 11:54:12');
+INSERT INTO `sys_log_login` VALUES ('82', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-18 12:59:49');
+INSERT INTO `sys_log_login` VALUES ('83', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-18 14:27:20');
+INSERT INTO `sys_log_login` VALUES ('84', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-18 14:27:31');
+INSERT INTO `sys_log_login` VALUES ('85', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-21 09:21:12');
+INSERT INTO `sys_log_login` VALUES ('86', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-22 10:36:54');
+INSERT INTO `sys_log_login` VALUES ('87', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-22 10:36:50');
+INSERT INTO `sys_log_login` VALUES ('88', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-22 10:37:04');
+INSERT INTO `sys_log_login` VALUES ('89', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-23 10:40:40');
+INSERT INTO `sys_log_login` VALUES ('90', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-23 10:40:49');
+INSERT INTO `sys_log_login` VALUES ('91', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-24 10:43:19');
+INSERT INTO `sys_log_login` VALUES ('92', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 11:40:20');
+INSERT INTO `sys_log_login` VALUES ('93', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-25 21:46:41');
+INSERT INTO `sys_log_login` VALUES ('94', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 21:47:14');
+INSERT INTO `sys_log_login` VALUES ('95', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-25 22:03:34');
+INSERT INTO `sys_log_login` VALUES ('96', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 22:03:44');
+INSERT INTO `sys_log_login` VALUES ('97', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-25 23:20:46');
+INSERT INTO `sys_log_login` VALUES ('98', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 23:20:53');
+INSERT INTO `sys_log_login` VALUES ('99', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-25 23:25:09');
+INSERT INTO `sys_log_login` VALUES ('100', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 23:25:16');
+INSERT INTO `sys_log_login` VALUES ('101', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 23:35:55');
+INSERT INTO `sys_log_login` VALUES ('102', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-25 23:37:24');
+INSERT INTO `sys_log_login` VALUES ('103', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 23:37:33');
+INSERT INTO `sys_log_login` VALUES ('104', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-25 23:38:27');
+INSERT INTO `sys_log_login` VALUES ('105', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-25 23:43:47');
+INSERT INTO `sys_log_login` VALUES ('106', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-26 00:03:39');
+INSERT INTO `sys_log_login` VALUES ('107', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-26 00:03:51');
+INSERT INTO `sys_log_login` VALUES ('108', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-26 12:03:03');
+INSERT INTO `sys_log_login` VALUES ('109', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-26 12:03:17');
+INSERT INTO `sys_log_login` VALUES ('110', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-26 12:05:30');
+INSERT INTO `sys_log_login` VALUES ('111', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-26 12:05:47');
+INSERT INTO `sys_log_login` VALUES ('112', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-26 12:10:04');
+INSERT INTO `sys_log_login` VALUES ('113', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-26 12:10:15');
+INSERT INTO `sys_log_login` VALUES ('114', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-26 16:35:40');
+INSERT INTO `sys_log_login` VALUES ('115', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-26 16:35:50');
+INSERT INTO `sys_log_login` VALUES ('116', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-27 18:38:34');
+INSERT INTO `sys_log_login` VALUES ('117', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-27 18:38:49');
+INSERT INTO `sys_log_login` VALUES ('118', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-27 18:38:55');
+INSERT INTO `sys_log_login` VALUES ('119', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-11-28 15:34:17');
+INSERT INTO `sys_log_login` VALUES ('120', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-28 15:34:39');
+INSERT INTO `sys_log_login` VALUES ('121', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-29 15:40:57');
+INSERT INTO `sys_log_login` VALUES ('122', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-30 16:10:59');
+INSERT INTO `sys_log_login` VALUES ('123', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-30 16:11:15');
+INSERT INTO `sys_log_login` VALUES ('124', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-11-30 16:11:19');
+INSERT INTO `sys_log_login` VALUES ('125', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-11-30 16:11:26');
+INSERT INTO `sys_log_login` VALUES ('126', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-01 16:15:28');
+INSERT INTO `sys_log_login` VALUES ('127', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-03 11:13:35');
+INSERT INTO `sys_log_login` VALUES ('128', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-12-03 11:25:18');
+INSERT INTO `sys_log_login` VALUES ('129', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-03 11:25:28');
+INSERT INTO `sys_log_login` VALUES ('130', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-04 11:25:38');
+INSERT INTO `sys_log_login` VALUES ('131', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-05 16:40:26');
+INSERT INTO `sys_log_login` VALUES ('132', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-06 17:23:45');
+INSERT INTO `sys_log_login` VALUES ('133', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-12-07 09:26:16');
+INSERT INTO `sys_log_login` VALUES ('134', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-07 09:26:26');
+INSERT INTO `sys_log_login` VALUES ('135', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-08 13:01:55');
+INSERT INTO `sys_log_login` VALUES ('136', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-09 15:45:04');
+INSERT INTO `sys_log_login` VALUES ('137', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-09 15:45:11');
+INSERT INTO `sys_log_login` VALUES ('138', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-09 15:45:12');
+INSERT INTO `sys_log_login` VALUES ('139', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-10 18:19:41');
+INSERT INTO `sys_log_login` VALUES ('140', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-14 12:13:21');
+INSERT INTO `sys_log_login` VALUES ('141', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-15 16:15:03');
+INSERT INTO `sys_log_login` VALUES ('142', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-19 10:29:52');
+INSERT INTO `sys_log_login` VALUES ('143', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-20 16:14:50');
+INSERT INTO `sys_log_login` VALUES ('144', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-21 16:15:22');
+INSERT INTO `sys_log_login` VALUES ('145', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-12-21 20:44:20');
+INSERT INTO `sys_log_login` VALUES ('146', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-22 09:29:02');
+INSERT INTO `sys_log_login` VALUES ('147', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-22 09:29:10');
+INSERT INTO `sys_log_login` VALUES ('148', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-23 11:11:15');
+INSERT INTO `sys_log_login` VALUES ('149', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-24 16:18:17');
+INSERT INTO `sys_log_login` VALUES ('150', 'admin', '192.168.40.1', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-25 04:02:09');
+INSERT INTO `sys_log_login` VALUES ('151', 'admin', '192.168.40.1', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-25 04:02:29');
+INSERT INTO `sys_log_login` VALUES ('152', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2022-12-25 16:53:04');
+INSERT INTO `sys_log_login` VALUES ('153', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-25 16:53:14');
+INSERT INTO `sys_log_login` VALUES ('154', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-27 12:46:14');
+INSERT INTO `sys_log_login` VALUES ('155', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:01:30');
+INSERT INTO `sys_log_login` VALUES ('156', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-28 17:01:49');
+INSERT INTO `sys_log_login` VALUES ('157', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:01:55');
+INSERT INTO `sys_log_login` VALUES ('158', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-28 17:02:05');
+INSERT INTO `sys_log_login` VALUES ('159', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:02:11');
+INSERT INTO `sys_log_login` VALUES ('160', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:02:27');
+INSERT INTO `sys_log_login` VALUES ('161', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-28 17:03:28');
+INSERT INTO `sys_log_login` VALUES ('162', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-28 17:03:35');
+INSERT INTO `sys_log_login` VALUES ('163', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:03:42');
+INSERT INTO `sys_log_login` VALUES ('164', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:07:12');
+INSERT INTO `sys_log_login` VALUES ('165', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:07:40');
+INSERT INTO `sys_log_login` VALUES ('166', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:08:30');
+INSERT INTO `sys_log_login` VALUES ('167', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:08:42');
+INSERT INTO `sys_log_login` VALUES ('168', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:12:53');
+INSERT INTO `sys_log_login` VALUES ('169', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-28 17:44:39');
+INSERT INTO `sys_log_login` VALUES ('170', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-28 17:44:49');
+INSERT INTO `sys_log_login` VALUES ('171', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-30 09:53:45');
+INSERT INTO `sys_log_login` VALUES ('172', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2022-12-30 09:53:45');
+INSERT INTO `sys_log_login` VALUES ('173', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-30 09:53:52');
+INSERT INTO `sys_log_login` VALUES ('174', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2022-12-31 11:56:53');
+INSERT INTO `sys_log_login` VALUES ('175', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-01 12:18:29');
+INSERT INTO `sys_log_login` VALUES ('176', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-02 13:08:57');
+INSERT INTO `sys_log_login` VALUES ('177', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-03 20:45:34');
+INSERT INTO `sys_log_login` VALUES ('178', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-04 21:08:34');
+INSERT INTO `sys_log_login` VALUES ('179', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-04 21:08:42');
+INSERT INTO `sys_log_login` VALUES ('180', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-04 21:08:48');
+INSERT INTO `sys_log_login` VALUES ('181', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-05 21:13:59');
+INSERT INTO `sys_log_login` VALUES ('182', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-05 21:14:07');
+INSERT INTO `sys_log_login` VALUES ('183', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-07 15:55:06');
+INSERT INTO `sys_log_login` VALUES ('184', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-08 17:28:55');
+INSERT INTO `sys_log_login` VALUES ('185', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-08 17:29:22');
+INSERT INTO `sys_log_login` VALUES ('186', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-09 20:02:14');
+INSERT INTO `sys_log_login` VALUES ('187', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-10 22:21:51');
+INSERT INTO `sys_log_login` VALUES ('188', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-12 10:26:37');
+INSERT INTO `sys_log_login` VALUES ('189', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-12 10:26:47');
+INSERT INTO `sys_log_login` VALUES ('190', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-12 10:26:53');
+INSERT INTO `sys_log_login` VALUES ('191', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-13 10:28:17');
+INSERT INTO `sys_log_login` VALUES ('192', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-14 11:41:45');
+INSERT INTO `sys_log_login` VALUES ('193', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-01-14 19:22:05');
+INSERT INTO `sys_log_login` VALUES ('194', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-14 19:22:14');
+INSERT INTO `sys_log_login` VALUES ('195', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-15 20:52:51');
+INSERT INTO `sys_log_login` VALUES ('196', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-17 16:29:17');
+INSERT INTO `sys_log_login` VALUES ('197', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-01-17 17:06:30');
+INSERT INTO `sys_log_login` VALUES ('198', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-17 17:06:41');
+INSERT INTO `sys_log_login` VALUES ('199', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-01-18 16:00:40');
+INSERT INTO `sys_log_login` VALUES ('200', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-18 16:04:57');
+INSERT INTO `sys_log_login` VALUES ('201', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-18 16:05:04');
+INSERT INTO `sys_log_login` VALUES ('202', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-19 16:50:06');
+INSERT INTO `sys_log_login` VALUES ('203', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-01-19 21:47:25');
+INSERT INTO `sys_log_login` VALUES ('204', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-19 21:47:36');
+INSERT INTO `sys_log_login` VALUES ('205', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-20 22:07:37');
+INSERT INTO `sys_log_login` VALUES ('206', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-21 14:19:09');
+INSERT INTO `sys_log_login` VALUES ('207', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-22 15:47:10');
+INSERT INTO `sys_log_login` VALUES ('208', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-22 15:47:15');
+INSERT INTO `sys_log_login` VALUES ('209', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-22 15:47:20');
+INSERT INTO `sys_log_login` VALUES ('210', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-22 16:01:06');
+INSERT INTO `sys_log_login` VALUES ('211', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-22 16:01:13');
+INSERT INTO `sys_log_login` VALUES ('212', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-01-22 20:35:22');
+INSERT INTO `sys_log_login` VALUES ('213', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-22 20:37:34');
+INSERT INTO `sys_log_login` VALUES ('214', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-30 11:21:20');
+INSERT INTO `sys_log_login` VALUES ('215', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-01-30 11:21:21');
+INSERT INTO `sys_log_login` VALUES ('216', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-01-30 11:43:26');
+INSERT INTO `sys_log_login` VALUES ('217', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-01-30 11:44:19');
+INSERT INTO `sys_log_login` VALUES ('218', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '0', '2', '2023-02-06 15:37:19');
+INSERT INTO `sys_log_login` VALUES ('219', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-02-06 15:37:28');
+INSERT INTO `sys_log_login` VALUES ('220', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-02-06 16:05:00');
+INSERT INTO `sys_log_login` VALUES ('221', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-02-06 16:05:11');
+INSERT INTO `sys_log_login` VALUES ('222', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '1', '2023-02-06 16:13:05');
+INSERT INTO `sys_log_login` VALUES ('223', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-02-06 16:13:17');
+INSERT INTO `sys_log_login` VALUES ('224', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-02-08 09:56:59');
+INSERT INTO `sys_log_login` VALUES ('225', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36', '1', '0', '2023-02-09 14:55:13');
+INSERT INTO `sys_log_login` VALUES ('226', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-11 21:39:31');
+INSERT INTO `sys_log_login` VALUES ('227', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-13 14:53:06');
+INSERT INTO `sys_log_login` VALUES ('228', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-14 09:56:41');
+INSERT INTO `sys_log_login` VALUES ('229', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-14 09:56:48');
+INSERT INTO `sys_log_login` VALUES ('230', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-14 22:43:51');
+INSERT INTO `sys_log_login` VALUES ('231', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-14 22:43:59');
+INSERT INTO `sys_log_login` VALUES ('232', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-15 11:17:02');
+INSERT INTO `sys_log_login` VALUES ('233', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-15 11:17:08');
+INSERT INTO `sys_log_login` VALUES ('234', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-16 12:50:31');
+INSERT INTO `sys_log_login` VALUES ('235', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-16 14:51:51');
+INSERT INTO `sys_log_login` VALUES ('236', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-02-16 14:54:55');
+INSERT INTO `sys_log_login` VALUES ('237', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-16 14:55:02');
+INSERT INTO `sys_log_login` VALUES ('238', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-17 11:37:42');
+INSERT INTO `sys_log_login` VALUES ('239', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-17 11:37:50');
+INSERT INTO `sys_log_login` VALUES ('240', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-02-20 11:04:14');
+INSERT INTO `sys_log_login` VALUES ('241', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-02-20 11:04:14');
+INSERT INTO `sys_log_login` VALUES ('242', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-20 11:04:21');
+INSERT INTO `sys_log_login` VALUES ('243', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-20 14:11:57');
+INSERT INTO `sys_log_login` VALUES ('244', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-02-20 14:12:07');
+INSERT INTO `sys_log_login` VALUES ('245', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-20 14:12:13');
+INSERT INTO `sys_log_login` VALUES ('246', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-20 14:15:04');
+INSERT INTO `sys_log_login` VALUES ('247', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-20 14:15:11');
+INSERT INTO `sys_log_login` VALUES ('248', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-22 08:58:09');
+INSERT INTO `sys_log_login` VALUES ('249', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-22 14:49:33');
+INSERT INTO `sys_log_login` VALUES ('250', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-22 14:49:40');
+INSERT INTO `sys_log_login` VALUES ('251', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-23 18:28:58');
+INSERT INTO `sys_log_login` VALUES ('252', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-25 20:57:48');
+INSERT INTO `sys_log_login` VALUES ('253', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 11:55:13');
+INSERT INTO `sys_log_login` VALUES ('254', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 12:06:15');
+INSERT INTO `sys_log_login` VALUES ('255', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 14:54:42');
+INSERT INTO `sys_log_login` VALUES ('256', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 15:18:35');
+INSERT INTO `sys_log_login` VALUES ('257', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-02-26 15:18:43');
+INSERT INTO `sys_log_login` VALUES ('258', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 15:18:51');
+INSERT INTO `sys_log_login` VALUES ('259', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 21:00:09');
+INSERT INTO `sys_log_login` VALUES ('260', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 21:10:08');
+INSERT INTO `sys_log_login` VALUES ('261', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 21:10:16');
+INSERT INTO `sys_log_login` VALUES ('262', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 21:18:16');
+INSERT INTO `sys_log_login` VALUES ('263', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 21:20:30');
+INSERT INTO `sys_log_login` VALUES ('264', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 21:31:09');
+INSERT INTO `sys_log_login` VALUES ('265', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 21:31:14');
+INSERT INTO `sys_log_login` VALUES ('266', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 21:33:11');
+INSERT INTO `sys_log_login` VALUES ('267', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 21:35:29');
+INSERT INTO `sys_log_login` VALUES ('268', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 21:59:01');
+INSERT INTO `sys_log_login` VALUES ('269', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 21:59:09');
+INSERT INTO `sys_log_login` VALUES ('270', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 22:01:52');
+INSERT INTO `sys_log_login` VALUES ('271', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 22:02:00');
+INSERT INTO `sys_log_login` VALUES ('272', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-02-26 22:04:18');
+INSERT INTO `sys_log_login` VALUES ('273', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-02-26 22:04:25');
+INSERT INTO `sys_log_login` VALUES ('274', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-03 15:15:31');
+INSERT INTO `sys_log_login` VALUES ('275', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-05 18:37:02');
+INSERT INTO `sys_log_login` VALUES ('276', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-07 17:07:54');
+INSERT INTO `sys_log_login` VALUES ('277', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-14 12:31:29');
+INSERT INTO `sys_log_login` VALUES ('278', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-28 10:48:49');
+INSERT INTO `sys_log_login` VALUES ('279', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-28 13:40:53');
+INSERT INTO `sys_log_login` VALUES ('280', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-29 12:10:54');
+INSERT INTO `sys_log_login` VALUES ('281', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-29 15:03:12');
+INSERT INTO `sys_log_login` VALUES ('282', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-03-30 11:13:39');
+INSERT INTO `sys_log_login` VALUES ('283', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-30 11:14:16');
+INSERT INTO `sys_log_login` VALUES ('284', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-03-31 08:58:46');
+INSERT INTO `sys_log_login` VALUES ('285', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-31 08:58:53');
+INSERT INTO `sys_log_login` VALUES ('286', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-03-31 08:59:16');
+INSERT INTO `sys_log_login` VALUES ('287', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-03-31 10:39:14');
+INSERT INTO `sys_log_login` VALUES ('288', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-03-31 10:39:15');
+INSERT INTO `sys_log_login` VALUES ('289', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-03-31 10:39:21');
+INSERT INTO `sys_log_login` VALUES ('290', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-31 10:39:27');
+INSERT INTO `sys_log_login` VALUES ('291', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-03-31 11:12:06');
+INSERT INTO `sys_log_login` VALUES ('292', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-01 12:06:39');
+INSERT INTO `sys_log_login` VALUES ('293', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-03 10:36:26');
+INSERT INTO `sys_log_login` VALUES ('294', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-04-03 15:30:31');
+INSERT INTO `sys_log_login` VALUES ('295', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-03 15:30:36');
+INSERT INTO `sys_log_login` VALUES ('296', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-04-05 12:19:44');
+INSERT INTO `sys_log_login` VALUES ('297', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-04-05 12:19:54');
+INSERT INTO `sys_log_login` VALUES ('298', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-04-05 12:20:05');
+INSERT INTO `sys_log_login` VALUES ('299', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-05 12:20:11');
+INSERT INTO `sys_log_login` VALUES ('300', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-04-05 12:22:29');
+INSERT INTO `sys_log_login` VALUES ('301', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-05 12:22:35');
+INSERT INTO `sys_log_login` VALUES ('302', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-04-05 12:22:35');
+INSERT INTO `sys_log_login` VALUES ('303', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-04-06 09:59:56');
+INSERT INTO `sys_log_login` VALUES ('304', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '0', '2', '2023-04-06 10:00:01');
+INSERT INTO `sys_log_login` VALUES ('305', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-06 10:00:08');
+INSERT INTO `sys_log_login` VALUES ('306', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-07 10:05:47');
+INSERT INTO `sys_log_login` VALUES ('307', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-07 11:34:24');
+INSERT INTO `sys_log_login` VALUES ('308', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-08 12:10:45');
+INSERT INTO `sys_log_login` VALUES ('309', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-04-08 12:27:14');
+INSERT INTO `sys_log_login` VALUES ('310', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-08 12:30:57');
+INSERT INTO `sys_log_login` VALUES ('311', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '1', '2023-04-08 12:34:08');
+INSERT INTO `sys_log_login` VALUES ('312', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-08 12:36:23');
+INSERT INTO `sys_log_login` VALUES ('313', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-20 11:53:27');
+INSERT INTO `sys_log_login` VALUES ('314', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-04-23 14:17:59');
+INSERT INTO `sys_log_login` VALUES ('315', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36', '1', '0', '2023-05-08 09:38:18');
+INSERT INTO `sys_log_login` VALUES ('316', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-18 15:34:36');
+INSERT INTO `sys_log_login` VALUES ('317', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-05-18 15:34:38');
+INSERT INTO `sys_log_login` VALUES ('318', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-19 16:06:02');
+INSERT INTO `sys_log_login` VALUES ('319', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-23 09:19:02');
+INSERT INTO `sys_log_login` VALUES ('320', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-05-23 09:33:56');
+INSERT INTO `sys_log_login` VALUES ('321', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-05-23 09:44:03');
+INSERT INTO `sys_log_login` VALUES ('322', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-23 09:44:09');
+INSERT INTO `sys_log_login` VALUES ('323', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-05-24 15:02:29');
+INSERT INTO `sys_log_login` VALUES ('324', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-24 15:02:38');
+INSERT INTO `sys_log_login` VALUES ('325', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-25 17:04:24');
+INSERT INTO `sys_log_login` VALUES ('326', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-27 09:57:33');
+INSERT INTO `sys_log_login` VALUES ('327', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-28 09:17:01');
+INSERT INTO `sys_log_login` VALUES ('328', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-29 10:39:30');
+INSERT INTO `sys_log_login` VALUES ('329', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-30 12:30:43');
+INSERT INTO `sys_log_login` VALUES ('330', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-30 14:29:57');
+INSERT INTO `sys_log_login` VALUES ('331', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-05-30 20:42:15');
+INSERT INTO `sys_log_login` VALUES ('332', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-05-30 20:42:21');
+INSERT INTO `sys_log_login` VALUES ('333', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-30 20:42:25');
+INSERT INTO `sys_log_login` VALUES ('334', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-05-30 20:43:45');
+INSERT INTO `sys_log_login` VALUES ('335', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-05-30 20:47:41');
+INSERT INTO `sys_log_login` VALUES ('336', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-06-01 16:15:03');
+INSERT INTO `sys_log_login` VALUES ('337', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-01 16:15:03');
+INSERT INTO `sys_log_login` VALUES ('338', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-03 10:52:01');
+INSERT INTO `sys_log_login` VALUES ('339', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-08 17:29:40');
+INSERT INTO `sys_log_login` VALUES ('340', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-06-08 17:29:51');
+INSERT INTO `sys_log_login` VALUES ('341', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-08 17:34:35');
+INSERT INTO `sys_log_login` VALUES ('342', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-13 15:16:36');
+INSERT INTO `sys_log_login` VALUES ('343', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-06-19 17:46:21');
+INSERT INTO `sys_log_login` VALUES ('344', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-19 17:46:25');
+INSERT INTO `sys_log_login` VALUES ('345', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-20 20:54:31');
+INSERT INTO `sys_log_login` VALUES ('346', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-22 12:30:51');
+INSERT INTO `sys_log_login` VALUES ('347', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-06-24 20:18:27');
+INSERT INTO `sys_log_login` VALUES ('348', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-24 20:18:33');
+INSERT INTO `sys_log_login` VALUES ('349', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-25 20:50:46');
+INSERT INTO `sys_log_login` VALUES ('350', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-26 21:46:53');
+INSERT INTO `sys_log_login` VALUES ('351', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-06-26 22:23:18');
+INSERT INTO `sys_log_login` VALUES ('352', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-06-26 22:31:31');
+INSERT INTO `sys_log_login` VALUES ('353', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-04 15:27:04');
+INSERT INTO `sys_log_login` VALUES ('354', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-06 17:25:43');
+INSERT INTO `sys_log_login` VALUES ('355', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-07 15:41:41');
+INSERT INTO `sys_log_login` VALUES ('356', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-07 15:41:50');
+INSERT INTO `sys_log_login` VALUES ('357', '测试用户', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-07 15:45:27');
+INSERT INTO `sys_log_login` VALUES ('358', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-07 15:45:32');
+INSERT INTO `sys_log_login` VALUES ('359', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-10 09:22:12');
+INSERT INTO `sys_log_login` VALUES ('360', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-10 09:22:16');
+INSERT INTO `sys_log_login` VALUES ('361', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-11 10:46:18');
+INSERT INTO `sys_log_login` VALUES ('362', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-11 11:07:49');
+INSERT INTO `sys_log_login` VALUES ('363', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-11 11:07:54');
+INSERT INTO `sys_log_login` VALUES ('364', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-13 16:28:25');
+INSERT INTO `sys_log_login` VALUES ('365', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-14 16:59:21');
+INSERT INTO `sys_log_login` VALUES ('366', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-14 16:59:27');
+INSERT INTO `sys_log_login` VALUES ('367', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-14 16:59:46');
+INSERT INTO `sys_log_login` VALUES ('368', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-14 16:59:51');
+INSERT INTO `sys_log_login` VALUES ('369', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-17 15:38:30');
+INSERT INTO `sys_log_login` VALUES ('370', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-17 15:38:39');
+INSERT INTO `sys_log_login` VALUES ('371', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-18 15:39:22');
+INSERT INTO `sys_log_login` VALUES ('372', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-18 15:39:28');
+INSERT INTO `sys_log_login` VALUES ('373', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-19 16:16:52');
+INSERT INTO `sys_log_login` VALUES ('374', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-19 16:16:57');
+INSERT INTO `sys_log_login` VALUES ('375', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-20 16:21:50');
+INSERT INTO `sys_log_login` VALUES ('376', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-21 14:58:54');
+INSERT INTO `sys_log_login` VALUES ('377', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-21 14:59:04');
+INSERT INTO `sys_log_login` VALUES ('378', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 17:54:15');
+INSERT INTO `sys_log_login` VALUES ('379', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-22 22:44:14');
+INSERT INTO `sys_log_login` VALUES ('380', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 22:44:25');
+INSERT INTO `sys_log_login` VALUES ('381', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-22 22:44:49');
+INSERT INTO `sys_log_login` VALUES ('382', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '3', '2023-07-22 22:45:05');
+INSERT INTO `sys_log_login` VALUES ('383', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-22 22:45:08');
+INSERT INTO `sys_log_login` VALUES ('384', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '3', '2023-07-22 22:45:13');
+INSERT INTO `sys_log_login` VALUES ('385', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '3', '2023-07-22 22:45:21');
+INSERT INTO `sys_log_login` VALUES ('386', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '0', '2', '2023-07-22 22:45:29');
+INSERT INTO `sys_log_login` VALUES ('387', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 22:45:35');
+INSERT INTO `sys_log_login` VALUES ('388', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-22 22:45:48');
+INSERT INTO `sys_log_login` VALUES ('389', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 22:45:54');
+INSERT INTO `sys_log_login` VALUES ('390', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-22 22:46:13');
+INSERT INTO `sys_log_login` VALUES ('391', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 22:46:24');
+INSERT INTO `sys_log_login` VALUES ('392', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-22 22:52:58');
+INSERT INTO `sys_log_login` VALUES ('393', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 22:53:03');
+INSERT INTO `sys_log_login` VALUES ('394', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-22 22:54:34');
+INSERT INTO `sys_log_login` VALUES ('395', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 22:54:43');
+INSERT INTO `sys_log_login` VALUES ('396', '测试用户2', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '1', '2023-07-22 22:55:01');
+INSERT INTO `sys_log_login` VALUES ('397', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36', '1', '0', '2023-07-22 22:55:08');
+INSERT INTO `sys_log_login` VALUES ('398', 'admin', '124.223.48.209', '内网IP', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36', '1', '0', '2023-09-11 13:54:07');
+
+-- ----------------------------
+-- Table structure for sys_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_menu`;
+CREATE TABLE `sys_menu` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `pid` bigint DEFAULT NULL COMMENT '上级ID,一级菜单为0',
+ `name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '菜单名称',
+ `url` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '菜单URL',
+ `authority` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '授权标识(多个用逗号分隔,如:sys:menu:list,sys:menu:save)',
+ `type` tinyint DEFAULT NULL COMMENT '类型 0:菜单 1:按钮 2:接口',
+ `open_style` tinyint DEFAULT NULL COMMENT '打开方式 0:内部 1:外部',
+ `icon` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '菜单图标',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_pid` (`pid`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=181 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='菜单管理';
+
+-- ----------------------------
+-- Records of sys_menu
+-- ----------------------------
+INSERT INTO `sys_menu` VALUES ('1', '0', '系统管理', null, null, '0', '0', 'icon-setting', '21', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2023-01-12 10:28:59');
+INSERT INTO `sys_menu` VALUES ('2', '1', '菜单管理', 'sys/menu/index', null, '0', '0', 'icon-menu', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('3', '2', '查看', '', 'sys:menu:list', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('4', '2', '新增', '', 'sys:menu:save', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('5', '2', '修改', '', 'sys:menu:update,sys:menu:info', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('6', '2', '删除', '', 'sys:menu:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('7', '1', '数据字典', 'sys/dict/type', '', '0', '0', 'icon-insertrowabove', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('8', '7', '查询', '', 'sys:dict:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('9', '7', '新增', '', 'sys:dict:save', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('10', '7', '修改', '', 'sys:dict:update,sys:dict:info', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('11', '7', '删除', '', 'sys:dict:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('13', '1', '岗位管理', 'sys/post/index', '', '0', '0', 'icon-solution', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:06:32');
+INSERT INTO `sys_menu` VALUES ('14', '13', '查询', '', 'sys:post:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('15', '13', '新增', '', 'sys:post:save', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('16', '13', '修改', '', 'sys:post:update,sys:post:info', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('17', '13', '删除', '', 'sys:post:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('18', '1', '机构管理', 'sys/org/index', '', '0', '0', 'icon-cluster', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:06:25');
+INSERT INTO `sys_menu` VALUES ('19', '18', '查询', '', 'sys:org:list', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('20', '18', '新增', '', 'sys:org:save', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('21', '18', '修改', '', 'sys:org:update,sys:org:info', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('22', '18', '删除', '', 'sys:org:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('23', '1', '角色管理', 'sys/role/index', '', '0', '0', 'icon-team', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:06:39');
+INSERT INTO `sys_menu` VALUES ('24', '23', '查询', '', 'sys:role:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('25', '23', '新增', '', 'sys:role:save,sys:role:menu,sys:org:list', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('26', '23', '修改', '', 'sys:role:update,sys:role:info,sys:role:menu,sys:org:list,sys:user:page', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('27', '23', '删除', '', 'sys:role:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('28', '1', '用户管理', 'sys/user/index', '', '0', '0', 'icon-user', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:06:16');
+INSERT INTO `sys_menu` VALUES ('29', '28', '查询', '', 'sys:user:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('30', '28', '新增', '', 'sys:user:save,sys:role:list', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('31', '28', '修改', '', 'sys:user:update,sys:user:info,sys:role:list', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('32', '28', '删除', '', 'sys:user:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('33', '0', '应用管理', '', '', '0', '0', 'icon-appstore', '18', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:08:19');
+INSERT INTO `sys_menu` VALUES ('34', '1', '附件管理', 'sys/attachment/index', null, '0', '0', 'icon-folder-fill', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('35', '34', '查看', '', 'sys:attachment:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('36', '34', '上传', '', 'sys:attachment:save', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('37', '34', '删除', '', 'sys:attachment:delete', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('38', '0', '日志管理', '', '', '0', '0', 'icon-filedone', '19', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:08:14');
+INSERT INTO `sys_menu` VALUES ('39', '38', '登录日志', 'sys/log/login', 'sys:log:login', '0', '0', 'icon-solution', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_menu` VALUES ('40', '33', '消息管理', '', '', '0', '0', 'icon-message', '2', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_menu` VALUES ('41', '40', '短信日志', 'message/sms/log/index', 'sms:log', '0', '0', 'icon-detail', '1', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_menu` VALUES ('42', '40', '短信平台', 'message/sms/platform/index', null, '0', '0', 'icon-whatsapp', '0', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_menu` VALUES ('43', '42', '查看', '', 'sms:platform:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_menu` VALUES ('44', '42', '新增', '', 'sms:platform:save', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_menu` VALUES ('45', '42', '修改', '', 'sms:platform:update,sms:platform:info', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_menu` VALUES ('46', '42', '删除', '', 'sms:platform:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:01:47', '10000', '2022-09-27 11:01:47');
+INSERT INTO `sys_menu` VALUES ('47', '1', '定时任务', 'quartz/schedule/index', null, '0', '0', 'icon-reloadtime', '0', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_menu` VALUES ('48', '47', '查看', '', 'schedule:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_menu` VALUES ('49', '47', '新增', '', 'schedule:save', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_menu` VALUES ('50', '47', '修改', '', 'schedule:update,schedule:info', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_menu` VALUES ('51', '47', '删除', '', 'schedule:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_menu` VALUES ('52', '47', '立即运行', '', 'schedule:run', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_menu` VALUES ('53', '47', '日志', '', 'schedule:log', '1', '0', '', '4', '0', '0', '10000', '2022-09-27 11:02:02', '10000', '2022-09-27 11:02:02');
+INSERT INTO `sys_menu` VALUES ('54', '0', '全局管理', '', '', '0', '0', 'icon-wallet', '20', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2023-01-12 10:29:04');
+INSERT INTO `sys_menu` VALUES ('55', '54', '数据项目管理', 'global-manage/project/index', '', '0', '0', 'icon-detail', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-10-09 12:41:16');
+INSERT INTO `sys_menu` VALUES ('56', '54', '数仓分层展示', 'global-manage/layer/index', '', '0', '0', 'icon-table1', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 17:12:21');
+INSERT INTO `sys_menu` VALUES ('57', '55', '查看', '', 'data-integrate:project:page', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 20:46:51', '10000', '2022-09-27 20:46:51');
+INSERT INTO `sys_menu` VALUES ('58', '55', '新增', '', 'data-integrate:project:save', '1', '0', '', '1', '0', '0', '10000', '2022-09-27 20:46:51', '10000', '2022-09-27 20:46:51');
+INSERT INTO `sys_menu` VALUES ('59', '55', '修改', '', 'data-integrate:project:update,data-integrate:project:info', '1', '0', '', '2', '0', '0', '10000', '2022-09-27 20:46:51', '10000', '2022-09-27 20:46:51');
+INSERT INTO `sys_menu` VALUES ('60', '55', '删除', '', 'data-integrate:project:delete', '1', '0', '', '3', '0', '0', '10000', '2022-09-27 20:46:51', '10000', '2022-09-27 20:46:51');
+INSERT INTO `sys_menu` VALUES ('61', '55', '项目成员', '', 'data-integrate:project:users', '1', '0', '', '0', '0', '0', '10000', '2022-09-27 21:28:39', '10000', '2022-09-27 21:28:39');
+INSERT INTO `sys_menu` VALUES ('62', '55', '添加成员', '', 'data-integrate:project:adduser', '1', '0', '', '4', '0', '0', '10000', '2022-10-07 12:00:15', '10000', '2022-10-07 12:00:25');
+INSERT INTO `sys_menu` VALUES ('63', '56', '查看', '', 'data-integrate:layer:page', '1', '0', '', '0', '0', '0', '10000', '2022-10-08 16:55:11', '10000', '2022-10-08 16:55:11');
+INSERT INTO `sys_menu` VALUES ('66', '56', '修改', '', 'data-integrate:layer:update,data-integrate:layer:info', '1', '0', '', '1', '0', '0', '10000', '2022-10-08 17:30:36', '10000', '2022-10-08 17:30:36');
+INSERT INTO `sys_menu` VALUES ('67', '0', '数据集成', '', '', '0', '0', 'icon-control', '1', '0', '0', '10000', '2022-10-09 12:40:06', '10000', '2022-10-09 12:40:06');
+INSERT INTO `sys_menu` VALUES ('68', '67', '数据库管理', 'data-integrate/database/index', '', '0', '0', 'icon-insertrowright', '0', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-10-09 12:49:18');
+INSERT INTO `sys_menu` VALUES ('69', '67', '文件管理', 'data-integrate/file-category/index', '', '0', '0', 'icon-layout', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-10-28 16:50:34');
+INSERT INTO `sys_menu` VALUES ('70', '67', '数据接入', 'data-integrate/access/index', '', '0', '0', 'icon-rotate-right', '2', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-10-09 12:51:30');
+INSERT INTO `sys_menu` VALUES ('71', '67', '贴源数据', 'data-integrate/ods/index', '', '0', '0', 'icon-border', '3', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-10-09 12:53:18');
+INSERT INTO `sys_menu` VALUES ('72', '0', '数据开发', '', '', '0', '0', 'icon-Function', '2', '0', '0', '10000', '2022-10-09 12:56:37', '10000', '2022-10-09 12:56:37');
+INSERT INTO `sys_menu` VALUES ('74', '72', '数据建模', '', '', '0', '0', 'icon-calculator-fill', '0', '0', '1', '10000', '2022-10-09 13:02:24', '10000', '2023-04-07 10:06:18');
+INSERT INTO `sys_menu` VALUES ('75', '74', '维度表', 'data-development/dim/index', '', '0', '0', 'icon-file-markdown', '0', '0', '1', '10000', '2022-10-09 13:02:24', '10000', '2023-04-07 10:06:09');
+INSERT INTO `sys_menu` VALUES ('76', '74', '明细表', 'data-development/dwd/index', '', '0', '0', 'icon-folder-fill', '1', '0', '1', '10000', '2022-10-09 13:02:24', '10000', '2023-04-07 10:06:12');
+INSERT INTO `sys_menu` VALUES ('77', '74', '汇总表', 'data-development/dws/index', '', '0', '0', 'icon-folder-open-fill', '2', '0', '1', '10000', '2022-10-09 13:02:24', '10000', '2023-04-07 10:06:15');
+INSERT INTO `sys_menu` VALUES ('78', '72', '数据生产', 'data-development/production/index', '', '0', '0', 'icon-Console-SQL', '1', '0', '0', '10000', '2022-10-09 13:02:24', '10000', '2023-01-03 21:32:34');
+INSERT INTO `sys_menu` VALUES ('80', '68', '查看', '', 'data-integrate:database:page', '1', '0', '', '0', '0', '0', '10000', '2022-10-09 17:36:31', '10000', '2022-10-09 17:36:31');
+INSERT INTO `sys_menu` VALUES ('81', '68', '新增', '', 'data-integrate:database:save', '1', '0', '', '1', '0', '0', '10000', '2022-10-09 17:36:56', '10000', '2022-10-09 17:38:02');
+INSERT INTO `sys_menu` VALUES ('82', '68', '修改', '', 'data-integrate:database:info,data-integrate:database:update', '1', '0', '', '2', '0', '0', '10000', '2022-10-09 17:37:29', '10000', '2022-10-09 17:38:10');
+INSERT INTO `sys_menu` VALUES ('83', '68', '删除', '', 'data-integrate:database:delete', '1', '0', '', '3', '0', '0', '10000', '2022-10-09 17:37:54', '10000', '2022-10-09 17:37:54');
+INSERT INTO `sys_menu` VALUES ('84', '70', '新增', '', 'data-integrate:access:save', '1', '0', '', '1', '0', '0', '10000', '2022-10-24 22:09:49', '10000', '2022-10-24 22:10:06');
+INSERT INTO `sys_menu` VALUES ('85', '70', '查看', '', 'data-integrate:access:page', '1', '0', '', '0', '0', '0', '10000', '2022-10-24 22:09:49', '10000', '2022-10-24 22:10:38');
+INSERT INTO `sys_menu` VALUES ('86', '70', '修改', '', 'data-integrate:access:update,data-integrate:access:info', '1', '0', '', '2', '0', '0', '10000', '2022-10-24 22:09:49', '10000', '2022-10-24 22:12:14');
+INSERT INTO `sys_menu` VALUES ('87', '70', '删除', '', 'data-integrate:access:delete', '1', '0', '', '3', '0', '0', '10000', '2022-10-24 22:09:49', '10000', '2022-10-24 22:12:19');
+INSERT INTO `sys_menu` VALUES ('88', '70', '发布', '', 'data-integrate:access:release', '1', '0', '', '5', '0', '0', '10000', '2022-10-27 14:32:34', '10000', '2022-10-27 14:32:34');
+INSERT INTO `sys_menu` VALUES ('89', '70', '取消发布', '', 'data-integrate:access:cancle', '1', '0', '', '6', '0', '0', '10000', '2022-10-27 14:33:06', '10000', '2022-10-27 14:33:06');
+INSERT INTO `sys_menu` VALUES ('90', '70', '手动执行', '', 'data-integrate:access:selfhandler', '1', '0', '', '7', '0', '0', '10000', '2022-10-27 22:13:07', '10000', '2022-10-27 22:13:07');
+INSERT INTO `sys_menu` VALUES ('91', '0', '数据治理', '', '', '0', '0', 'icon-insertrowbelow', '3', '0', '0', '10000', '2022-10-29 12:59:30', '10000', '2023-01-20 13:38:57');
+INSERT INTO `sys_menu` VALUES ('92', '91', '元数据', '', '', '0', '0', 'icon-file-exception', '0', '0', '0', '10000', '2022-10-29 13:01:36', '10000', '2023-01-20 13:38:53');
+INSERT INTO `sys_menu` VALUES ('93', '92', '元模型', 'data-governance/metamodel/index', '', '0', '0', 'icon-database', '0', '0', '0', '10000', '2022-10-29 13:05:35', '10000', '2023-03-28 11:35:56');
+INSERT INTO `sys_menu` VALUES ('94', '92', '元数据采集', 'data-governance/metadata-collect/index', '', '0', '0', 'icon-right-square', '1', '0', '0', '10000', '2022-10-29 13:05:35', '10000', '2023-01-20 13:38:45');
+INSERT INTO `sys_menu` VALUES ('97', '92', '元数据管理', 'data-governance/metadata-manage/index', '', '0', '0', 'icon-reconciliation', '2', '0', '0', '10000', '2022-10-29 13:05:35', '10000', '2023-01-20 13:38:42');
+INSERT INTO `sys_menu` VALUES ('98', '91', '数据血缘', 'data-governance/data-blood/index', '', '0', '0', 'icon-deleterow', '1', '0', '0', '10000', '2022-10-29 13:13:23', '10000', '2023-01-20 13:38:38');
+INSERT INTO `sys_menu` VALUES ('99', '0', '数据资产', '', '', '0', '0', 'icon-codelibrary-fill', '5', '0', '0', '10000', '2022-10-29 13:48:15', '10000', '2023-05-28 10:39:59');
+INSERT INTO `sys_menu` VALUES ('100', '99', '资产目录', 'data-assets/catalog/index', '', '0', '0', 'icon-minus-square-fill', '0', '0', '0', '10000', '2022-10-29 13:48:53', '10000', '2023-07-19 10:45:35');
+INSERT INTO `sys_menu` VALUES ('101', '99', '资产总览', 'data-assets/resource-overview/index', '', '0', '0', 'icon-aim', '1', '0', '0', '10000', '2022-10-29 13:50:30', '10000', '2023-01-20 13:39:06');
+INSERT INTO `sys_menu` VALUES ('102', '0', '数据服务', '', '', '0', '0', 'icon-transaction', '4', '0', '0', '10000', '2022-10-29 13:52:16', '10000', '2023-05-28 10:39:53');
+INSERT INTO `sys_menu` VALUES ('103', '102', 'API 目录', 'data-service/api-group/index', '', '0', '0', 'icon-filesearch', '0', '0', '0', '10000', '2022-10-29 13:57:03', '10000', '2023-02-16 14:48:41');
+INSERT INTO `sys_menu` VALUES ('104', '102', '数据可视化', 'data-service/data-visualization/index', '', '0', '0', 'icon-areachart', '1', '0', '1', '10000', '2022-10-29 13:57:03', '10000', '2023-02-16 14:48:35');
+INSERT INTO `sys_menu` VALUES ('105', '0', '数据集市', '', '', '0', '0', 'icon-reconciliation', '6', '0', '0', '10000', '2022-10-29 13:57:03', '10000', '2023-01-20 13:39:39');
+INSERT INTO `sys_menu` VALUES ('106', '105', '资产查阅', 'data-market/resource/index', '', '0', '0', 'icon-sever', '0', '0', '0', '10000', '2022-10-29 13:57:03', '10000', '2023-07-22 22:57:50');
+INSERT INTO `sys_menu` VALUES ('108', '105', '我的申请', 'data-market/my-apply/index', '', '0', '0', 'icon-user', '2', '0', '0', '10000', '2022-10-29 13:57:03', '10000', '2023-01-20 13:39:33');
+INSERT INTO `sys_menu` VALUES ('109', '105', '服务审批', 'data-market/service-check/index', '', '0', '0', 'icon-book', '3', '0', '0', '10000', '2022-10-29 13:57:03', '10000', '2023-01-20 13:39:36');
+INSERT INTO `sys_menu` VALUES ('110', '69', '分组新增', '', 'data-integrate:fileCategory:save', '1', '0', '', '0', '0', '0', '10000', '2022-11-14 15:17:40', '10000', '2022-11-14 15:17:55');
+INSERT INTO `sys_menu` VALUES ('111', '69', '分组编辑', '', 'data-integrate:fileCategory:update', '1', '0', '', '1', '0', '0', '10000', '2022-11-14 15:17:40', '10000', '2022-11-14 15:18:20');
+INSERT INTO `sys_menu` VALUES ('112', '69', '分组删除', '', 'data-integrate:fileCategory:delete', '1', '0', '', '2', '0', '0', '10000', '2022-11-14 15:17:40', '10000', '2022-11-14 15:18:44');
+INSERT INTO `sys_menu` VALUES ('113', '69', '分页查询', '', 'data-integrate:file:page', '2', '0', '', '3', '0', '0', '10000', '2022-11-18 14:22:42', '10000', '2022-11-18 14:23:04');
+INSERT INTO `sys_menu` VALUES ('114', '69', '新增', '', 'data-integrate:file:save', '1', '0', '', '4', '0', '0', '10000', '2022-11-18 14:22:42', '10000', '2022-11-18 14:25:48');
+INSERT INTO `sys_menu` VALUES ('115', '69', '修改', '', 'data-integrate:file:info,data-integrate:file:update', '1', '0', '', '5', '0', '0', '10000', '2022-11-18 14:22:42', '10000', '2022-11-18 14:26:27');
+INSERT INTO `sys_menu` VALUES ('116', '69', '删除', '', 'data-integrate:file:delete', '1', '0', '', '6', '0', '0', '10000', '2022-11-18 14:22:42', '10000', '2022-11-18 14:27:04');
+INSERT INTO `sys_menu` VALUES ('122', '143', 'Flink 集群实例', 'data-development/cluster/index', '', '0', '0', 'icon-appstore-fill', '0', '0', '0', '10000', '2022-12-03 11:21:39', '10000', '2023-01-18 13:53:44');
+INSERT INTO `sys_menu` VALUES ('123', '122', '查询', '', 'data-development:cluster:page', '2', '0', '', '0', '0', '0', '10000', '2022-12-03 11:22:35', '10000', '2022-12-03 11:22:35');
+INSERT INTO `sys_menu` VALUES ('124', '122', '添加', '', 'data-development:cluster:save', '1', '0', '', '1', '0', '0', '10000', '2022-12-03 11:23:09', '10000', '2022-12-03 11:23:09');
+INSERT INTO `sys_menu` VALUES ('125', '122', '修改', '', 'data-development:cluster:info,data-development:cluster:update', '1', '0', '', '2', '0', '0', '10000', '2022-12-03 11:24:47', '10000', '2022-12-03 11:24:47');
+INSERT INTO `sys_menu` VALUES ('126', '122', '删除', '', 'data-development:cluster:delete', '1', '0', '', '3', '0', '0', '10000', '2022-12-03 11:25:10', '10000', '2022-12-03 11:25:10');
+INSERT INTO `sys_menu` VALUES ('127', '143', 'Hadoop 集群配置', 'data-development/cluster-configuration/index', '', '0', '0', 'icon-insertrowabove', '1', '0', '0', '10000', '2022-12-21 20:39:34', '10000', '2023-01-18 13:53:50');
+INSERT INTO `sys_menu` VALUES ('128', '127', '查询', '', 'data-development:cluster-configuration:page', '1', '0', '', '0', '0', '0', '10000', '2022-12-21 20:42:02', '10000', '2022-12-21 20:42:02');
+INSERT INTO `sys_menu` VALUES ('129', '127', '添加', '', 'data-development:cluster-configuration:save', '1', '0', '', '1', '0', '0', '10000', '2022-12-21 20:42:39', '10000', '2022-12-21 20:42:39');
+INSERT INTO `sys_menu` VALUES ('130', '127', '修改', '', 'data-development:cluster-configuration:update,data-development:cluster-configuration:info', '1', '0', '', '2', '0', '0', '10000', '2022-12-21 20:43:11', '10000', '2022-12-21 20:43:11');
+INSERT INTO `sys_menu` VALUES ('131', '127', '删除', '', 'data-development:cluster-configuration:delete', '1', '0', '', '3', '0', '0', '10000', '2022-12-21 20:43:35', '10000', '2022-12-21 20:43:35');
+INSERT INTO `sys_menu` VALUES ('132', '72', '配置中心', 'data-development/sys-config/index', '', '0', '0', 'icon-project', '7', '0', '0', '10000', '2022-12-28 17:45:56', '10000', '2023-01-14 19:13:59');
+INSERT INTO `sys_menu` VALUES ('133', '72', '运维中心', 'data-development/task-history/index', '', '0', '0', 'icon-send', '4', '0', '0', '10000', '2023-01-03 21:30:58', '10000', '2023-01-14 19:13:11');
+INSERT INTO `sys_menu` VALUES ('135', '142', '调度管理', 'data-development/schedule/index', '', '0', '0', 'icon-calendar-check', '0', '0', '0', '10000', '2023-01-14 19:11:46', '10000', '2023-01-18 13:52:27');
+INSERT INTO `sys_menu` VALUES ('136', '135', '查询', '', 'data-development:schedule:page', '2', '0', '', '0', '0', '0', '10000', '2023-01-14 19:17:04', '10000', '2023-01-14 19:17:04');
+INSERT INTO `sys_menu` VALUES ('137', '135', '新增', '', 'data-development:schedule:save', '1', '0', '', '1', '0', '0', '10000', '2023-01-14 19:17:28', '10000', '2023-01-14 19:17:28');
+INSERT INTO `sys_menu` VALUES ('138', '135', '编辑', '', 'data-development:schedule:info,data-development:schedule:update', '1', '0', '', '2', '0', '0', '10000', '2023-01-14 19:17:54', '10000', '2023-01-14 19:17:54');
+INSERT INTO `sys_menu` VALUES ('139', '135', '删除', '', 'data-development:schedule:delete', '1', '0', '', '3', '0', '0', '10000', '2023-01-14 19:18:13', '10000', '2023-01-14 19:18:13');
+INSERT INTO `sys_menu` VALUES ('141', '135', '执行', '', 'data-development:schedule:run', '1', '0', '', '4', '0', '0', '10000', '2023-01-17 17:05:56', '10000', '2023-01-17 17:06:26');
+INSERT INTO `sys_menu` VALUES ('142', '72', '调度中心', '', '', '0', '0', 'icon-calendar', '3', '0', '0', '10000', '2023-01-18 13:49:14', '10000', '2023-01-18 13:51:10');
+INSERT INTO `sys_menu` VALUES ('143', '72', '资源中心', '', '', '0', '0', 'icon-Partition', '6', '0', '0', '10000', '2023-01-18 13:52:46', '10000', '2023-01-18 13:53:37');
+INSERT INTO `sys_menu` VALUES ('144', '142', '调度记录', 'data-development/schedule-record/index', '', '0', '0', 'icon-insertrowabove', '1', '0', '0', '10000', '2023-01-18 15:59:03', '10000', '2023-01-18 15:59:22');
+INSERT INTO `sys_menu` VALUES ('145', '144', '查询', '', 'data-development:schedule:record:page', '2', '0', '', '0', '0', '0', '10000', '2023-01-18 16:00:04', '10000', '2023-01-18 16:00:04');
+INSERT INTO `sys_menu` VALUES ('146', '144', '删除', '', 'data-development:schedule:record:delete', '1', '0', '', '1', '0', '0', '10000', '2023-01-18 16:00:30', '10000', '2023-01-18 16:00:30');
+INSERT INTO `sys_menu` VALUES ('147', '135', '发布', '', 'data-development:schedule:release', '1', '0', '', '5', '0', '0', '10000', '2023-01-19 21:45:38', '10000', '2023-01-19 21:46:34');
+INSERT INTO `sys_menu` VALUES ('148', '135', '取消发布', '', 'data-development:schedule:cancle', '1', '0', '', '6', '0', '0', '10000', '2023-01-19 21:47:00', '10000', '2023-01-19 21:47:00');
+INSERT INTO `sys_menu` VALUES ('149', '103', '修改', '', 'data-service:api-group:info,data-service:api-group:update', '2', '0', '', '1', '0', '0', '10000', '2023-01-30 11:41:31', '10000', '2023-02-06 16:04:35');
+INSERT INTO `sys_menu` VALUES ('150', '103', '删除', '', 'data-service:api-group:delete', '2', '0', '', '3', '0', '0', '10000', '2023-01-30 11:42:01', '10000', '2023-02-06 16:04:50');
+INSERT INTO `sys_menu` VALUES ('151', '103', '添加', '', 'data-service:api-group:save', '2', '0', '', '2', '0', '0', '10000', '2023-01-30 11:43:09', '10000', '2023-01-30 11:43:09');
+INSERT INTO `sys_menu` VALUES ('152', '103', '查看API', '', 'data-service:api-config:page', '2', '0', '', '0', '0', '0', '10000', '2023-02-06 16:04:24', '10000', '2023-02-06 16:11:16');
+INSERT INTO `sys_menu` VALUES ('153', '103', '新增API', '', 'data-service:api-config:save', '1', '0', '', '0', '0', '0', '10000', '2023-02-06 16:12:02', '10000', '2023-02-06 16:12:02');
+INSERT INTO `sys_menu` VALUES ('154', '103', '修改API', '', 'data-service:api-config:update,data-service:api-config:info', '1', '0', '', '0', '0', '0', '10000', '2023-02-06 16:12:33', '10000', '2023-02-06 16:12:33');
+INSERT INTO `sys_menu` VALUES ('155', '103', '删除API', '', 'data-service:api-config:delete', '1', '0', '', '0', '0', '0', '10000', '2023-02-06 16:12:58', '10000', '2023-02-14 09:56:38');
+INSERT INTO `sys_menu` VALUES ('156', '103', '上线', '', 'data-service:api-config:online', '1', '0', '', '0', '0', '0', '10000', '2023-02-15 11:15:52', '10000', '2023-02-15 11:16:23');
+INSERT INTO `sys_menu` VALUES ('157', '103', '下线', '', 'data-service:api-config:offline', '1', '0', '', '0', '0', '0', '10000', '2023-02-15 11:16:37', '10000', '2023-02-15 11:16:37');
+INSERT INTO `sys_menu` VALUES ('158', '102', 'API 权限', 'data-service/app/index', '', '0', '0', 'icon-propertysafety', '1', '0', '0', '10000', '2023-02-16 14:48:26', '10000', '2023-02-16 14:56:47');
+INSERT INTO `sys_menu` VALUES ('159', '158', '查询', '', 'data-service:app:page', '2', '0', '', '0', '0', '0', '10000', '2023-02-16 14:50:15', '10000', '2023-02-16 14:50:15');
+INSERT INTO `sys_menu` VALUES ('160', '158', '保存', '', 'data-service:app:save', '1', '0', '', '1', '0', '0', '10000', '2023-02-16 14:50:39', '10000', '2023-02-16 14:50:39');
+INSERT INTO `sys_menu` VALUES ('161', '158', '更新', '', 'data-service:app:update,data-service:app:info', '1', '0', '', '2', '0', '0', '10000', '2023-02-16 14:51:10', '10000', '2023-02-16 14:51:10');
+INSERT INTO `sys_menu` VALUES ('162', '158', '删除', '', 'data-service:app:delete', '1', '0', '', '3', '0', '0', '10000', '2023-02-16 14:51:28', '10000', '2023-02-16 14:51:39');
+INSERT INTO `sys_menu` VALUES ('163', '158', '授权', '', 'data-service:app:auth', '1', '0', '', '4', '0', '0', '10000', '2023-02-17 11:37:39', '10000', '2023-02-17 11:37:39');
+INSERT INTO `sys_menu` VALUES ('164', '158', '取消授权', '', 'data-service:app:cancel-auth', '1', '0', '', '5', '0', '0', '10000', '2023-02-20 14:11:42', '10000', '2023-02-20 14:13:31');
+INSERT INTO `sys_menu` VALUES ('165', '102', 'API 日志', 'data-service/log/index', '', '0', '0', 'icon-detail', '2', '0', '0', '10000', '2023-02-22 14:47:37', '10000', '2023-02-22 14:48:31');
+INSERT INTO `sys_menu` VALUES ('166', '165', '查询', '', 'data-service:log:page', '2', '0', '', '0', '0', '0', '10000', '2023-02-22 14:49:07', '10000', '2023-02-22 14:49:07');
+INSERT INTO `sys_menu` VALUES ('167', '165', '删除', '', 'data-service:log:delete', '1', '0', '', '1', '0', '0', '10000', '2023-02-22 14:49:25', '10000', '2023-02-22 14:49:25');
+INSERT INTO `sys_menu` VALUES ('168', '94', '查询', '', 'data-governance:metadata-collect:page', '2', '0', '', '0', '0', '0', '10000', '2023-04-03 10:39:26', '10000', '2023-04-03 10:39:26');
+INSERT INTO `sys_menu` VALUES ('169', '94', '编辑', '', 'data-governance:metadata-collect:info,data-governance:metadata-collect:update', '1', '0', '', '1', '0', '0', '10000', '2023-04-03 10:40:06', '10000', '2023-04-03 10:40:06');
+INSERT INTO `sys_menu` VALUES ('170', '94', '保存', '', 'data-governance:metadata-collect:save', '1', '0', '', '2', '0', '0', '10000', '2023-04-03 10:40:25', '10000', '2023-04-03 10:40:42');
+INSERT INTO `sys_menu` VALUES ('171', '94', '删除', '', 'data-governance:metadata-collect:delete', '1', '0', '', '3', '0', '0', '10000', '2023-04-03 10:41:05', '10000', '2023-04-03 10:41:05');
+INSERT INTO `sys_menu` VALUES ('172', '94', '发布', '', 'data-governance:metadata-collect:release', '1', '0', '', '4', '0', '0', '10000', '2023-04-05 12:21:56', '10000', '2023-04-05 12:21:56');
+INSERT INTO `sys_menu` VALUES ('173', '94', '取消发布', '', 'data-governance:metadata-collect:cancel', '1', '0', '', '5', '0', '0', '10000', '2023-04-05 12:22:19', '10000', '2023-04-05 12:22:19');
+INSERT INTO `sys_menu` VALUES ('174', '94', '执行', '', 'data-governance:metadata-collect:hand-run', '1', '0', '', '6', '0', '0', '10000', '2023-04-06 09:59:53', '10000', '2023-04-06 09:59:53');
+INSERT INTO `sys_menu` VALUES ('175', '91', '数据标准', '', '', '0', '0', 'icon-calculator', '2', '0', '0', '10000', '2023-05-08 09:39:12', '10000', '2023-05-08 09:39:25');
+INSERT INTO `sys_menu` VALUES ('176', '175', '标准管理', 'data-governance/data-standard/index', '', '0', '0', 'icon-wallet', '0', '0', '0', '10000', '2023-05-08 09:41:37', '10000', '2023-05-08 09:42:17');
+INSERT INTO `sys_menu` VALUES ('177', '91', '数据质量', '', '', '0', '0', 'icon-creditcard', '3', '0', '0', '10000', '2023-05-28 09:46:54', '10000', '2023-05-28 09:46:54');
+INSERT INTO `sys_menu` VALUES ('178', '177', '质量规则', 'data-governance/quality-rule/index', '', '0', '0', 'icon-USB-fill', '0', '0', '0', '10000', '2023-05-28 09:47:52', '10000', '2023-05-28 09:47:52');
+INSERT INTO `sys_menu` VALUES ('179', '177', '规则配置', 'data-governance/quality-rule/rule-category', '', '0', '0', 'icon-formatpainter-fill', '1', '0', '0', '10000', '2023-05-29 10:40:34', '10000', '2023-05-29 10:40:56');
+INSERT INTO `sys_menu` VALUES ('180', '177', '质量任务', 'data-governance/quality-task/index', '', '0', '0', 'icon-database-fill', '2', '0', '0', '10000', '2023-06-24 21:43:46', '10000', '2023-06-24 21:44:14');
+
+-- ----------------------------
+-- Table structure for sys_org
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_org`;
+CREATE TABLE `sys_org` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `pid` bigint DEFAULT NULL COMMENT '上级ID',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '机构名称',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_pid` (`pid`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='机构管理';
+
+-- ----------------------------
+-- Records of sys_org
+-- ----------------------------
+INSERT INTO `sys_org` VALUES ('1', '0', '测试机构', '0', '0', '0', '10002', '10000', '2022-10-08 11:16:10', '10000', '2022-10-08 11:16:10');
+INSERT INTO `sys_org` VALUES ('2', '0', '测试项目2机构', '0', '0', '0', '10004', '10000', '2022-11-25 19:59:21', '10000', '2022-11-25 19:59:21');
+INSERT INTO `sys_org` VALUES ('3', '2', '测试项目2子机构', '0', '0', '0', '10004', '10000', '2022-11-25 19:59:38', '10000', '2022-11-25 19:59:38');
+
+-- ----------------------------
+-- Table structure for sys_post
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_post`;
+CREATE TABLE `sys_post` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `post_code` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '岗位编码',
+ `post_name` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '岗位名称',
+ `sort` int DEFAULT NULL COMMENT '排序',
+ `status` tinyint DEFAULT NULL COMMENT '状态 0:停用 1:正常',
+ `project_id` bigint NOT NULL COMMENT '项目id',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='岗位管理';
+
+-- ----------------------------
+-- Records of sys_post
+-- ----------------------------
+INSERT INTO `sys_post` VALUES ('1', 'test', '测试岗位', '0', '1', '10002', '0', '0', '10000', '2022-10-08 11:16:25', '10000', '2022-10-08 11:16:25');
+INSERT INTO `sys_post` VALUES ('2', '测试项目2岗位', '测试项目2', '0', '1', '10004', '0', '0', '10000', '2022-11-25 19:59:59', '10000', '2022-11-25 20:00:09');
+
+-- ----------------------------
+-- Table structure for sys_role
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_role`;
+CREATE TABLE `sys_role` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '角色名称',
+ `remark` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '备注',
+ `data_scope` tinyint DEFAULT NULL COMMENT '数据范围 0:全部数据 1:本部门及子部门数据 2:本部门数据 3:本人数据 4:自定义数据',
+ `org_id` bigint DEFAULT NULL COMMENT '机构ID',
+ `project_id` int NOT NULL COMMENT '项目id',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_org_id` (`org_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='角色管理';
+
+-- ----------------------------
+-- Records of sys_role
+-- ----------------------------
+INSERT INTO `sys_role` VALUES ('1', '测试角色', '', '3', null, '10002', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-11-25 20:01:43');
+INSERT INTO `sys_role` VALUES ('2', '测试项目2管理员', '测试项目2管理员', '0', null, '10004', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-26 12:09:12');
+INSERT INTO `sys_role` VALUES ('3', '测试项目角色', '测试项目角色', '0', null, '10002', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2023-09-11 14:01:04');
+
+-- ----------------------------
+-- Table structure for sys_role_data_scope
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_role_data_scope`;
+CREATE TABLE `sys_role_data_scope` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `role_id` bigint DEFAULT NULL COMMENT '角色ID',
+ `org_id` bigint DEFAULT NULL COMMENT '机构ID',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_role_id` (`role_id`) USING BTREE
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='角色数据权限';
+
+-- ----------------------------
+-- Records of sys_role_data_scope
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for sys_role_menu
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_role_menu`;
+CREATE TABLE `sys_role_menu` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `role_id` bigint DEFAULT NULL COMMENT '角色ID',
+ `menu_id` bigint DEFAULT NULL COMMENT '菜单ID',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_role_id` (`role_id`) USING BTREE,
+ KEY `idx_menu_id` (`menu_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=189 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='角色菜单关系';
+
+-- ----------------------------
+-- Records of sys_role_menu
+-- ----------------------------
+INSERT INTO `sys_role_menu` VALUES ('1', '1', '54', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('2', '1', '55', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('3', '1', '57', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('4', '1', '61', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('5', '1', '58', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('6', '1', '59', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('7', '1', '60', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('8', '1', '62', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('9', '1', '56', '0', '1', '10000', '2022-10-08 11:16:41', '10000', '2022-10-08 11:16:41');
+INSERT INTO `sys_role_menu` VALUES ('10', '1', '63', '0', '1', '10000', '2022-10-17 13:49:02', '10000', '2022-10-17 13:49:02');
+INSERT INTO `sys_role_menu` VALUES ('11', '2', '1', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('12', '2', '2', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('13', '2', '67', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('14', '2', '68', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('15', '2', '80', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('16', '2', '81', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('17', '2', '82', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('18', '2', '83', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('19', '2', '69', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('20', '2', '110', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('21', '2', '111', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('22', '2', '112', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('23', '2', '113', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('24', '2', '114', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('25', '2', '115', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('26', '2', '116', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('27', '2', '70', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('28', '2', '85', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('29', '2', '84', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('30', '2', '86', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('31', '2', '87', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('32', '2', '88', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('33', '2', '89', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('34', '2', '90', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('35', '2', '71', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('36', '2', '72', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('37', '2', '73', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('38', '2', '74', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('39', '2', '75', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('40', '2', '76', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('41', '2', '77', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('42', '2', '78', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('43', '2', '79', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('44', '2', '91', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('45', '2', '92', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('46', '2', '93', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('47', '2', '94', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('48', '2', '97', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('49', '2', '98', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('50', '2', '99', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('51', '2', '100', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('52', '2', '101', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('53', '2', '102', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('54', '2', '103', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('55', '2', '104', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('56', '2', '105', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('57', '2', '106', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('58', '2', '107', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('59', '2', '108', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('60', '2', '109', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('61', '2', '54', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('62', '2', '55', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('63', '2', '57', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('64', '2', '61', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('65', '2', '58', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('66', '2', '59', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('67', '2', '60', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('68', '2', '62', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('69', '2', '56', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('70', '2', '63', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('71', '2', '66', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('72', '2', '33', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('73', '2', '40', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('74', '2', '42', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('75', '2', '43', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('76', '2', '44', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('77', '2', '45', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('78', '2', '46', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('79', '2', '41', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('80', '2', '38', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('81', '2', '39', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('82', '2', '3', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('83', '2', '28', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('84', '2', '29', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('85', '2', '30', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('86', '2', '31', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('87', '2', '32', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('88', '2', '18', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('89', '2', '19', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('90', '2', '20', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('91', '2', '21', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('92', '2', '22', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('93', '2', '13', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('94', '2', '14', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('95', '2', '15', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('96', '2', '16', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('97', '2', '17', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('98', '2', '23', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('99', '2', '24', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('100', '2', '25', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('101', '2', '26', '0', '1', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('102', '2', '27', '0', '0', '10000', '2022-11-25 20:01:22', '10000', '2022-11-25 20:01:22');
+INSERT INTO `sys_role_menu` VALUES ('103', '3', '54', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('104', '3', '55', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('105', '3', '56', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('106', '3', '1', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('107', '3', '2', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('108', '3', '67', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('109', '3', '68', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('110', '3', '80', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('111', '3', '81', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('112', '3', '82', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('113', '3', '83', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('114', '3', '69', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('115', '3', '110', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('116', '3', '111', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('117', '3', '112', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('118', '3', '113', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('119', '3', '114', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('120', '3', '115', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('121', '3', '116', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('122', '3', '70', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('123', '3', '85', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('124', '3', '84', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('125', '3', '86', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('126', '3', '87', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('127', '3', '88', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('128', '3', '89', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('129', '3', '90', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('130', '3', '71', '0', '0', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('131', '3', '72', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('132', '3', '73', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('133', '3', '74', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('134', '3', '75', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('135', '3', '76', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('136', '3', '77', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('137', '3', '78', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('138', '3', '79', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('139', '3', '91', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('140', '3', '92', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('141', '3', '93', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('142', '3', '94', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('143', '3', '97', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('144', '3', '98', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('145', '3', '99', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('146', '3', '100', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('147', '3', '101', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('148', '3', '102', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('149', '3', '103', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('150', '3', '104', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('151', '3', '105', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('152', '3', '106', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('153', '3', '107', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('154', '3', '108', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('155', '3', '109', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('156', '3', '57', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('157', '3', '61', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('158', '3', '62', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('159', '3', '63', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('160', '3', '3', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('161', '3', '28', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('162', '3', '29', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('163', '3', '30', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('164', '3', '31', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('165', '3', '32', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('166', '3', '18', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('167', '3', '19', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('168', '3', '20', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('169', '3', '21', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('170', '3', '22', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('171', '3', '13', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('172', '3', '14', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('173', '3', '15', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('174', '3', '16', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('175', '3', '17', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('176', '3', '23', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('177', '3', '24', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('178', '3', '25', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('179', '3', '26', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('180', '3', '27', '0', '1', '10000', '2022-11-25 20:10:26', '10000', '2022-11-25 20:10:26');
+INSERT INTO `sys_role_menu` VALUES ('181', '3', '26', '0', '1', '10000', '2022-11-26 12:07:15', '10000', '2022-11-26 12:07:15');
+INSERT INTO `sys_role_menu` VALUES ('182', '3', '58', '0', '1', '10000', '2022-11-26 12:10:00', '10000', '2022-11-26 12:10:00');
+INSERT INTO `sys_role_menu` VALUES ('183', '3', '59', '0', '1', '10000', '2022-11-26 12:10:00', '10000', '2022-11-26 12:10:00');
+INSERT INTO `sys_role_menu` VALUES ('184', '3', '60', '0', '1', '10000', '2022-11-26 12:10:00', '10000', '2022-11-26 12:10:00');
+INSERT INTO `sys_role_menu` VALUES ('185', '3', '105', '0', '1', '10000', '2023-07-22 22:44:46', '10000', '2023-07-22 22:44:46');
+INSERT INTO `sys_role_menu` VALUES ('186', '3', '106', '0', '1', '10000', '2023-07-22 22:44:46', '10000', '2023-07-22 22:44:46');
+INSERT INTO `sys_role_menu` VALUES ('187', '3', '108', '0', '1', '10000', '2023-07-22 22:44:46', '10000', '2023-07-22 22:44:46');
+INSERT INTO `sys_role_menu` VALUES ('188', '3', '109', '0', '1', '10000', '2023-07-22 22:44:46', '10000', '2023-07-22 22:44:46');
+
+-- ----------------------------
+-- Table structure for sys_user
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_user`;
+CREATE TABLE `sys_user` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '用户名',
+ `password` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '密码',
+ `real_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '姓名',
+ `avatar` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '头像',
+ `gender` tinyint DEFAULT NULL COMMENT '性别 0:男 1:女 2:未知',
+ `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '邮箱',
+ `mobile` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '手机号',
+ `org_id` bigint DEFAULT NULL COMMENT '机构ID',
+ `super_admin` tinyint DEFAULT NULL COMMENT '超级管理员 0:否 1:是',
+ `status` tinyint DEFAULT NULL COMMENT '状态 0:停用 1:正常',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=10003 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户管理';
+
+-- ----------------------------
+-- Records of sys_user
+-- ----------------------------
+INSERT INTO `sys_user` VALUES ('10000', 'admin', '{bcrypt}$2a$10$mW/yJPHjyueQ1g26WNBz0uxVPa0GQdJO1fFZmqdkqgMTGnyszlXxu', 'admin', 'https://www.zrxlh.top/wp-content/uploads/2020/03/cropped-20150917091836_dFNP4-1.jpeg', '0', '985134801@qq.com', '13042238929', null, '1', '1', '0', '0', '10000', '2022-09-27 11:01:26', '10000', '2022-09-27 11:01:26');
+INSERT INTO `sys_user` VALUES ('10001', '测试用户', '{bcrypt}$2a$10$fbYBagGEe60fcaRzKHKDSOOdiQPlHgHGsDzE2WmnoRD5bR8oEiUxy', '测试用户', null, '0', '', '13677677652', '1', '0', '1', '0', '0', '10000', '2022-10-08 11:17:16', '10000', '2023-07-22 22:46:11');
+INSERT INTO `sys_user` VALUES ('10002', '测试用户2', '{bcrypt}$2a$10$Ven/NC9X.Ii7mlcxpH2wceVTviAn9228vIu6R1oXwHI4Ac3IaB7c2', '测试用户2', null, '0', '', '13566566565', '1', '0', '1', '0', '0', '10000', '2022-10-08 16:37:20', '10000', '2023-07-22 22:46:08');
+
+-- ----------------------------
+-- Table structure for sys_user_post
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_user_post`;
+CREATE TABLE `sys_user_post` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `user_id` bigint DEFAULT NULL COMMENT '用户ID',
+ `post_id` bigint DEFAULT NULL COMMENT '岗位ID',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_user_id` (`user_id`) USING BTREE,
+ KEY `idx_post_id` (`post_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户岗位关系';
+
+-- ----------------------------
+-- Records of sys_user_post
+-- ----------------------------
+INSERT INTO `sys_user_post` VALUES ('1', '10001', '1', '0', '0', '10000', '2022-10-08 11:17:16', '10000', '2022-10-08 11:17:16');
+INSERT INTO `sys_user_post` VALUES ('2', '10002', '1', '0', '0', '10000', '2022-10-08 16:37:20', '10000', '2022-10-08 16:37:20');
+
+-- ----------------------------
+-- Table structure for sys_user_role
+-- ----------------------------
+DROP TABLE IF EXISTS `sys_user_role`;
+CREATE TABLE `sys_user_role` (
+ `id` bigint NOT NULL AUTO_INCREMENT COMMENT 'id',
+ `role_id` bigint DEFAULT NULL COMMENT '角色ID',
+ `user_id` bigint DEFAULT NULL COMMENT '用户ID',
+ `version` int DEFAULT NULL COMMENT '版本号',
+ `deleted` tinyint DEFAULT NULL COMMENT '删除标识 0:正常 1:已删除',
+ `creator` bigint DEFAULT NULL COMMENT '创建者',
+ `create_time` datetime DEFAULT NULL COMMENT '创建时间',
+ `updater` bigint DEFAULT NULL COMMENT '更新者',
+ `update_time` datetime DEFAULT NULL COMMENT '更新时间',
+ PRIMARY KEY (`id`) USING BTREE,
+ KEY `idx_role_id` (`role_id`) USING BTREE,
+ KEY `idx_user_id` (`user_id`) USING BTREE
+) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC COMMENT='用户角色关系';
+
+-- ----------------------------
+-- Records of sys_user_role
+-- ----------------------------
+INSERT INTO `sys_user_role` VALUES ('1', '1', '10001', '0', '1', '10000', '2022-10-08 11:17:16', '10000', '2022-10-08 11:17:16');
+INSERT INTO `sys_user_role` VALUES ('2', '1', '10002', '0', '1', '10000', '2022-10-08 16:37:20', '10000', '2022-10-08 16:37:20');
+INSERT INTO `sys_user_role` VALUES ('3', '3', '10001', '0', '1', '10000', '2022-11-25 21:43:23', '10000', '2022-11-25 21:43:23');
+INSERT INTO `sys_user_role` VALUES ('4', '3', '10001', '0', '1', '10001', '2022-11-26 13:04:21', '10001', '2022-11-26 13:04:21');
+INSERT INTO `sys_user_role` VALUES ('5', '3', '10001', '0', '0', '10001', '2022-11-26 13:04:40', '10001', '2022-11-26 13:04:40');
+INSERT INTO `sys_user_role` VALUES ('6', '3', '10002', '0', '0', '10000', '2023-07-22 22:46:08', '10000', '2023-07-22 22:46:08');
diff --git a/srt-cloud-api/pom.xml b/srt-cloud-api/pom.xml
new file mode 100644
index 0000000..cd08cbf
--- /dev/null
+++ b/srt-cloud-api/pom.xml
@@ -0,0 +1,132 @@
+
+
+ net.srt
+ srt-cloud
+ 2.0.0
+
+ 4.0.0
+ srt-cloud-api
+ jar
+
+
+
+ net.srt
+ srt-cloud-common
+ 2.0.0
+
+
+ net.srt
+ srt-cloud-dbswitch
+ 2.0.0
+
+
+
+ org.springframework.boot
+ spring-boot-starter-jdbc
+
+
+ jsqlparser
+ com.github.jsqlparser
+
+
+ mysql
+ mysql-connector-java
+
+
+ mysql
+ mysql-connector-java
+
+
+ org.postgresql
+ postgresql
+
+
+ org.postgresql
+ postgresql
+
+
+ com.oracle.ojdbc
+ ojdbc8
+
+
+ com.oracle.ojdbc
+ orai18n
+
+
+ com.microsoft.sqlserver
+ sqljdbc6.0
+
+
+ com.microsoft.sqlserver
+ sqljdbc6.0
+
+
+ com.microsoft.sqlserver
+ msbase
+
+
+ com.microsoft.sqlserver
+ msutil
+
+
+ com.microsoft.sqlserver
+ mssqlserver
+
+
+ com.pivotal
+ greenplum-jdbc
+
+
+ com.dameng
+ dm-jdbc
+
+
+ com.kingbase
+ kingbase-jdbc
+
+
+ org.mariadb.jdbc
+ mariadb-java-client
+
+
+ com.ibm.db2.jcc
+ db2jcc
+
+
+ org.xerial
+ sqlite-jdbc
+
+
+ org.apache.hive
+ hive-jdbc
+
+
+ com.sybase
+ jconn4
+
+
+ com.oscar
+ oscar-jdbc
+
+
+ com.gbase.jdbc
+ gbase-connector-java
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-openfeign
+
+
+ org.springframework.cloud
+ spring-cloud-starter-loadbalancer
+
+
+ com.github.ben-manes.caffeine
+ caffeine
+
+
+
+
diff --git a/srt-cloud-api/src/main/java/net/srt/api/ServerNames.java b/srt-cloud-api/src/main/java/net/srt/api/ServerNames.java
new file mode 100644
index 0000000..1f4d7e2
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/ServerNames.java
@@ -0,0 +1,41 @@
+package net.srt.api;
+
+/**
+ * 服务名称集合
+ *
+ * @author 阿沐 babamu@126.com
+ */
+public interface ServerNames {
+ /**
+ * srt-cloud-gateway 服务名
+ */
+ String GATEWAY_SERVER_NAME = "srt-cloud-gateway";
+ /**
+ * srt-cloud-system 服务名
+ */
+ String SYSTEM_SERVER_NAME = "srt-cloud-system";
+ /**
+ * srt-cloud-message 服务名
+ */
+ String MESSAGE_SERVER_NAME = "srt-cloud-message";
+
+ /**
+ * srt-cloud-quartz 服务名
+ */
+ String QUARTZ_SERVER_NAME = "srt-cloud-quartz";
+
+ /**
+ * srt-cloud-data-integrate 服务名
+ */
+ String DATA_INTEGRATE_NAME = "srt-cloud-data-integrate";
+
+ /**
+ * srt-cloud-data-development 服务名
+ */
+ String DATA_DEVELOPMENT_NAME = "srt-cloud-data-development";
+
+ /**
+ * srt-cloud-data-governance 服务名
+ */
+ String DATA_GOVERNANCE_NAME = "srt-cloud-data-governance";
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/assets/constant/ResourceOpenType.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/assets/constant/ResourceOpenType.java
new file mode 100644
index 0000000..a067255
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/assets/constant/ResourceOpenType.java
@@ -0,0 +1,26 @@
+package net.srt.api.module.data.assets.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 接入方式
+ */
+@Getter
+@AllArgsConstructor
+public enum ResourceOpenType {
+ /**
+ * 全部
+ */
+ ALL(1),
+ /**
+ * 角色
+ */
+ ROLE(2),
+ /**
+ * 用户
+ */
+ USER(3);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataAccessApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataAccessApi.java
new file mode 100644
index 0000000..b10a460
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataAccessApi.java
@@ -0,0 +1,53 @@
+package net.srt.api.module.data.integrate;
+
+import net.srt.api.ServerNames;
+import net.srt.api.module.data.integrate.dto.DataAccessDto;
+import net.srt.api.module.data.integrate.dto.DataAccessTaskDto;
+import net.srt.api.module.data.integrate.dto.PreviewNameMapperDto;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
+import srt.cloud.framework.dbswitch.data.domain.DbSwitchResult;
+import srt.cloud.framework.dbswitch.data.domain.DbSwitchTableResult;
+
+import java.util.List;
+
+/**
+ * @ClassName DataAccessApi
+ * @Author zrx
+ * @Date 2022/10/26 11:39
+ */
+@FeignClient(name = ServerNames.DATA_INTEGRATE_NAME, contextId = "data-integrate-access")
+public interface DataAccessApi {
+ /**
+ * 根据id获取
+ */
+ @GetMapping(value = "api/data/integrate/access/{id}")
+ Result getById(@PathVariable Long id);
+
+ @PostMapping(value = "api/data/integrate/access/task")
+ Result addTask(@RequestBody DataAccessTaskDto dataAccessTaskDto);
+
+ @PutMapping(value = "api/data/integrate/access/task")
+ void updateTask(@RequestBody DataAccessTaskDto dataAccessTaskDto);
+
+ @PostMapping(value = "api/data/integrate/access/task-detail/{projectId}/{taskId}/{dataAccessId}")
+ void addTaskDetail(@PathVariable Long projectId, @PathVariable Long taskId, @PathVariable Long dataAccessId, @RequestBody DbSwitchTableResult tableResult);
+
+ /**
+ * 根据任务id获取任务
+ */
+ @GetMapping(value = "api/quartz/access-task/{id}")
+ Result getTaskById(@PathVariable Long id);
+
+ @GetMapping(value = "api/quartz/access-task/table-map/{id}")
+ Result> getTableMap(@PathVariable Long id);
+
+ @GetMapping(value = "api/quartz/access-task/column-map/{id}")
+ Result> getColumnMap(@PathVariable Long id, @RequestParam String tableName);
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataDatabaseApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataDatabaseApi.java
new file mode 100644
index 0000000..59a7590
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataDatabaseApi.java
@@ -0,0 +1,22 @@
+package net.srt.api.module.data.integrate;
+
+import net.srt.api.ServerNames;
+import net.srt.api.module.data.integrate.dto.DataDatabaseDto;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+/**
+ * @ClassName DataAccessApi
+ * @Author zrx
+ * @Date 2022/10/26 11:39
+ */
+@FeignClient(name = ServerNames.DATA_INTEGRATE_NAME, contextId = "data-integrate-database")
+public interface DataDatabaseApi {
+ /**
+ * 根据id获取
+ */
+ @GetMapping(value = "api/data/integrate/database/{id}")
+ Result getById(@PathVariable Long id);
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataOdsApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataOdsApi.java
new file mode 100644
index 0000000..f10a099
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataOdsApi.java
@@ -0,0 +1,22 @@
+package net.srt.api.module.data.integrate;
+
+import net.srt.api.ServerNames;
+import net.srt.api.module.data.integrate.dto.DataOdsDto;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+/**
+ * @ClassName DataAccessApi
+ * @Author zrx
+ * @Date 2022/10/26 11:39
+ */
+@FeignClient(name = ServerNames.DATA_INTEGRATE_NAME, contextId = "data-integrate-ods")
+public interface DataOdsApi {
+ /**
+ * 添加ods
+ */
+ @PostMapping(value = "api/data/integrate/ods")
+ Result addOds(@RequestBody DataOdsDto dataOdsDto);
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataProjectApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataProjectApi.java
new file mode 100644
index 0000000..48afac2
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/DataProjectApi.java
@@ -0,0 +1,31 @@
+package net.srt.api.module.data.integrate;
+
+import net.srt.api.ServerNames;
+import net.srt.framework.common.cache.bean.DataProjectCacheBean;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+
+import java.util.List;
+
+/**
+ * @ClassName DataAccessApi
+ * @Author zrx
+ * @Date 2022/10/26 11:39
+ */
+@FeignClient(name = ServerNames.DATA_INTEGRATE_NAME, contextId = "data-integrate-project")
+public interface DataProjectApi {
+ /**
+ * 根据id获取
+ */
+ @GetMapping(value = "api/data/integrate/project/list-all")
+ Result> getProjectList();
+
+ /**
+ * 根据id获取
+ */
+ @GetMapping(value = "api/data/integrate/project/{id}")
+ Result getById(@PathVariable Long id);
+
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/AccessMode.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/AccessMode.java
new file mode 100644
index 0000000..4b2de85
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/AccessMode.java
@@ -0,0 +1,22 @@
+package net.srt.api.module.data.integrate.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 接入方式
+ */
+@Getter
+@AllArgsConstructor
+public enum AccessMode {
+ /**
+ * ods接入
+ */
+ ODS(1),
+ /**
+ * 自定义接入
+ */
+ CUSTOM(2);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/CommonRunStatus.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/CommonRunStatus.java
new file mode 100644
index 0000000..75b3a4f
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/CommonRunStatus.java
@@ -0,0 +1,44 @@
+package net.srt.api.module.data.integrate.constant;
+
+/**
+ * @ClassName CommonRunStatus
+ * @Author zrx
+ * @Date 2022/5/22 16:15
+ */
+public enum CommonRunStatus {
+
+ /**
+ * 等待中
+ */
+ WAITING(1,"等待中"),
+ /**
+ * 运行中
+ */
+ RUNNING(2,"运行中"),
+ /**
+ * 正常
+ */
+ SUCCESS(3,"正常结束"),
+
+ /**
+ * 异常
+ */
+ FAILED(4,"异常结束");
+
+
+ private Integer code;
+ private String name;
+
+ CommonRunStatus(Integer code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/TaskType.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/TaskType.java
new file mode 100644
index 0000000..de25df4
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/constant/TaskType.java
@@ -0,0 +1,38 @@
+package net.srt.api.module.data.integrate.constant;
+
+/**
+ * @ClassName TaskType
+ * @Author zrx
+ */
+public enum TaskType {
+
+ /**
+ * 实时同步
+ */
+ REAL_TIME_SYNC(1,"实时同步"),
+ /**
+ * 一次性全量同步
+ */
+ ONE_TIME_FULL_SYNC(2,"一次性全量同步"),
+ /**
+ * 一次性全量周期性增量
+ */
+ ONE_TIME_FULL_PERIODIC_INCR_SYNC(3,"一次性全量周期性增量");
+
+
+ private Integer code;
+ private String name;
+
+ TaskType(Integer code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataAccessDto.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataAccessDto.java
new file mode 100644
index 0000000..57988c0
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataAccessDto.java
@@ -0,0 +1,99 @@
+package net.srt.api.module.data.integrate.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 srt.cloud.framework.dbswitch.data.config.DbswichProperties;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 数据集成-数据接入
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-24
+*/
+@Data
+@Schema(description = "数据集成-数据接入")
+public class DataAccessDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键id")
+ private Long id;
+
+ @Schema(description = "任务名称")
+ private String taskName;
+
+ @Schema(description = "描述")
+ private String description;
+
+ @Schema(description = "项目id")
+ private Long projectId;
+
+ @Schema(description = "源端数据库id")
+ private Long sourceDatabaseId;
+
+ @Schema(description = "目的端数据库id")
+ private Long targetDatabaseId;
+
+ @Schema(description = "接入方式 1-ods接入 2-自定义接入")
+ private Integer accessMode;
+
+ @Schema(description = "任务类型")
+ private Integer taskType;
+
+ @Schema(description = "cron表达式")
+ private String cron;
+
+ @Schema(description = "发布状态")
+ private Integer status;
+
+ @Schema(description = "最新运行状态")
+ private Integer runStatus;
+
+ @Schema(description = "数据接入基础配置json")
+ private DbswichProperties dataAccessJson;
+
+ @Schema(description = "最近开始时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date startTime;
+
+ @Schema(description = "最近结束时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date endTime;
+
+ @Schema(description = "发布时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date releaseTime;
+
+ @Schema(description = "备注")
+ private String note;
+
+ @Schema(description = "发布人id")
+ private Long releaseUserId;
+
+ @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-api/src/main/java/net/srt/api/module/data/integrate/dto/DataAccessTaskDto.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataAccessTaskDto.java
new file mode 100644
index 0000000..f74fec6
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataAccessTaskDto.java
@@ -0,0 +1,83 @@
+package net.srt.api.module.data.integrate.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+import net.srt.framework.common.utils.DateUtils;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 数据接入任务记录
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-26
+*/
+@Data
+@Schema(description = "数据接入任务记录")
+public class DataAccessTaskDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键id")
+ private Long id;
+
+ @Schema(description = "数据接入任务id")
+ private Long dataAccessId;
+
+ @Schema(description = "运行状态( 1-等待中 2-运行中 3-正常结束 4-异常结束)")
+ private Integer runStatus;
+
+ @Schema(description = "开始时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date startTime;
+
+ @Schema(description = "结束时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date endTime;
+
+ private String realTimeLog;
+ @Schema(description = "错误信息")
+ private String errorInfo;
+
+ @Schema(description = "更新数据量")
+ private Long dataCount;
+
+ @Schema(description = "成功表数量")
+ private Long tableSuccessCount;
+
+ @Schema(description = "失败表数量")
+ private Long tableFailCount;
+
+ @Schema(description = "更新大小")
+ private String byteCount;
+
+ @Schema(description = "项目id")
+ private Long projectId;
+
+ @Schema(description = "创建时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date createTime;
+
+ @Schema(description = "版本号")
+ private Integer version;
+
+ @Schema(description = "删除标识 0:正常 1:已删除")
+ private Integer deleted;
+
+ @Schema(description = "创建者")
+ private Long creator;
+
+ @Schema(description = "更新者")
+ private Long updater;
+
+ @Schema(description = "更新时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date updateTime;
+
+ private Date nextRunTime;
+
+ private Boolean updateTaskAccess;
+
+
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataDatabaseDto.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataDatabaseDto.java
new file mode 100644
index 0000000..da9aec9
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataDatabaseDto.java
@@ -0,0 +1,82 @@
+package net.srt.api.module.data.integrate.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 srt.cloud.framework.dbswitch.common.type.ProductTypeEnum;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+* 数据集成-数据库管理
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-09
+*/
+@Data
+@Schema(description = "数据集成-数据库管理")
+public class DataDatabaseDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键id")
+ private Long id;
+
+ @Schema(description = "名称")
+ private String name;
+
+ @Schema(description = "数据库类型")
+ private Integer databaseType;
+
+ @Schema(description = "主机ip")
+ private String databaseIp;
+
+ @Schema(description = "端口")
+ private String databasePort;
+
+ @Schema(description = "库名(服务名)")
+ private String databaseName;
+
+ @Schema(description = "状态")
+ private Integer status;
+
+ @Schema(description = "用户名")
+ private String userName;
+
+ @Schema(description = "密码")
+ private String password;
+
+ @Schema(description = "是否支持实时接入")
+ private Integer isRtApprove;
+
+ @Schema(description = "不支持实时接入原因")
+ private String noRtReason;
+
+ @Schema(description = "jdbcUrl")
+ private String jdbcUrl;
+
+ @Schema(description = "所属项目")
+ 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-api/src/main/java/net/srt/api/module/data/integrate/dto/DataOdsDto.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataOdsDto.java
new file mode 100644
index 0000000..c415d07
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/DataOdsDto.java
@@ -0,0 +1,62 @@
+package net.srt.api.module.data.integrate.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;
+
+/**
+* 数据集成-贴源数据
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-07
+*/
+@Data
+@Schema(description = "数据集成-贴源数据")
+public class DataOdsDto implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @Schema(description = "主键id")
+ private Long id;
+
+ @Schema(description = "数据接入id")
+ private Long dataAccessId;
+
+ @Schema(description = "表名")
+ private String tableName;
+
+ @Schema(description = "注释")
+ private String remarks;
+
+ @Schema(description = "项目id")
+ private Long projectId;
+
+ @Schema(description = "最近同步时间")
+ @JsonFormat(pattern = DateUtils.DATE_TIME_PATTERN)
+ private Date recentlySyncTime;
+
+ @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-api/src/main/java/net/srt/api/module/data/integrate/dto/PreviewNameMapperDto.java b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/PreviewNameMapperDto.java
new file mode 100644
index 0000000..4c54114
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/data/integrate/dto/PreviewNameMapperDto.java
@@ -0,0 +1,17 @@
+package net.srt.api.module.data.integrate.dto;
+
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class PreviewNameMapperDto {
+
+ private String originalName;
+ private String targetName;
+ private String remarks;
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/message/SmsApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/message/SmsApi.java
new file mode 100644
index 0000000..d3d5752
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/message/SmsApi.java
@@ -0,0 +1,49 @@
+package net.srt.api.module.message;
+
+import net.srt.api.ServerNames;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+
+import java.util.Map;
+
+/**
+ * 短信服务API
+ *
+ * @author 阿沐 babamu@126.com
+ */
+@FeignClient(name = ServerNames.MESSAGE_SERVER_NAME)
+public interface SmsApi {
+
+ /**
+ * 发送短信
+ *
+ * @param mobile 手机号
+ * @param params 参数
+ * @return 是否发送成功
+ */
+ @PostMapping(value = "api/message/sms/send")
+ Result send(@RequestParam("mobile") String mobile, @RequestParam("params") Map params);
+
+ /**
+ * 发送短信
+ *
+ * @param mobile 手机号
+ * @param key 参数KEY
+ * @param value 参数Value
+ * @return 是否发送成功
+ */
+ @PostMapping(value = "api/message/sms/sendCode")
+ Result sendCode(@RequestParam("mobile") String mobile, @RequestParam("key") String key, @RequestParam("value") String value);
+
+ /**
+ * 效验短信验证码
+ *
+ * @param mobile 手机号
+ * @param code 验证码
+ * @return 是否效验成功
+ */
+ @PostMapping(value = "api/message/sms/verifyCode")
+ Result verifyCode(@RequestParam("mobile") String mobile, @RequestParam("code") String code);
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/package-info.java b/srt-cloud-api/src/main/java/net/srt/api/module/package-info.java
new file mode 100644
index 0000000..00360b4
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * RPC 接口声明,如:Feign接口
+ *
+ * @author 阿沐 babamu@126.com
+ */
+package net.srt.api.module;
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataAccessApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataAccessApi.java
new file mode 100644
index 0000000..76edc98
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataAccessApi.java
@@ -0,0 +1,35 @@
+package net.srt.api.module.quartz;
+
+import net.srt.api.ServerNames;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * 数据集成-数据接入 定时api
+ *
+ * @author 阿沐 babamu@126.com
+ */
+@FeignClient(name = ServerNames.QUARTZ_SERVER_NAME, contextId = "quartz-data-integrate-access")
+public interface QuartzDataAccessApi {
+
+ /**
+ * 发布数据接入任务
+ */
+ @PostMapping(value = "api/quartz/access/release/{id}")
+ Result releaseAccess(@PathVariable Long id);
+
+ /**
+ * 取消数据接入任务
+ */
+ @PostMapping(value = "api/quartz/access/cancle/{id}")
+ Result cancleAccess(@PathVariable Long id);
+
+ /**
+ * 手动执行
+ */
+ @PostMapping(value = "api/quartz/access/hand-run/{id}")
+ Result handRun(@PathVariable Long id);
+
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataGovernanceMetadataCollectApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataGovernanceMetadataCollectApi.java
new file mode 100644
index 0000000..8e5e648
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataGovernanceMetadataCollectApi.java
@@ -0,0 +1,34 @@
+package net.srt.api.module.quartz;
+
+import net.srt.api.ServerNames;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * 数据集成-数据接入 定时api
+ *
+ * @author 阿沐 babamu@126.com
+ */
+@FeignClient(name = ServerNames.QUARTZ_SERVER_NAME, contextId = "quartz-data-metadata-collect")
+public interface QuartzDataGovernanceMetadataCollectApi {
+
+ /**
+ * 发布数据接入任务
+ */
+ @PostMapping(value = "api/quartz/metadata-collect/release/{id}")
+ Result release(@PathVariable Long id);
+
+ /**
+ * 取消数据接入任务
+ */
+ @PostMapping(value = "api/quartz/metadata-collect/cancel/{id}")
+ Result cancel(@PathVariable Long id);
+
+ /**
+ * 手动执行
+ */
+ @PostMapping(value = "api/quartz/metadata-collect/hand-run/{id}")
+ Result handRun(@PathVariable Long id);
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataGovernanceQualityApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataGovernanceQualityApi.java
new file mode 100644
index 0000000..0c33c05
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataGovernanceQualityApi.java
@@ -0,0 +1,34 @@
+package net.srt.api.module.quartz;
+
+import net.srt.api.ServerNames;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * 数据集成-数据接入 定时api
+ *
+ * @author 阿沐 babamu@126.com
+ */
+@FeignClient(name = ServerNames.QUARTZ_SERVER_NAME, contextId = "quartz-data-quality")
+public interface QuartzDataGovernanceQualityApi {
+
+ /**
+ * 发布数据接入任务
+ */
+ @PostMapping(value = "api/quartz/quality/release/{id}")
+ Result release(@PathVariable Long id);
+
+ /**
+ * 取消数据接入任务
+ */
+ @PostMapping(value = "api/quartz/quality/cancel/{id}")
+ Result cancel(@PathVariable Long id);
+
+ /**
+ * 手动执行
+ */
+ @PostMapping(value = "api/quartz/quality/hand-run/{id}")
+ Result handRun(@PathVariable Long id);
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataProductionScheduleApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataProductionScheduleApi.java
new file mode 100644
index 0000000..740c3f3
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/QuartzDataProductionScheduleApi.java
@@ -0,0 +1,29 @@
+package net.srt.api.module.quartz;
+
+import net.srt.api.ServerNames;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+
+/**
+ * 数据集成-数据接入 定时api
+ *
+ * @author 阿沐 babamu@126.com
+ */
+@FeignClient(name = ServerNames.QUARTZ_SERVER_NAME, contextId = "quartz-data-development-production-schedule")
+public interface QuartzDataProductionScheduleApi {
+
+ /**
+ * 发布作业调度任务
+ */
+ @PostMapping(value = "api/quartz/development-schedule/release/{id}")
+ Result release(@PathVariable Long id);
+
+ /**
+ * 取消作业调度任务
+ */
+ @PostMapping(value = "api/quartz/development-schedule/cancle/{id}")
+ Result cancle(@PathVariable Long id);
+
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/quartz/constant/QuartzJobType.java b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/constant/QuartzJobType.java
new file mode 100644
index 0000000..a6bb44f
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/quartz/constant/QuartzJobType.java
@@ -0,0 +1,38 @@
+package net.srt.api.module.quartz.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @ClassName QuartzJobType
+ * @Author zrx
+ * @Date 2023/1/19 15:24
+ */
+@Getter
+@AllArgsConstructor
+public enum QuartzJobType {
+ /**
+ * 自定义
+ */
+ CUSTOM(1),
+ /**
+ * 数据接入
+ */
+ DATA_ACCESS(2),
+ /**
+ * 数据生产
+ */
+ DATA_PRODUCTION(3),
+
+ /**
+ * 数据治理
+ */
+ DATA_GOVERNANCE(4),
+
+ /**
+ * 数据质量
+ */
+ DATA_QUALITY(5);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/system/StorageApi.java b/srt-cloud-api/src/main/java/net/srt/api/module/system/StorageApi.java
new file mode 100644
index 0000000..3ff2027
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/system/StorageApi.java
@@ -0,0 +1,38 @@
+package net.srt.api.module.system;
+
+import feign.codec.Encoder;
+import feign.form.spring.SpringFormEncoder;
+import net.srt.api.ServerNames;
+import net.srt.api.module.system.dto.StorageDTO;
+import net.srt.framework.common.utils.Result;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.MediaType;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestPart;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.IOException;
+
+/**
+ * 文件上传
+ *
+ * @author 阿沐 babamu@126.com
+ */
+@FeignClient(name = ServerNames.SYSTEM_SERVER_NAME)
+public interface StorageApi {
+
+ /**
+ * 文件上传
+ */
+ @PostMapping(value = "api/storage/upload", produces = {MediaType.APPLICATION_JSON_VALUE},
+ consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+ Result upload(@RequestPart("file") MultipartFile file) throws IOException;
+
+ class MultipartSupportConfig {
+ @Bean
+ public Encoder feignFormEncoder() {
+ return new SpringFormEncoder();
+ }
+ }
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/system/constant/SuperAdminEnum.java b/srt-cloud-api/src/main/java/net/srt/api/module/system/constant/SuperAdminEnum.java
new file mode 100644
index 0000000..921666c
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/system/constant/SuperAdminEnum.java
@@ -0,0 +1,16 @@
+package net.srt.api.module.system.constant;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 超级管理员枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum SuperAdminEnum {
+ YES(1),
+ NO(0);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-api/src/main/java/net/srt/api/module/system/dto/StorageDTO.java b/srt-cloud-api/src/main/java/net/srt/api/module/system/dto/StorageDTO.java
new file mode 100644
index 0000000..aae0268
--- /dev/null
+++ b/srt-cloud-api/src/main/java/net/srt/api/module/system/dto/StorageDTO.java
@@ -0,0 +1,20 @@
+package net.srt.api.module.system.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.Data;
+
+/**
+ * 文件上传
+ *
+ * @author 阿沐 babamu@126.com
+ */
+@Data
+@Tag(name="文件上传")
+public class StorageDTO {
+ @Schema(description = "URL")
+ private String url;
+ @Schema(description = "文件大小")
+ private Long size;
+
+}
diff --git a/srt-cloud-data-integrate/pom.xml b/srt-cloud-data-integrate/pom.xml
new file mode 100644
index 0000000..e5b0656
--- /dev/null
+++ b/srt-cloud-data-integrate/pom.xml
@@ -0,0 +1,199 @@
+
+
+ net.srt
+ srt-cloud
+ 2.0.0
+
+ 4.0.0
+ srt-cloud-data-integrate
+ jar
+
+
+
+ net.srt
+ srt-cloud-api
+ 2.0.0
+
+
+
+ org.springframework.boot
+ spring-boot-starter-log4j2
+
+
+ net.srt
+ srt-cloud-mybatis
+ 2.0.0
+
+
+ net.srt
+ srt-cloud-dbswitch
+ 2.0.0
+
+
+ jsqlparser
+ com.github.jsqlparser
+
+
+ spring-boot-starter-logging
+ org.springframework.boot
+
+
+
+
+ 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
+
+
+
+
+
+
+
+
+ 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.DataIntegrateApplication
+
+ 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.DataIntegrateApplication
+ ${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-integrate/src/main/java/net/srt/DataIntegrateApplication.java b/srt-cloud-data-integrate/src/main/java/net/srt/DataIntegrateApplication.java
new file mode 100644
index 0000000..fa5e071
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/DataIntegrateApplication.java
@@ -0,0 +1,22 @@
+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;
+
+/**
+ * 数据集成微服务
+ *
+ * @author zrx 985134801@qq.com
+ */
+@EnableFeignClients
+@EnableDiscoveryClient
+@SpringBootApplication
+public class DataIntegrateApplication {
+
+ public static void main(String[] args) {
+ SpringApplication.run(DataIntegrateApplication.class, args);
+ }
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/api/DataAccessApiImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataAccessApiImpl.java
new file mode 100644
index 0000000..fd038e6
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataAccessApiImpl.java
@@ -0,0 +1,90 @@
+package net.srt.api;
+
+import lombok.RequiredArgsConstructor;
+import net.srt.api.module.data.integrate.DataAccessApi;
+import net.srt.api.module.data.integrate.dto.DataAccessDto;
+import net.srt.api.module.data.integrate.dto.DataAccessTaskDto;
+import net.srt.api.module.data.integrate.dto.PreviewNameMapperDto;
+import net.srt.constants.YesOrNo;
+import net.srt.convert.DataAccessConvert;
+import net.srt.convert.DataAccessTaskConvert;
+import net.srt.entity.DataAccessEntity;
+import net.srt.entity.DataAccessTaskDetailEntity;
+import net.srt.entity.DataAccessTaskEntity;
+import net.srt.framework.common.utils.Result;
+import net.srt.service.DataAccessService;
+import net.srt.service.DataAccessTaskDetailService;
+import net.srt.service.DataAccessTaskService;
+import org.springframework.web.bind.annotation.RestController;
+import srt.cloud.framework.dbswitch.data.domain.DbSwitchResult;
+import srt.cloud.framework.dbswitch.data.domain.DbSwitchTableResult;
+import srt.cloud.framework.dbswitch.data.util.BytesUnitUtils;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ClassName DataAccessApiImpl
+ * @Author zrx
+ * @Date 2022/10/26 11:50
+ */
+@RestController
+@RequiredArgsConstructor
+public class DataAccessApiImpl implements DataAccessApi {
+
+ private final DataAccessService dataAccessService;
+ private final DataAccessTaskService dataAccessTaskService;
+ private final DataAccessTaskDetailService dataAccessTaskDetailService;
+
+ @Override
+ public Result getById(Long id) {
+ DataAccessEntity dataAccessEntity = dataAccessService.loadById(id);
+ return Result.ok(DataAccessConvert.INSTANCE.convertDto(dataAccessEntity));
+ }
+
+ @Override
+ public Result addTask(DataAccessTaskDto dataAccessTaskDto) {
+ DataAccessTaskEntity dataAccessTaskEntity = DataAccessTaskConvert.INSTANCE.convertByDto(dataAccessTaskDto);
+ dataAccessTaskService.save(dataAccessTaskEntity);
+ //更新任务的最新开始时间和状态
+ dataAccessService.updateStartInfo(dataAccessTaskDto.getDataAccessId());
+ return Result.ok(dataAccessTaskEntity.getId());
+ }
+
+ @Override
+ public void updateTask(DataAccessTaskDto dataAccessTaskDto) {
+ DataAccessTaskEntity dataAccessTaskEntity = DataAccessTaskConvert.INSTANCE.convertByDto(dataAccessTaskDto);
+ dataAccessTaskService.updateById(dataAccessTaskEntity);
+ //更新任务的最新结束时间和状态
+ if (dataAccessTaskDto.getUpdateTaskAccess()) {
+ dataAccessService.updateEndInfo(dataAccessTaskDto.getDataAccessId(), dataAccessTaskDto.getRunStatus(), dataAccessTaskDto.getNextRunTime());
+ }
+ }
+
+ @Override
+ public void addTaskDetail(Long projectId, Long taskId, Long dataAccessId, DbSwitchTableResult tableResult) {
+ dataAccessTaskDetailService.save(DataAccessTaskDetailEntity.builder().projectId(projectId).taskId(taskId).dataAccessId(dataAccessId)
+ .sourceSchemaName(tableResult.getSourceSchemaName()).sourceTableName(tableResult.getSourceTableName())
+ .targetSchemaName(tableResult.getTargetSchemaName()).targetTableName(tableResult.getTargetTableName())
+ .ifSuccess(tableResult.getIfSuccess().get() ? YesOrNo.YES.getValue() : YesOrNo.NO.getValue())
+ .syncCount(tableResult.getSyncCount().get()).syncBytes(BytesUnitUtils.bytesSizeToHuman(tableResult.getSyncBytes().get()))
+ .createTime(new Date()).errorMsg(tableResult.getErrorMsg()).successMsg(tableResult.getSuccessMsg()).build());
+ }
+
+ @Override
+ public Result getTaskById(Long id) {
+ return Result.ok(DataAccessTaskConvert.INSTANCE.convertDto(dataAccessTaskService.getById(id)));
+ }
+
+ @Override
+ public Result> getTableMap(Long id) {
+ List previewNameMapperDtos = dataAccessService.getTableMap(id);
+ return Result.ok(previewNameMapperDtos);
+ }
+
+ @Override
+ public Result> getColumnMap(Long id, String tableName) {
+ List previewNameMapperDtos = dataAccessService.getColumnMap(id, tableName);
+ return Result.ok(previewNameMapperDtos);
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/api/DataDatabaseApiImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataDatabaseApiImpl.java
new file mode 100644
index 0000000..2f3228d
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataDatabaseApiImpl.java
@@ -0,0 +1,31 @@
+package net.srt.api;
+
+import lombok.RequiredArgsConstructor;
+import net.srt.api.module.data.integrate.DataDatabaseApi;
+import net.srt.api.module.data.integrate.DataOdsApi;
+import net.srt.api.module.data.integrate.dto.DataDatabaseDto;
+import net.srt.api.module.data.integrate.dto.DataOdsDto;
+import net.srt.convert.DataDatabaseConvert;
+import net.srt.convert.DataOdsConvert;
+import net.srt.entity.DataOdsEntity;
+import net.srt.framework.common.utils.Result;
+import net.srt.service.DataDatabaseService;
+import net.srt.service.DataOdsService;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * @ClassName DataDatabaseApiImpl
+ * @Author zrx
+ * @Date 2022/10/26 11:50
+ */
+@RestController
+@RequiredArgsConstructor
+public class DataDatabaseApiImpl implements DataDatabaseApi {
+
+ private final DataDatabaseService databaseService;
+
+ @Override
+ public Result getById(Long id) {
+ return Result.ok(DataDatabaseConvert.INSTANCE.convertDto(databaseService.getById(id)));
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/api/DataOdsApiImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataOdsApiImpl.java
new file mode 100644
index 0000000..bd5932c
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataOdsApiImpl.java
@@ -0,0 +1,52 @@
+package net.srt.api;
+
+import lombok.RequiredArgsConstructor;
+import net.srt.api.module.data.integrate.DataAccessApi;
+import net.srt.api.module.data.integrate.DataOdsApi;
+import net.srt.api.module.data.integrate.dto.DataAccessDto;
+import net.srt.api.module.data.integrate.dto.DataAccessTaskDto;
+import net.srt.api.module.data.integrate.dto.DataOdsDto;
+import net.srt.constants.YesOrNo;
+import net.srt.convert.DataAccessConvert;
+import net.srt.convert.DataAccessTaskConvert;
+import net.srt.convert.DataOdsConvert;
+import net.srt.entity.DataAccessEntity;
+import net.srt.entity.DataAccessTaskDetailEntity;
+import net.srt.entity.DataAccessTaskEntity;
+import net.srt.entity.DataOdsEntity;
+import net.srt.framework.common.utils.Result;
+import net.srt.service.DataAccessService;
+import net.srt.service.DataAccessTaskDetailService;
+import net.srt.service.DataAccessTaskService;
+import net.srt.service.DataOdsService;
+import org.springframework.web.bind.annotation.RestController;
+import srt.cloud.framework.dbswitch.data.domain.DbSwitchResult;
+import srt.cloud.framework.dbswitch.data.domain.DbSwitchTableResult;
+import srt.cloud.framework.dbswitch.data.util.BytesUnitUtils;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @ClassName DataAccessApiImpl
+ * @Author zrx
+ * @Date 2022/10/26 11:50
+ */
+@RestController
+@RequiredArgsConstructor
+public class DataOdsApiImpl implements DataOdsApi {
+
+ private final DataOdsService dataOdsService;
+
+ @Override
+ public Result addOds(DataOdsDto dataOdsDto) {
+ DataOdsEntity dataOdsEntity = dataOdsService.getByTableName(dataOdsDto.getProjectId(), dataOdsDto.getTableName());
+ if (dataOdsEntity == null) {
+ dataOdsService.save(DataOdsConvert.INSTANCE.convertByDto(dataOdsDto));
+ } else {
+ dataOdsDto.setId(dataOdsEntity.getId());
+ dataOdsService.updateById(DataOdsConvert.INSTANCE.convertByDto(dataOdsDto));
+ }
+ return Result.ok();
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/api/DataProjectApiImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataProjectApiImpl.java
new file mode 100644
index 0000000..3f7ad95
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/api/DataProjectApiImpl.java
@@ -0,0 +1,36 @@
+package net.srt.api;
+
+import lombok.RequiredArgsConstructor;
+import net.srt.api.module.data.integrate.DataProjectApi;
+import net.srt.entity.DataProjectEntity;
+import net.srt.framework.common.cache.bean.DataProjectCacheBean;
+import net.srt.framework.common.utils.BeanUtil;
+import net.srt.framework.common.utils.Result;
+import net.srt.service.DataProjectService;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @ClassName DataAccessApiImpl
+ * @Author zrx
+ * @Date 2022/10/26 11:50
+ */
+@RestController
+@RequiredArgsConstructor
+public class DataProjectApiImpl implements DataProjectApi {
+
+ private final DataProjectService dataProjectService;
+
+
+ @Override
+ public Result> getProjectList() {
+ List list = dataProjectService.list();
+ return Result.ok(BeanUtil.copyListProperties(list, DataProjectCacheBean::new));
+ }
+
+ @Override
+ public Result getById(Long id) {
+ return Result.ok(BeanUtil.copyProperties(dataProjectService.getById(id), DataProjectCacheBean::new));
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/constants/AccessMode.java b/srt-cloud-data-integrate/src/main/java/net/srt/constants/AccessMode.java
new file mode 100644
index 0000000..2d02a5e
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/constants/AccessMode.java
@@ -0,0 +1,22 @@
+package net.srt.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 接入方式
+ */
+@Getter
+@AllArgsConstructor
+public enum AccessMode {
+ /**
+ * ods接入
+ */
+ ODS(1),
+ /**
+ * 自定义接入
+ */
+ CUSTOM(2);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/constants/CommonRunStatus.java b/srt-cloud-data-integrate/src/main/java/net/srt/constants/CommonRunStatus.java
new file mode 100644
index 0000000..fc81c99
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/constants/CommonRunStatus.java
@@ -0,0 +1,44 @@
+package net.srt.constants;
+
+/**
+ * @ClassName CommonRunStatus
+ * @Author zrx
+ * @Date 2022/5/22 16:15
+ */
+public enum CommonRunStatus {
+
+ /**
+ * 等待中
+ */
+ WAITING(1,"等待中"),
+ /**
+ * 运行中
+ */
+ RUNNING(2,"运行中"),
+ /**
+ * 正常
+ */
+ SUCCESS(3,"正常结束"),
+
+ /**
+ * 异常
+ */
+ FAILED(4,"异常结束");
+
+
+ private Integer code;
+ private String name;
+
+ CommonRunStatus(Integer code, String name) {
+ this.code = code;
+ this.name = name;
+ }
+
+ public Integer getCode() {
+ return code;
+ }
+
+ public String getName() {
+ return name;
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/constants/DataHouseLayer.java b/srt-cloud-data-integrate/src/main/java/net/srt/constants/DataHouseLayer.java
new file mode 100644
index 0000000..04c0adf
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/constants/DataHouseLayer.java
@@ -0,0 +1,52 @@
+package net.srt.constants;
+
+/**
+ * @ClassName DataHouseLayer
+ * @Author zrx
+ * @Date 2022/5/20 14:58
+ */
+public enum DataHouseLayer {
+
+
+ /**
+ * ODS
+ */
+ ODS("数据引入层","ods_"),
+ /**
+ * DWD
+ */
+ DWD("明细数据层","dwd_"),
+ /**
+ * DIM
+ */
+ DIM("维度层","dim_"),
+ /**
+ * DWS
+ */
+ DWS("汇总数据层","dws_"),
+ /**
+ * 应用数据层
+ */
+ ADS("应用数据层","ads_"),
+
+ /**
+ * OTHER
+ */
+ OTHER("其他数据","");
+
+ private String name;
+ private String tablePrefix;
+
+ DataHouseLayer(String name,String tablePrefix) {
+ this.name = name;
+ this.tablePrefix = tablePrefix;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getTablePrefix() {
+ return tablePrefix;
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/constants/MiddleTreeNodeType.java b/srt-cloud-data-integrate/src/main/java/net/srt/constants/MiddleTreeNodeType.java
new file mode 100644
index 0000000..26d70e4
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/constants/MiddleTreeNodeType.java
@@ -0,0 +1,26 @@
+package net.srt.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 接入方式
+ */
+@Getter
+@AllArgsConstructor
+public enum MiddleTreeNodeType {
+ /**
+ * DB
+ */
+ DB(1),
+ /**
+ * LAYER
+ */
+ LAYER(2),
+ /**
+ * TABLE
+ */
+ TABLE(3);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/constants/SuperAdminEnum.java b/srt-cloud-data-integrate/src/main/java/net/srt/constants/SuperAdminEnum.java
new file mode 100644
index 0000000..080e5df
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/constants/SuperAdminEnum.java
@@ -0,0 +1,16 @@
+package net.srt.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 超级管理员枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum SuperAdminEnum {
+ YES(1),
+ NO(0);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/constants/YesOrNo.java b/srt-cloud-data-integrate/src/main/java/net/srt/constants/YesOrNo.java
new file mode 100644
index 0000000..06d1d72
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/constants/YesOrNo.java
@@ -0,0 +1,16 @@
+package net.srt.constants;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * 超级管理员枚举
+ */
+@Getter
+@AllArgsConstructor
+public enum YesOrNo {
+ YES(1),
+ NO(0);
+
+ private final Integer value;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataAccessController.java b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataAccessController.java
new file mode 100644
index 0000000..91a7dbd
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataAccessController.java
@@ -0,0 +1,148 @@
+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.dto.DataAccessClientDto;
+import net.srt.dto.PreviewMapDto;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.query.DataAccessQuery;
+import net.srt.query.DataAccessTaskDetailQuery;
+import net.srt.query.DataAccessTaskQuery;
+import net.srt.service.DataAccessService;
+import net.srt.vo.DataAccessTaskDetailVO;
+import net.srt.vo.DataAccessTaskVO;
+import net.srt.vo.DataAccessVO;
+import net.srt.vo.PreviewNameMapperVo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 数据集成-数据接入
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-24
+ */
+@RestController
+@RequestMapping("access")
+@Tag(name = "数据集成-数据接入")
+@AllArgsConstructor
+public class DataAccessController {
+ private final DataAccessService dataAccessService;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ @PreAuthorize("hasAuthority('data-integrate:access:page')")
+ public Result> page(@Valid DataAccessQuery query) {
+ PageResult page = dataAccessService.page(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAuthority('data-integrate:access:info')")
+ public Result get(@PathVariable("id") Long id) {
+ return Result.ok(dataAccessService.getById(id));
+ }
+
+ @PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAuthority('data-integrate:access:save')")
+ public Result save(@RequestBody DataAccessClientDto dto) {
+ dataAccessService.save(dto);
+ return Result.ok();
+ }
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('data-integrate:access:update')")
+ public Result update(@RequestBody DataAccessClientDto dto) {
+ dataAccessService.update(dto);
+
+ return Result.ok();
+ }
+
+ @DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('data-integrate:access:delete')")
+ public Result delete(@RequestBody List idList) {
+ dataAccessService.delete(idList);
+ return Result.ok();
+ }
+
+ @PostMapping("preview-table-name-map")
+ @Operation(summary = "预览表名映射")
+ public Result> previewTableMap(@RequestBody PreviewMapDto previewMapDto) {
+ return Result.ok(dataAccessService.previewTableMap(previewMapDto));
+ }
+
+ @PostMapping("preview-column-name-map")
+ @Operation(summary = "预览字段名映射")
+ public Result> previewColumnMap(@RequestBody PreviewMapDto previewMapDto) {
+ return Result.ok(dataAccessService.previewColumnMap(previewMapDto));
+ }
+
+ @PostMapping("release/{id}")
+ @Operation(summary = "发布任务")
+ @PreAuthorize("hasAuthority('data-integrate:access:release')")
+ public Result release(@PathVariable Long id) {
+ dataAccessService.release(id);
+ return Result.ok();
+ }
+
+ @PostMapping("cancle/{id}")
+ @Operation(summary = "取消任务")
+ @PreAuthorize("hasAuthority('data-integrate:access:cancle')")
+ public Result cancle(@PathVariable Long id) {
+ dataAccessService.cancle(id);
+ return Result.ok();
+ }
+
+ @PostMapping("hand-run/{id}")
+ @Operation(summary = "手动调度执行")
+ @PreAuthorize("hasAuthority('data-integrate:access:selfhandler')")
+ public Result handRun(@PathVariable Long id) {
+ dataAccessService.handRun(id);
+ return Result.ok();
+ }
+
+ @GetMapping("task-page")
+ @Operation(summary = "获取调度记录")
+ public Result> taskPage(DataAccessTaskQuery taskQuery) {
+ PageResult pageResult = dataAccessService.taskPage(taskQuery);
+ return Result.ok(pageResult);
+ }
+
+ @GetMapping("task/{id}")
+ @Operation(summary = "获取调度任务")
+ public Result getTaskById(@PathVariable Long id) {
+ return Result.ok(dataAccessService.getTaskById(id));
+ }
+
+ @DeleteMapping("task")
+ @Operation(summary = "删除调度记录")
+ public Result deleteTask(@RequestBody List idList) {
+ dataAccessService.deleteTask(idList);
+ return Result.ok();
+ }
+
+ @GetMapping("task-detail-page")
+ @Operation(summary = "获取同步结果")
+ public Result> taskDetailPage(DataAccessTaskDetailQuery detailQuery) {
+ PageResult pageResult = dataAccessService.taskDetailPage(detailQuery);
+ return Result.ok(pageResult);
+ }
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataDatabaseController.java b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataDatabaseController.java
new file mode 100644
index 0000000..db2d0c2
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataDatabaseController.java
@@ -0,0 +1,160 @@
+package net.srt.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import lombok.AllArgsConstructor;
+import net.srt.convert.DataDatabaseConvert;
+import net.srt.dto.SqlConsole;
+import net.srt.entity.DataAccessEntity;
+import net.srt.entity.DataDatabaseEntity;
+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.DataDatabaseQuery;
+import net.srt.service.DataAccessService;
+import net.srt.service.DataDatabaseService;
+import net.srt.vo.ColumnDescriptionVo;
+import net.srt.vo.DataDatabaseVO;
+import net.srt.vo.SchemaTableDataVo;
+import net.srt.vo.SqlGenerationVo;
+import net.srt.vo.TableVo;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 数据集成-数据库管理
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-09
+ */
+@RestController
+@RequestMapping("database")
+@Tag(name = "数据集成-数据库管理")
+@AllArgsConstructor
+public class DataDatabaseController {
+ private final DataDatabaseService dataDatabaseService;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ @PreAuthorize("hasAuthority('data-integrate:database:page')")
+ public Result> page(@Valid DataDatabaseQuery query) {
+ PageResult page = dataDatabaseService.page(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAuthority('data-integrate:database:info')")
+ public Result get(@PathVariable("id") Long id) {
+ DataDatabaseEntity entity = dataDatabaseService.getById(id);
+
+ return Result.ok(DataDatabaseConvert.INSTANCE.convert(entity));
+ }
+
+ @PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAuthority('data-integrate:database:save')")
+ public Result save(@RequestBody DataDatabaseVO vo) {
+ dataDatabaseService.save(vo);
+
+ return Result.ok();
+ }
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('data-integrate:database:update')")
+ public Result update(@RequestBody @Valid DataDatabaseVO vo) {
+ dataDatabaseService.update(vo);
+
+ return Result.ok();
+ }
+
+ @DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('data-integrate:database:delete')")
+ public Result delete(@RequestBody List idList) {
+ dataDatabaseService.delete(idList);
+ return Result.ok();
+ }
+
+ @PostMapping("/test-online")
+ @Operation(summary = "测试连接")
+ public Result testOnline(@RequestBody @Valid DataDatabaseVO vo) {
+ dataDatabaseService.testOnline(vo);
+ return Result.ok();
+ }
+
+ @GetMapping("/tables/{id}")
+ @Operation(summary = "根据数据库id获取表相关信息")
+ public Result> getTablesById(@PathVariable Long id) {
+ List tableVos = dataDatabaseService.getTablesById(id);
+ return Result.ok(tableVos);
+ }
+
+ @PostMapping("/table-data/{id}")
+ @Operation(summary = "根据sql获取数据")
+ public Result getTableDataBySql(@PathVariable Integer id, @RequestBody SqlConsole sqlConsole) {
+ SchemaTableDataVo schemaTableDataVo = dataDatabaseService.getTableDataBySql(id, sqlConsole);
+ return Result.ok(schemaTableDataVo);
+ }
+
+ @GetMapping("/list-all")
+ @Operation(summary = "获取当前用户所能看到的的数据表")
+ public Result> listAll() {
+ List list = dataDatabaseService.listAll();
+ return Result.ok(list);
+ }
+
+ @GetMapping("/list-tree/{id}")
+ @Operation(summary = "获取库目录树")
+ public Result> listTree(@PathVariable Long id) {
+ List list = dataDatabaseService.listTree(id);
+ return Result.ok(list);
+ }
+
+ @GetMapping("/middle-db/list-tree")
+ @Operation(summary = "获取中台库(当前项目)目录树")
+ public Result> listMiddleDbTree() {
+ List list = dataDatabaseService.listMiddleDbTree();
+ return Result.ok(list);
+ }
+
+ @GetMapping("/{id}/{tableName}/columns")
+ @Operation(summary = "获取字段信息")
+ public Result> columnInfo(@PathVariable Long id, @PathVariable String tableName) {
+ return Result.ok(dataDatabaseService.getColumnInfo(id, tableName));
+ }
+
+ @GetMapping("/middle-db/{tableName}/columns")
+ @Operation(summary = "获取中台库字段信息")
+ public Result> middleDbClumnInfo(@PathVariable String tableName) {
+ return Result.ok(dataDatabaseService.middleDbClumnInfo(tableName));
+ }
+
+ @GetMapping("/{id}/{tableName}/sql-generation")
+ @Operation(summary = "获取sql信息")
+ public Result getSqlGeneration(@PathVariable Long id, @PathVariable String tableName, String tableRemarks) {
+ return Result.ok(dataDatabaseService.getSqlGeneration(id, tableName, tableRemarks));
+ }
+
+ @GetMapping("/middle-db/{tableName}/sql-generation")
+ @Operation(summary = "获取中台库sql信息")
+ public Result getMiddleDbSqlGeneration(@PathVariable String tableName, String tableRemarks) {
+ return Result.ok(dataDatabaseService.getMiddleDbSqlGeneration(tableName, tableRemarks));
+ }
+
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataFileCategoryController.java b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataFileCategoryController.java
new file mode 100644
index 0000000..0ea9ee9
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataFileCategoryController.java
@@ -0,0 +1,78 @@
+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.entity.DataFileCategoryEntity;
+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.DataFileCategoryService;
+import net.srt.vo.DataFileCategoryVO;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 文件分组表
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-12
+ */
+@RestController
+@RequestMapping("fileCategory")
+@Tag(name = "文件分组表")
+@AllArgsConstructor
+public class DataFileCategoryController {
+ private final DataFileCategoryService dataFileCategoryService;
+
+ @GetMapping
+ @Operation(summary = "查询文件分组树")
+ public Result> listTree() {
+ return Result.ok(dataFileCategoryService.listTree());
+ }
+
+ @GetMapping("/{id}")
+ @Operation(summary = "根据id获取")
+ public Result getById(@PathVariable Integer id) {
+ DataFileCategoryEntity entity = dataFileCategoryService.getById(id);
+ TreeNodeVo nodeVo = BeanUtil.copyProperties(entity, TreeNodeVo::new);
+ nodeVo.setLabel(entity.getName());
+ nodeVo.setParentPath(entity.getPath().contains("/") ? entity.getPath().substring(0, entity.getPath().lastIndexOf("/")) : null);
+ return Result.ok(nodeVo);
+ }
+
+
+ @PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAuthority('data-integrate:fileCategory:save')")
+ public Result save(@RequestBody DataFileCategoryVO vo) {
+ dataFileCategoryService.save(vo);
+ return Result.ok();
+ }
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('data-integrate:fileCategory:update')")
+ public Result update(@RequestBody @Valid DataFileCategoryVO vo) {
+ dataFileCategoryService.update(vo);
+ return Result.ok();
+ }
+
+ @DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('data-integrate:fileCategory:delete')")
+ public Result delete(Long id) {
+ dataFileCategoryService.delete(id);
+ return Result.ok();
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataFileController.java b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataFileController.java
new file mode 100644
index 0000000..b2c78fa
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataFileController.java
@@ -0,0 +1,84 @@
+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.convert.DataFileConvert;
+import net.srt.entity.DataFileEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.service.DataFileService;
+import net.srt.query.DataFileQuery;
+import net.srt.vo.DataFileVO;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+* 文件表
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-16
+*/
+@RestController
+@RequestMapping("file")
+@Tag(name="文件表")
+@AllArgsConstructor
+public class DataFileController {
+ private final DataFileService dataFileService;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ @PreAuthorize("hasAuthority('data-integrate:file:page')")
+ public Result> page(@Valid DataFileQuery query){
+ PageResult page = dataFileService.page(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("page-resource")
+ @Operation(summary = "根据resourceId分页获取")
+ public Result> pageResource(@Valid DataFileQuery query){
+ PageResult page = dataFileService.pageResource(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAuthority('data-integrate:file:info')")
+ public Result get(@PathVariable("id") Long id){
+ DataFileEntity entity = dataFileService.getById(id);
+
+ return Result.ok(DataFileConvert.INSTANCE.convert(entity));
+ }
+
+ @PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAuthority('data-integrate:file:save')")
+ public Result save(@RequestBody DataFileVO vo){
+ dataFileService.save(vo);
+
+ return Result.ok();
+ }
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('data-integrate:file:update')")
+ public Result update(@RequestBody @Valid DataFileVO vo){
+ dataFileService.update(vo);
+
+ return Result.ok();
+ }
+
+ @DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('data-integrate:file:delete')")
+ public Result delete(@RequestBody List idList){
+ dataFileService.delete(idList);
+
+ return Result.ok();
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataLayerController.java b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataLayerController.java
new file mode 100644
index 0000000..f561384
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataLayerController.java
@@ -0,0 +1,80 @@
+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.convert.DataLayerConvert;
+import net.srt.entity.DataLayerEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.query.DataLayerQuery;
+import net.srt.service.DataLayerService;
+import net.srt.vo.DataLayerVO;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+* 数仓分层
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-08
+*/
+@RestController
+@RequestMapping("layer")
+@Tag(name="数仓分层")
+@AllArgsConstructor
+public class DataLayerController {
+ private final DataLayerService dataLayerService;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ @PreAuthorize("hasAuthority('data-integrate:layer:page')")
+ public Result> page(@Valid DataLayerQuery query){
+ PageResult page = dataLayerService.page(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAuthority('data-integrate:layer:info')")
+ public Result get(@PathVariable("id") Long id){
+ DataLayerEntity entity = dataLayerService.getById(id);
+
+ return Result.ok(DataLayerConvert.INSTANCE.convert(entity));
+ }
+
+ /*@PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAuthority('data-integrate:layer:save')")
+ public Result save(@RequestBody DataLayerVO vo){
+ dataLayerService.save(vo);
+
+ return Result.ok();
+ }*/
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('data-integrate:layer:update')")
+ public Result update(@RequestBody @Valid DataLayerVO vo){
+ dataLayerService.update(vo);
+
+ return Result.ok();
+ }
+
+ /*@DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('data-integrate:layer:delete')")
+ public Result delete(@RequestBody List idList){
+ dataLayerService.delete(idList);
+
+ return Result.ok();
+ }*/
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataOdsController.java b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataOdsController.java
new file mode 100644
index 0000000..87ea9ee
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataOdsController.java
@@ -0,0 +1,74 @@
+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.convert.DataOdsConvert;
+import net.srt.dto.SqlConsole;
+import net.srt.entity.DataOdsEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.query.DataOdsQuery;
+import net.srt.service.DataOdsService;
+import net.srt.vo.ColumnDescriptionVo;
+import net.srt.vo.DataOdsVO;
+import net.srt.vo.SchemaTableDataVo;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import srt.cloud.framework.dbswitch.core.model.ColumnDescription;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 数据集成-贴源数据
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-07
+ */
+@RestController
+@RequestMapping("ods")
+@Tag(name = "数据集成-贴源数据")
+@AllArgsConstructor
+public class DataOdsController {
+ private final DataOdsService dataOdsService;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ public Result> page(@Valid DataOdsQuery query) {
+ PageResult page = dataOdsService.page(query);
+ return Result.ok(page);
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ public Result get(@PathVariable("id") Long id) {
+ DataOdsEntity entity = dataOdsService.getById(id);
+
+ return Result.ok(DataOdsConvert.INSTANCE.convert(entity));
+ }
+
+ @GetMapping("/{id}/{tableName}/column-info")
+ @Operation(summary = "获取字段信息")
+ public Result> columnInfo(@PathVariable Long id, @PathVariable String tableName) {
+ return Result.ok(dataOdsService.getColumnInfo(id, tableName));
+ }
+
+ @GetMapping("/{id}/{tableName}/table-data")
+ @Operation(summary = "获取表数据")
+ public Result getTableData(@PathVariable Long id, @PathVariable String tableName) {
+ return Result.ok(dataOdsService.getTableData(id, tableName));
+ }
+
+ @DeleteMapping
+ @Operation(summary = "删除")
+ public Result delete(@RequestBody List idList) {
+ dataOdsService.delete(idList);
+ return Result.ok();
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataProjectController.java b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataProjectController.java
new file mode 100644
index 0000000..a891304
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/controller/DataProjectController.java
@@ -0,0 +1,120 @@
+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.convert.DataProjectConvert;
+import net.srt.entity.DataProjectEntity;
+import net.srt.framework.common.cache.RedisCache;
+import net.srt.framework.common.cache.RedisKeys;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.Result;
+import net.srt.framework.security.cache.TokenStoreCache;
+import net.srt.framework.security.utils.TokenUtils;
+import net.srt.query.DataProjectQuery;
+import net.srt.service.DataProjectService;
+import net.srt.vo.DataDatabaseVO;
+import net.srt.vo.DataProjectVO;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * 数据项目
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-09-27
+ */
+@RestController
+@RequestMapping("project")
+@Tag(name = "数据项目")
+@AllArgsConstructor
+public class DataProjectController {
+ private final DataProjectService dataProjectService;
+ private final TokenStoreCache storeCache;
+
+ @GetMapping("page")
+ @Operation(summary = "分页")
+ @PreAuthorize("hasAuthority('data-integrate:project:page')")
+ public Result> page(@Valid DataProjectQuery query) {
+ PageResult page = dataProjectService.page(query);
+
+ return Result.ok(page);
+ }
+
+ @GetMapping("{id}")
+ @Operation(summary = "信息")
+ @PreAuthorize("hasAuthority('data-integrate:project:info')")
+ public Result get(@PathVariable("id") Long id) {
+ DataProjectEntity entity = dataProjectService.getById(id);
+
+ return Result.ok(DataProjectConvert.INSTANCE.convert(entity));
+ }
+
+ @PostMapping
+ @Operation(summary = "保存")
+ @PreAuthorize("hasAuthority('data-integrate:project:save')")
+ public Result save(@RequestBody DataProjectVO vo) {
+ dataProjectService.save(vo);
+
+ return Result.ok();
+ }
+
+ @PutMapping
+ @Operation(summary = "修改")
+ @PreAuthorize("hasAuthority('data-integrate:project:update')")
+ public Result update(@RequestBody @Valid DataProjectVO vo) {
+ dataProjectService.update(vo);
+
+ return Result.ok();
+ }
+
+ @DeleteMapping
+ @Operation(summary = "删除")
+ @PreAuthorize("hasAuthority('data-integrate:project:delete')")
+ public Result delete(@RequestBody List idList) {
+ dataProjectService.delete(idList);
+
+ return Result.ok();
+ }
+
+ @PostMapping("adduser/{projectId}")
+ @Operation(summary = "添加成员")
+ @PreAuthorize("hasAuthority('data-integrate:project:adduser')")
+ public Result addUser(@PathVariable Long projectId, @RequestBody List userIds) {
+ dataProjectService.addUser(projectId, userIds);
+ return Result.ok();
+ }
+
+ @GetMapping("/current-user-projects")
+ @Operation(summary = "获取当前用户拥有的项目")
+ public Result> listProjects() {
+ return Result.ok(dataProjectService.listProjects());
+ }
+
+ @PutMapping("/change-project/{projectId}")
+ @Operation(summary = "切换项目(租户)")
+ public Result changeProject(@PathVariable Long projectId, HttpServletRequest request) {
+ String accessToken = TokenUtils.getAccessToken(request);
+ //把当前用户的租户id存储到redis缓存中,24小时过期
+ storeCache.saveProjectId(accessToken, projectId);
+ return Result.ok();
+ }
+
+ @PostMapping("/test-online")
+ @Operation(summary = "测试连接")
+ public Result testOnline(@RequestBody @Valid DataProjectVO vo) {
+ dataProjectService.testOnline(vo);
+ return Result.ok();
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessConvert.java
new file mode 100644
index 0000000..f443247
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessConvert.java
@@ -0,0 +1,29 @@
+package net.srt.convert;
+
+import net.srt.api.module.data.integrate.dto.DataAccessDto;
+import net.srt.entity.DataAccessEntity;
+import net.srt.vo.DataAccessVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 数据集成-数据接入
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-24
+ */
+@Mapper
+public interface DataAccessConvert {
+ DataAccessConvert INSTANCE = Mappers.getMapper(DataAccessConvert.class);
+
+ DataAccessEntity convert(DataAccessVO vo);
+
+ DataAccessVO convert(DataAccessEntity entity);
+
+ DataAccessDto convertDto(DataAccessEntity entity);
+
+ List convertList(List list);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessTaskConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessTaskConvert.java
new file mode 100644
index 0000000..fc7f263
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessTaskConvert.java
@@ -0,0 +1,31 @@
+package net.srt.convert;
+
+import net.srt.api.module.data.integrate.dto.DataAccessTaskDto;
+import net.srt.entity.DataAccessTaskEntity;
+import net.srt.vo.DataAccessTaskVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 数据接入任务记录
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-24
+*/
+@Mapper
+public interface DataAccessTaskConvert {
+ DataAccessTaskConvert INSTANCE = Mappers.getMapper(DataAccessTaskConvert.class);
+
+ DataAccessTaskEntity convert(DataAccessTaskVO vo);
+
+ DataAccessTaskEntity convertByDto(DataAccessTaskDto dto);
+
+ DataAccessTaskVO convert(DataAccessTaskEntity entity);
+
+ DataAccessTaskDto convertDto(DataAccessTaskEntity entity);
+
+ List convertList(List list);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessTaskDetailConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessTaskDetailConvert.java
new file mode 100644
index 0000000..e874439
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataAccessTaskDetailConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.DataAccessTaskDetailEntity;
+import net.srt.vo.DataAccessTaskDetailVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 数据接入-同步记录详情
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-28
+*/
+@Mapper
+public interface DataAccessTaskDetailConvert {
+ DataAccessTaskDetailConvert INSTANCE = Mappers.getMapper(DataAccessTaskDetailConvert.class);
+
+ DataAccessTaskDetailEntity convert(DataAccessTaskDetailVO vo);
+
+ DataAccessTaskDetailVO convert(DataAccessTaskDetailEntity entity);
+
+ List convertList(List list);
+
+}
\ No newline at end of file
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataDatabaseConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataDatabaseConvert.java
new file mode 100644
index 0000000..b4836b2
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataDatabaseConvert.java
@@ -0,0 +1,29 @@
+package net.srt.convert;
+
+import net.srt.api.module.data.integrate.dto.DataDatabaseDto;
+import net.srt.entity.DataDatabaseEntity;
+import net.srt.vo.DataDatabaseVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 数据集成-数据库管理
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-09
+*/
+@Mapper
+public interface DataDatabaseConvert {
+ DataDatabaseConvert INSTANCE = Mappers.getMapper(DataDatabaseConvert.class);
+
+ DataDatabaseEntity convert(DataDatabaseVO vo);
+
+ DataDatabaseVO convert(DataDatabaseEntity entity);
+
+ DataDatabaseDto convertDto(DataDatabaseEntity entity);
+
+ List convertList(List list);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataFileCategoryConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataFileCategoryConvert.java
new file mode 100644
index 0000000..3c7abf6
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataFileCategoryConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.DataFileCategoryEntity;
+import net.srt.vo.DataFileCategoryVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 文件分组表
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-12
+*/
+@Mapper
+public interface DataFileCategoryConvert {
+ DataFileCategoryConvert INSTANCE = Mappers.getMapper(DataFileCategoryConvert.class);
+
+ DataFileCategoryEntity convert(DataFileCategoryVO vo);
+
+ DataFileCategoryVO convert(DataFileCategoryEntity entity);
+
+ List convertList(List list);
+
+}
\ No newline at end of file
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataFileConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataFileConvert.java
new file mode 100644
index 0000000..f2f22ef
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataFileConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.DataFileEntity;
+import net.srt.vo.DataFileVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 文件表
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-16
+*/
+@Mapper
+public interface DataFileConvert {
+ DataFileConvert INSTANCE = Mappers.getMapper(DataFileConvert.class);
+
+ DataFileEntity convert(DataFileVO vo);
+
+ DataFileVO convert(DataFileEntity entity);
+
+ List convertList(List list);
+
+}
\ No newline at end of file
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataLayerConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataLayerConvert.java
new file mode 100644
index 0000000..61f1a6c
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataLayerConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.DataLayerEntity;
+import net.srt.vo.DataLayerVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 数仓分层
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-08
+*/
+@Mapper
+public interface DataLayerConvert {
+ DataLayerConvert INSTANCE = Mappers.getMapper(DataLayerConvert.class);
+
+ DataLayerEntity convert(DataLayerVO vo);
+
+ DataLayerVO convert(DataLayerEntity entity);
+
+ List convertList(List list);
+
+}
\ No newline at end of file
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataOdsConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataOdsConvert.java
new file mode 100644
index 0000000..0886c97
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataOdsConvert.java
@@ -0,0 +1,29 @@
+package net.srt.convert;
+
+import net.srt.api.module.data.integrate.dto.DataOdsDto;
+import net.srt.entity.DataOdsEntity;
+import net.srt.vo.DataOdsVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+ * 数据集成-贴源数据
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-07
+ */
+@Mapper
+public interface DataOdsConvert {
+ DataOdsConvert INSTANCE = Mappers.getMapper(DataOdsConvert.class);
+
+ DataOdsEntity convert(DataOdsVO vo);
+
+ DataOdsEntity convertByDto(DataOdsDto dto);
+
+ DataOdsVO convert(DataOdsEntity entity);
+
+ List convertList(List list);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataProjectConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataProjectConvert.java
new file mode 100644
index 0000000..601d361
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataProjectConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.DataProjectEntity;
+import net.srt.vo.DataProjectVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 数据项目
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-09-27
+*/
+@Mapper
+public interface DataProjectConvert {
+ DataProjectConvert INSTANCE = Mappers.getMapper(DataProjectConvert.class);
+
+ DataProjectEntity convert(DataProjectVO vo);
+
+ DataProjectVO convert(DataProjectEntity entity);
+
+ List convertList(List list);
+
+}
\ No newline at end of file
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataProjectUserRelConvert.java b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataProjectUserRelConvert.java
new file mode 100644
index 0000000..4f4780b
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/convert/DataProjectUserRelConvert.java
@@ -0,0 +1,26 @@
+package net.srt.convert;
+
+import net.srt.entity.DataProjectUserRelEntity;
+import net.srt.vo.DataProjectUserRelVO;
+import org.mapstruct.Mapper;
+import org.mapstruct.factory.Mappers;
+
+import java.util.List;
+
+/**
+* 项目用户关联表
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-08
+*/
+@Mapper
+public interface DataProjectUserRelConvert {
+ DataProjectUserRelConvert INSTANCE = Mappers.getMapper(DataProjectUserRelConvert.class);
+
+ DataProjectUserRelEntity convert(DataProjectUserRelVO vo);
+
+ DataProjectUserRelVO convert(DataProjectUserRelEntity entity);
+
+ List convertList(List list);
+
+}
\ No newline at end of file
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessDao.java
new file mode 100644
index 0000000..cab61c5
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessDao.java
@@ -0,0 +1,24 @@
+package net.srt.dao;
+
+import net.srt.entity.DataAccessEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
+
+/**
+* 数据集成-数据接入
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-24
+*/
+@Mapper
+public interface DataAccessDao extends BaseDao {
+
+ void updateStartInfo(@Param("dataAccessId") Long dataAccessId);
+
+ void updateEndInfo(@Param("dataAccessId")Long dataAccessId, @Param("runStatus") Integer runStatus, @Param("nextRunTime") Date nextRunTime);
+
+ void changeStatus(@Param("id") Long id, @Param("status") Integer status, @Param("releaseTime") Date releaseTime, @Param("releaseUserId") Long releaseUserId);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessTaskDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessTaskDao.java
new file mode 100644
index 0000000..526a09f
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessTaskDao.java
@@ -0,0 +1,16 @@
+package net.srt.dao;
+
+import net.srt.entity.DataAccessTaskEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* 数据接入任务记录
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-24
+*/
+@Mapper
+public interface DataAccessTaskDao extends BaseDao {
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessTaskDetailDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessTaskDetailDao.java
new file mode 100644
index 0000000..ff70829
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataAccessTaskDetailDao.java
@@ -0,0 +1,16 @@
+package net.srt.dao;
+
+import net.srt.entity.DataAccessTaskDetailEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* 数据接入-同步记录详情
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-28
+*/
+@Mapper
+public interface DataAccessTaskDetailDao extends BaseDao {
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataDatabaseDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataDatabaseDao.java
new file mode 100644
index 0000000..f9f71b4
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataDatabaseDao.java
@@ -0,0 +1,18 @@
+package net.srt.dao;
+
+import net.srt.entity.DataDatabaseEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* 数据集成-数据库管理
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-09
+*/
+@Mapper
+public interface DataDatabaseDao extends BaseDao {
+
+ void changeStatusById(@Param("id") Long id, @Param("status") Integer status);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataFileCategoryDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataFileCategoryDao.java
new file mode 100644
index 0000000..7483c71
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataFileCategoryDao.java
@@ -0,0 +1,16 @@
+package net.srt.dao;
+
+import net.srt.entity.DataFileCategoryEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* 文件分组表
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-12
+*/
+@Mapper
+public interface DataFileCategoryDao extends BaseDao {
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataFileDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataFileDao.java
new file mode 100644
index 0000000..01ac0ca
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataFileDao.java
@@ -0,0 +1,20 @@
+package net.srt.dao;
+
+import net.srt.entity.DataFileEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+* 文件表
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-16
+*/
+@Mapper
+public interface DataFileDao extends BaseDao {
+
+ List getResourceList(Map params);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataLayerDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataLayerDao.java
new file mode 100644
index 0000000..cf46258
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataLayerDao.java
@@ -0,0 +1,16 @@
+package net.srt.dao;
+
+import net.srt.entity.DataLayerEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* 数仓分层
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-08
+*/
+@Mapper
+public interface DataLayerDao extends BaseDao {
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataOdsDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataOdsDao.java
new file mode 100644
index 0000000..33678d5
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataOdsDao.java
@@ -0,0 +1,16 @@
+package net.srt.dao;
+
+import net.srt.entity.DataOdsEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+
+/**
+* 数据集成-贴源数据
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-07
+*/
+@Mapper
+public interface DataOdsDao extends BaseDao {
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataProjectDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataProjectDao.java
new file mode 100644
index 0000000..1770c81
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataProjectDao.java
@@ -0,0 +1,27 @@
+package net.srt.dao;
+
+import net.srt.entity.DataProjectEntity;
+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;
+
+/**
+* 数据项目
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-09-27
+*/
+@Mapper
+public interface DataProjectDao extends BaseDao {
+
+ /**
+ * 查看当前用户拥有的项目
+ * @param userId
+ * @return
+ */
+ List listProjects(@Param("userId") Long userId);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataProjectUserRelDao.java b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataProjectUserRelDao.java
new file mode 100644
index 0000000..cd7289b
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dao/DataProjectUserRelDao.java
@@ -0,0 +1,18 @@
+package net.srt.dao;
+
+import net.srt.entity.DataProjectUserRelEntity;
+import net.srt.framework.mybatis.dao.BaseDao;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+* 项目用户关联表
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-08
+*/
+@Mapper
+public interface DataProjectUserRelDao extends BaseDao {
+
+ DataProjectUserRelEntity getByProjectIdAndUserId(@Param("projectId") Long projectId, @Param("userId") Long userId);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dto/DataAccessClientDto.java b/srt-cloud-data-integrate/src/main/java/net/srt/dto/DataAccessClientDto.java
new file mode 100644
index 0000000..1c2e507
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dto/DataAccessClientDto.java
@@ -0,0 +1,67 @@
+package net.srt.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import srt.cloud.framework.dbswitch.common.entity.PatternMapper;
+
+import java.util.List;
+
+/**
+ * @ClassName DataAccessDto
+ * @Author zrx
+ * @Date 2022/10/25 16:26
+ */
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+@Schema(description = "数据接入任务前端dto")
+public class DataAccessClientDto {
+ @Schema(description = "主键id")
+ private Long id;
+ @Schema(description = "任务名称")
+ private String taskName;
+ @Schema(description = "描述")
+ private String description;
+ @Schema(description = "项目id")
+ private Long projectId;
+ @Schema(description = "源端数据库id")
+ private Long sourceDatabaseId;
+ @Schema(description = "目的端数据库id")
+ private Long targetDatabaseId;
+ @Schema(description = "接入方式 1-ods接入 2-自定义接入")
+ private Integer accessMode;
+ @Schema(description = "任务类型")
+ private Integer taskType;
+ @Schema(description = "cron表达式")
+ private String cron;
+ @Schema(description = "包含表或排除表")
+ private Integer includeOrExclude;
+ @Schema(description = "源端选择的表")
+ private List sourceSelectedTables;
+ @Schema(description = "只创建表")
+ private boolean targetOnlyCreate;
+ @Schema(description = "同步已存在的表")
+ private boolean targetSyncExit;
+ @Schema(description = "同步前是否删除表")
+ private boolean targetDropTable;
+ @Schema(description = "开启增量变更同步")
+ private boolean targetDataSync;
+ @Schema(description = "同步索引")
+ private boolean targetIndexCreate;
+ @Schema(description = "表名字段名转小写")
+ private boolean targetLowerCase;
+ @Schema(description = "表名字段名转大写")
+ private boolean targetUpperCase;
+ @Schema(description = "主键递增")
+ private boolean targetAutoIncrement;
+ @Schema(description = "批处理量")
+ private Integer batchSize;
+ @Schema(description = "表名映射")
+ private List tableNameMapper;
+ @Schema(description = "字段名名映射")
+ private List columnNameMapper;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dto/PreviewMapDto.java b/srt-cloud-data-integrate/src/main/java/net/srt/dto/PreviewMapDto.java
new file mode 100644
index 0000000..30b4837
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dto/PreviewMapDto.java
@@ -0,0 +1,31 @@
+package net.srt.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+import srt.cloud.framework.dbswitch.common.entity.PatternMapper;
+
+import java.util.List;
+
+/**
+ * @ClassName PreviewMapDto
+ * @Author zrx
+ * @Date 2022/10/27 9:46
+ */
+@Data
+public class PreviewMapDto {
+
+ private Long sourceDatabaseId;
+ private Integer includeOrExclude;
+
+ private List sourceSelectedTables;
+ @Schema(description = "表名映射")
+ private List tableNameMapper;
+
+ private String preiveTableName;
+ @Schema(description = "字段名映射")
+ private List columnNameMapper;
+
+ private boolean targetLowerCase;
+ private boolean targetUpperCase;
+ private String tablePrefix;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/dto/SqlConsole.java b/srt-cloud-data-integrate/src/main/java/net/srt/dto/SqlConsole.java
new file mode 100644
index 0000000..b39d193
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/dto/SqlConsole.java
@@ -0,0 +1,14 @@
+package net.srt.dto;
+
+import lombok.Data;
+
+/**
+ * @ClassName sqlConsole
+ * @Author zrx
+ * @Date 2022/10/24 9:50
+ */
+@Data
+public class SqlConsole {
+ private String sql;
+ private Long sqlKey;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessEntity.java
new file mode 100644
index 0000000..a1be9d2
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessEntity.java
@@ -0,0 +1,119 @@
+package net.srt.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+import net.srt.framework.mybatis.entity.BaseEntity;
+import srt.cloud.framework.dbswitch.data.config.DbswichProperties;
+
+import java.util.Date;
+
+/**
+ * 数据集成-数据接入
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-24
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+@SuperBuilder
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName(value = "data_access", autoResultMap = true)
+public class DataAccessEntity extends BaseEntity {
+
+ /**
+ * 任务名称
+ */
+ private String taskName;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ /**
+ * 项目id
+ */
+ private Long projectId;
+
+ /**
+ * 源端数据库id
+ */
+ private Long sourceDatabaseId;
+
+ /**
+ * 目的端数据库id
+ */
+ private Long targetDatabaseId;
+
+ /**
+ * 接入方式 1-ods接入 2-自定义接入
+ */
+ private Integer accessMode;
+
+ /**
+ * 任务类型
+ */
+ private Integer taskType;
+
+ /**
+ * cron表达式
+ */
+ private String cron;
+
+ /**
+ * 发布状态
+ */
+ private Integer status;
+
+ /**
+ * 最新运行状态
+ */
+ private Integer runStatus;
+
+ /**
+ * 数据接入基础配置json
+ */
+ @TableField(typeHandler = JacksonTypeHandler.class)
+ private DbswichProperties dataAccessJson;
+
+ /**
+ * 最近开始时间
+ */
+ private Date startTime;
+
+ /**
+ * 最近结束时间
+ */
+ private Date endTime;
+
+ /**
+ * 发布时间
+ */
+ private Date releaseTime;
+
+ /**
+ * 备注
+ */
+ private String note;
+
+ /**
+ * 发布人id
+ */
+ private Long releaseUserId;
+
+ /**
+ * 下次执行时间
+ */
+ private Date nextRunTime;
+
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessTaskDetailEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessTaskDetailEntity.java
new file mode 100644
index 0000000..339e591
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessTaskDetailEntity.java
@@ -0,0 +1,96 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.util.Date;
+
+/**
+ * 数据接入-同步记录详情
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-28
+ */
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+@TableName("data_access_task_detail")
+public class DataAccessTaskDetailEntity {
+ /**
+ * 主键id
+ */
+ @TableId
+ private Long id;
+
+ /**
+ * 数据接入id
+ */
+ private Long dataAccessId;
+
+ /**
+ * 数据接入任务id
+ */
+ private Long taskId;
+
+ /**
+ * 源端库名
+ */
+ private String sourceSchemaName;
+
+ /**
+ * 源端表名
+ */
+ private String sourceTableName;
+
+ /**
+ * 目的端库名
+ */
+ private String targetSchemaName;
+
+ /**
+ * 目的端表名
+ */
+ private String targetTableName;
+
+ /**
+ * 同步记录数
+ */
+ private Long syncCount;
+
+ /**
+ * 同步数据量
+ */
+ private String syncBytes;
+
+ /**
+ * 是否成功 0-否 1-是
+ */
+ private Integer ifSuccess;
+
+ /**
+ * 失败信息
+ */
+ private String errorMsg;
+
+ /**
+ * 成功信息
+ */
+ private String successMsg;
+
+ /**
+ * 项目id
+ */
+ private Long projectId;
+
+ /**
+ * 创建时间
+ */
+ private Date createTime;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessTaskEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessTaskEntity.java
new file mode 100644
index 0000000..27b4320
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataAccessTaskEntity.java
@@ -0,0 +1,79 @@
+package net.srt.entity;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.*;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 数据接入任务记录
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-26
+ */
+@EqualsAndHashCode(callSuper=true)
+@Data
+@SuperBuilder
+@TableName("data_access_task")
+@AllArgsConstructor
+@NoArgsConstructor
+public class DataAccessTaskEntity extends BaseEntity {
+
+ /**
+ * 数据接入任务id
+ */
+ private Integer dataAccessId;
+
+ /**
+ * 运行状态( 1-等待中 2-运行中 3-正常结束 4-异常结束)
+ */
+ private Integer runStatus;
+
+ /**
+ * 开始时间
+ */
+ private Date startTime;
+
+ /**
+ * 结束时间
+ */
+ private Date endTime;
+
+ private String realTimeLog;
+ /**
+ * 错误信息
+ */
+ private String errorInfo;
+
+ /**
+ * 更新数据量
+ */
+ private Long dataCount;
+
+ /**
+ * 成功表数量
+ */
+ private Long tableSuccessCount;
+
+ /**
+ * 失败表数量
+ */
+ private Long tableFailCount;
+
+ /**
+ * 更新大小
+ */
+ private String byteCount;
+
+ /**
+ * 项目id
+ */
+ private Long projectId;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataDatabaseEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataDatabaseEntity.java
new file mode 100644
index 0000000..543c949
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataDatabaseEntity.java
@@ -0,0 +1,82 @@
+package net.srt.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.*;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 数据集成-数据库管理
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-09
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+@TableName(value = "data_database", autoResultMap = true)
+public class DataDatabaseEntity extends BaseEntity {
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 数据库类型
+ */
+ private Integer databaseType;
+
+ /**
+ * 主机ip
+ */
+ private String databaseIp;
+
+ /**
+ * 端口
+ */
+ private String databasePort;
+
+ /**
+ * 库名
+ */
+ private String databaseName;
+
+ /**
+ * 状态
+ */
+ private Integer status;
+
+ /**
+ * 用户名
+ */
+ private String userName;
+
+ /**
+ * 密码
+ */
+ private String password;
+
+ /**
+ * 是否支持实时接入
+ */
+ private Integer isRtApprove;
+
+ /**
+ * 不支持实时接入原因
+ */
+ private String noRtReason;
+
+ /**
+ * jdbcUrl
+ */
+ private String jdbcUrl;
+
+ /**
+ * 所属项目
+ */
+ private Long projectId;
+
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataFileCategoryEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataFileCategoryEntity.java
new file mode 100644
index 0000000..f99bd34
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataFileCategoryEntity.java
@@ -0,0 +1,59 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
+import lombok.experimental.SuperBuilder;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+/**
+ * 文件分组表
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-12
+ */
+@EqualsAndHashCode(callSuper = true)
+@SuperBuilder
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@TableName("data_file_category")
+public class DataFileCategoryEntity extends BaseEntity {
+
+ /**
+ * 父级id(顶级为0)
+ */
+ private Long parentId;
+
+ /**
+ * 分组名称
+ */
+ private String name;
+
+ /**
+ * 分组序号
+ */
+ private Integer orderNo;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ /**
+ * 分组路径
+ */
+ private String path;
+
+ private Integer type;
+
+ /**
+ * 项目id
+ */
+ private Long projectId;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataFileEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataFileEntity.java
new file mode 100644
index 0000000..028d42c
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataFileEntity.java
@@ -0,0 +1,56 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+/**
+ * 文件表
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-16
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+@TableName("data_file")
+public class DataFileEntity extends BaseEntity {
+
+ /**
+ * 名称
+ */
+ private String name;
+
+ /**
+ * 所属分组id
+ */
+ private Integer fileCategoryId;
+
+ /**
+ * 文件类型
+ */
+ private String type;
+
+ /**
+ * 文件url地址
+ */
+ private String fileUrl;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ /**
+ * 大小
+ */
+ private Long size;
+
+
+ /**
+ * 项目id
+ */
+ private Long projectId;
+
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataLayerEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataLayerEntity.java
new file mode 100644
index 0000000..0f5a36c
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataLayerEntity.java
@@ -0,0 +1,47 @@
+package net.srt.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.*;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 数仓分层
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-08
+ */
+@EqualsAndHashCode(callSuper=false)
+@Data
+@TableName("data_layer")
+public class DataLayerEntity extends BaseEntity {
+
+ /**
+ * 分层英文名称
+ */
+ private String name;
+
+ /**
+ * 分层中文名称
+ */
+ private String cnName;
+
+ /**
+ * 分层描述
+ */
+ private String note;
+
+ /**
+ * 表名前缀
+ */
+ private String tablePrefix;
+
+
+
+
+
+
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataOdsEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataOdsEntity.java
new file mode 100644
index 0000000..df06e43
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataOdsEntity.java
@@ -0,0 +1,52 @@
+package net.srt.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.*;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 数据集成-贴源数据
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-07
+ */
+@EqualsAndHashCode(callSuper=false)
+@Data
+@TableName("data_ods")
+public class DataOdsEntity extends BaseEntity {
+
+ /**
+ * 数据接入id
+ */
+ private Long dataAccessId;
+
+ /**
+ * 表名
+ */
+ private String tableName;
+
+ /**
+ * 注释
+ */
+ private String remarks;
+
+ /**
+ * 项目id
+ */
+ private Long projectId;
+
+ /**
+ * 最近同步时间
+ */
+ private Date recentlySyncTime;
+
+
+
+
+
+
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataProjectEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataProjectEntity.java
new file mode 100644
index 0000000..3df8117
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataProjectEntity.java
@@ -0,0 +1,67 @@
+package net.srt.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+
+/**
+ * 数据项目
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-09-27
+ */
+@EqualsAndHashCode(callSuper = false)
+@Data
+@TableName(value = "data_project", autoResultMap = true)
+public class DataProjectEntity extends BaseEntity {
+
+ /**
+ * 项目名称
+ */
+ private String name;
+
+ /**
+ * 英文名称
+ */
+ private String engName;
+
+ /**
+ * 描述
+ */
+ private String description;
+
+ /**
+ * 状态
+ */
+ private Integer status;
+
+ /**
+ * 负责人
+ */
+ private String dutyPerson;
+
+ /**
+ * 数据库
+ */
+ private String dbName;
+
+ /**
+ * 数据库url
+ */
+ private String dbUrl;
+
+ /**
+ * 数据库用户名
+ */
+ private String dbUsername;
+
+ /**
+ * 数据库密码
+ */
+ private String dbPassword;
+
+ private Integer dbType;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataProjectUserRelEntity.java b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataProjectUserRelEntity.java
new file mode 100644
index 0000000..25d227a
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/entity/DataProjectUserRelEntity.java
@@ -0,0 +1,34 @@
+package net.srt.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import com.baomidou.mybatisplus.annotation.*;
+import net.srt.framework.mybatis.entity.BaseEntity;
+
+import java.util.Date;
+
+/**
+ * 项目用户关联表
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-08
+ */
+@EqualsAndHashCode(callSuper=false)
+@Data
+@TableName("data_project_user_rel")
+public class DataProjectUserRelEntity extends BaseEntity {
+
+ /**
+ * 项目id
+ */
+ private Long dataProjectId;
+
+ /**
+ * 用户id
+ */
+ private Long userId;
+
+
+
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/init/BusinessInitializer.java b/srt-cloud-data-integrate/src/main/java/net/srt/init/BusinessInitializer.java
new file mode 100644
index 0000000..e6a13ee
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/init/BusinessInitializer.java
@@ -0,0 +1,51 @@
+package net.srt.init;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import net.srt.entity.DataProjectEntity;
+import net.srt.service.DataAccessTaskService;
+import net.srt.service.DataProjectService;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @ClassName BusinessInitializer
+ * @Author zrx
+ * @Date 2022/11/27 12:14
+ */
+@Slf4j
+@RequiredArgsConstructor
+@Component
+public class BusinessInitializer implements ApplicationRunner {
+
+ private final DataProjectService dataProjectService;
+ private final DataAccessTaskService accessTaskService;
+
+ @Override
+ public void run(ApplicationArguments args) {
+ initProject();
+ initScheduleMonitor();
+ }
+
+ private void initProject() {
+ log.info("init project cache");
+ List projectEntities = dataProjectService.list();
+ //把所有项目放入本地缓存
+ for (DataProjectEntity project : projectEntities) {
+ dataProjectService.initDb(project);
+ }
+ log.info("init project cache end");
+ }
+
+ /**
+ * init task monitor
+ */
+ private void initScheduleMonitor() {
+ //处理没执行完的同步任务
+ accessTaskService.dealNotFinished();
+ }
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessQuery.java
new file mode 100644
index 0000000..6c1389e
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessQuery.java
@@ -0,0 +1,33 @@
+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;
+
+/**
+* 数据集成-数据接入查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-24
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数据集成-数据接入查询")
+public class DataAccessQuery extends Query {
+ @Schema(description = "任务名称")
+ private String taskName;
+
+ @Schema(description = "项目id")
+ private Integer projectId;
+
+ @Schema(description = "数据库id")
+ private Integer dataDatabaseId;
+
+ @Schema(description = "发布状态")
+ private Integer status;
+
+ @Schema(description = "最新运行状态")
+ private Integer runStatus;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessTaskDetailQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessTaskDetailQuery.java
new file mode 100644
index 0000000..cce9cd3
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessTaskDetailQuery.java
@@ -0,0 +1,24 @@
+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;
+
+/**
+* 数据接入-同步记录详情查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-28
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数据接入-同步记录详情查询")
+public class DataAccessTaskDetailQuery extends Query {
+ @Schema(description = "是否成功 0-否 1-是")
+ private Integer ifSuccess;
+ private Long taskId;
+ private Long projectId;
+ private String tableName;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessTaskQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessTaskQuery.java
new file mode 100644
index 0000000..f7f0c42
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataAccessTaskQuery.java
@@ -0,0 +1,22 @@
+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;
+
+import java.util.Date;
+
+/**
+* 数据接入任务记录查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-24
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数据接入任务记录查询")
+public class DataAccessTaskQuery extends Query {
+ private Long dataAccessId;
+ private Integer runStatus;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataDatabaseQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataDatabaseQuery.java
new file mode 100644
index 0000000..d870086
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataDatabaseQuery.java
@@ -0,0 +1,36 @@
+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;
+
+/**
+* 数据集成-数据库管理查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-09
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数据集成-数据库管理查询")
+public class DataDatabaseQuery extends Query {
+ @Schema(description = "名称")
+ private String name;
+
+ @Schema(description = "数据库类型")
+ private Integer databaseType;
+
+ @Schema(description = "库名")
+ private String databaseName;
+
+ @Schema(description = "状态")
+ private Integer status;
+
+ @Schema(description = "是否支持实时接入")
+ private Integer isRtApprove;
+
+ @Schema(description = "所属项目")
+ private Long projectId;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataFileQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataFileQuery.java
new file mode 100644
index 0000000..e14bad2
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataFileQuery.java
@@ -0,0 +1,28 @@
+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;
+
+import java.util.Date;
+
+/**
+* 文件表查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-16
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "文件表查询")
+public class DataFileQuery extends Query {
+ @Schema(description = "名称")
+ private String name;
+ @Schema(description = "文件类型")
+ private String type;
+ @Schema(description = "文件分组id")
+ private Long fileCategoryId;
+ private Long resourceId;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataLayerQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataLayerQuery.java
new file mode 100644
index 0000000..2c186fa
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataLayerQuery.java
@@ -0,0 +1,25 @@
+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;
+
+import java.util.Date;
+
+/**
+* 数仓分层查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-10-08
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数仓分层查询")
+public class DataLayerQuery extends Query {
+
+ @Schema(description = "分层英文名称")
+ private String name;
+ @Schema(description = "分层中文名称")
+ private String cnName;
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataOdsQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataOdsQuery.java
new file mode 100644
index 0000000..443a855
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataOdsQuery.java
@@ -0,0 +1,29 @@
+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;
+
+import java.util.Date;
+
+/**
+* 数据集成-贴源数据查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-11-07
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数据集成-贴源数据查询")
+public class DataOdsQuery extends Query {
+ @Schema(description = "表名")
+ private String tableName;
+
+ @Schema(description = "注释")
+ private String remarks;
+
+ @Schema(description = "项目id")
+ private Long projectId;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/query/DataProjectQuery.java b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataProjectQuery.java
new file mode 100644
index 0000000..e5bc2e1
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/query/DataProjectQuery.java
@@ -0,0 +1,32 @@
+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;
+
+import java.util.Date;
+
+/**
+* 数据项目查询
+*
+* @author zrx 985134801@qq.com
+* @since 1.0.0 2022-09-27
+*/
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Schema(description = "数据项目查询")
+public class DataProjectQuery extends Query {
+ @Schema(description = "项目名称")
+ private String name;
+
+ @Schema(description = "英文名称")
+ private String engName;
+
+ @Schema(description = "状态")
+ private Integer status;
+
+ @Schema(description = "负责人")
+ private String dutyPerson;
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessService.java
new file mode 100644
index 0000000..4bbd187
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessService.java
@@ -0,0 +1,66 @@
+package net.srt.service;
+
+import net.srt.api.module.data.integrate.dto.PreviewNameMapperDto;
+import net.srt.dto.DataAccessClientDto;
+import net.srt.dto.PreviewMapDto;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.query.DataAccessTaskDetailQuery;
+import net.srt.query.DataAccessTaskQuery;
+import net.srt.vo.DataAccessTaskDetailVO;
+import net.srt.vo.DataAccessTaskVO;
+import net.srt.vo.DataAccessVO;
+import net.srt.query.DataAccessQuery;
+import net.srt.entity.DataAccessEntity;
+import net.srt.vo.PreviewNameMapperVo;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 数据集成-数据接入
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-24
+ */
+public interface DataAccessService extends BaseService {
+
+ PageResult page(DataAccessQuery query);
+
+ DataAccessClientDto getById(Long id);
+
+ void save(DataAccessClientDto dto);
+
+ void update(DataAccessClientDto dto);
+
+ void delete(List idList);
+
+ DataAccessEntity loadById(Long id);
+
+ void updateStartInfo(Long dataAccessId);
+
+ void updateEndInfo(Long dataAccessId, Integer runStatus, Date nextRunTime);
+
+ List getTableMap(Long id);
+
+ List previewTableMap(PreviewMapDto previewMapDto);
+
+ List getColumnMap(Long id, String tableName);
+
+ List previewColumnMap(PreviewMapDto previewMapDto);
+
+ void release(Long id);
+
+ void cancle(Long id);
+
+ void handRun(Long id);
+
+ PageResult taskPage(DataAccessTaskQuery taskQuery);
+
+ void deleteTask(List idList);
+
+ PageResult taskDetailPage(DataAccessTaskDetailQuery detailQuery);
+
+ DataAccessTaskVO getTaskById(Long id);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessTaskDetailService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessTaskDetailService.java
new file mode 100644
index 0000000..1e76f0b
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessTaskDetailService.java
@@ -0,0 +1,31 @@
+package net.srt.service;
+
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.DataAccessTaskDetailVO;
+import net.srt.query.DataAccessTaskDetailQuery;
+import net.srt.entity.DataAccessTaskDetailEntity;
+
+import java.util.List;
+
+/**
+ * 数据接入-同步记录详情
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-28
+ */
+public interface DataAccessTaskDetailService extends BaseService {
+
+ PageResult page(DataAccessTaskDetailQuery query);
+
+ void save(DataAccessTaskDetailVO vo);
+
+ void update(DataAccessTaskDetailVO vo);
+
+ void delete(List idList);
+
+ void deleteByTaskId(List idList);
+
+ void deleteByAccessId(Long id);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessTaskService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessTaskService.java
new file mode 100644
index 0000000..ffe5398
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataAccessTaskService.java
@@ -0,0 +1,30 @@
+package net.srt.service;
+
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.DataAccessTaskVO;
+import net.srt.query.DataAccessTaskQuery;
+import net.srt.entity.DataAccessTaskEntity;
+
+import java.util.List;
+
+/**
+ * 数据接入任务记录
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-24
+ */
+public interface DataAccessTaskService extends BaseService {
+
+ PageResult page(DataAccessTaskQuery query);
+
+ void save(DataAccessTaskVO vo);
+
+ void update(DataAccessTaskVO vo);
+
+ void delete(List idList);
+
+ void deleteByAccessId(Long id);
+
+ void dealNotFinished();
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataDatabaseService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataDatabaseService.java
new file mode 100644
index 0000000..9ad6767
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataDatabaseService.java
@@ -0,0 +1,52 @@
+package net.srt.service;
+
+import net.srt.dto.SqlConsole;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.TreeNodeVo;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.ColumnDescriptionVo;
+import net.srt.vo.DataDatabaseVO;
+import net.srt.query.DataDatabaseQuery;
+import net.srt.entity.DataDatabaseEntity;
+import net.srt.vo.SchemaTableDataVo;
+import net.srt.vo.SqlGenerationVo;
+import net.srt.vo.TableVo;
+
+import java.util.List;
+
+/**
+ * 数据集成-数据库管理
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-09
+ */
+public interface DataDatabaseService extends BaseService {
+
+ PageResult page(DataDatabaseQuery query);
+
+ void save(DataDatabaseVO vo);
+
+ void update(DataDatabaseVO vo);
+
+ void delete(List idList);
+
+ void testOnline(DataDatabaseVO vo);
+
+ List getTablesById(Long id);
+
+ SchemaTableDataVo getTableDataBySql(Integer id, SqlConsole sqlConsole);
+
+ List listAll();
+
+ List listTree(Long id);
+
+ List getColumnInfo(Long id, String tableName);
+
+ SqlGenerationVo getSqlGeneration(Long id, String tableName, String tableRemarks);
+
+ List listMiddleDbTree();
+
+ List middleDbClumnInfo(String tableName);
+
+ SqlGenerationVo getMiddleDbSqlGeneration(String tableName, String tableRemarks);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataFileCategoryService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataFileCategoryService.java
new file mode 100644
index 0000000..5699dcf
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataFileCategoryService.java
@@ -0,0 +1,25 @@
+package net.srt.service;
+
+import net.srt.entity.DataFileCategoryEntity;
+import net.srt.framework.common.utils.TreeNodeVo;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.DataFileCategoryVO;
+
+import java.util.List;
+
+/**
+ * 文件分组表
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-12
+ */
+public interface DataFileCategoryService extends BaseService {
+
+ void save(DataFileCategoryVO vo);
+
+ void update(DataFileCategoryVO vo);
+
+ void delete(Long id);
+
+ List listTree();
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataFileService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataFileService.java
new file mode 100644
index 0000000..06e1ff2
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataFileService.java
@@ -0,0 +1,29 @@
+package net.srt.service;
+
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.DataFileVO;
+import net.srt.query.DataFileQuery;
+import net.srt.entity.DataFileEntity;
+
+import java.util.List;
+
+/**
+ * 文件表
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-16
+ */
+public interface DataFileService extends BaseService {
+
+ PageResult page(DataFileQuery query);
+
+ PageResult pageResource(DataFileQuery query);
+
+ void save(DataFileVO vo);
+
+ void update(DataFileVO vo);
+
+ void delete(List idList);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataLayerService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataLayerService.java
new file mode 100644
index 0000000..0745490
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataLayerService.java
@@ -0,0 +1,26 @@
+package net.srt.service;
+
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.DataLayerVO;
+import net.srt.query.DataLayerQuery;
+import net.srt.entity.DataLayerEntity;
+
+import java.util.List;
+
+/**
+ * 数仓分层
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-08
+ */
+public interface DataLayerService extends BaseService {
+
+ PageResult page(DataLayerQuery query);
+
+ void save(DataLayerVO vo);
+
+ void update(DataLayerVO vo);
+
+ void delete(List idList);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataOdsService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataOdsService.java
new file mode 100644
index 0000000..4c7cbc2
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataOdsService.java
@@ -0,0 +1,34 @@
+package net.srt.service;
+
+import net.srt.entity.DataOdsEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.query.DataOdsQuery;
+import net.srt.vo.ColumnDescriptionVo;
+import net.srt.vo.DataOdsVO;
+import net.srt.vo.SchemaTableDataVo;
+
+import java.util.List;
+
+/**
+ * 数据集成-贴源数据
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-11-07
+ */
+public interface DataOdsService extends BaseService {
+
+ PageResult page(DataOdsQuery query);
+
+ void save(DataOdsVO vo);
+
+ void update(DataOdsVO vo);
+
+ void delete(List idList);
+
+ DataOdsEntity getByTableName(Long projectId, String tableName);
+
+ List getColumnInfo(Long id, String tableName);
+
+ SchemaTableDataVo getTableData(Long id, String tableName);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataProjectService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataProjectService.java
new file mode 100644
index 0000000..e95b84f
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataProjectService.java
@@ -0,0 +1,34 @@
+package net.srt.service;
+
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.DataProjectVO;
+import net.srt.query.DataProjectQuery;
+import net.srt.entity.DataProjectEntity;
+
+import java.util.List;
+
+/**
+ * 数据项目
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-09-27
+ */
+public interface DataProjectService extends BaseService {
+
+ PageResult page(DataProjectQuery query);
+
+ void save(DataProjectVO vo);
+
+ void update(DataProjectVO vo);
+
+ void initDb(DataProjectEntity entity);
+
+ void delete(List idList);
+
+ void addUser(Long projectId, List userIds);
+
+ List listProjects();
+
+ void testOnline(DataProjectVO vo);
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/DataProjectUserRelService.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataProjectUserRelService.java
new file mode 100644
index 0000000..75ff1d6
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/DataProjectUserRelService.java
@@ -0,0 +1,25 @@
+package net.srt.service;
+
+import net.srt.entity.DataProjectUserRelEntity;
+import net.srt.framework.mybatis.service.BaseService;
+import net.srt.vo.DataProjectUserRelVO;
+
+import java.util.List;
+
+/**
+ * 项目用户关联表
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-08
+ */
+public interface DataProjectUserRelService extends BaseService {
+
+ void save(DataProjectUserRelVO vo);
+
+ void update(DataProjectUserRelVO vo);
+
+ void delete(List idList);
+
+ DataProjectUserRelEntity getByProjectIdAndUserId(Long projectId, Long userId);
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessServiceImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessServiceImpl.java
new file mode 100644
index 0000000..ef4a4a5
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessServiceImpl.java
@@ -0,0 +1,447 @@
+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.module.data.integrate.constant.TaskType;
+import net.srt.api.module.data.integrate.dto.PreviewNameMapperDto;
+import net.srt.api.module.quartz.QuartzDataAccessApi;
+import net.srt.constants.AccessMode;
+import net.srt.constants.CommonRunStatus;
+import net.srt.constants.DataHouseLayer;
+import net.srt.constants.YesOrNo;
+import net.srt.convert.DataAccessConvert;
+import net.srt.convert.DataAccessTaskConvert;
+import net.srt.dao.DataAccessDao;
+import net.srt.dao.DataDatabaseDao;
+import net.srt.dto.DataAccessClientDto;
+import net.srt.dto.PreviewMapDto;
+import net.srt.entity.DataAccessEntity;
+import net.srt.entity.DataDatabaseEntity;
+import net.srt.framework.common.cache.bean.DataProjectCacheBean;
+import net.srt.framework.common.config.Config;
+import net.srt.framework.common.exception.ServerException;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.BeanUtil;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.framework.security.user.SecurityUser;
+import net.srt.query.DataAccessQuery;
+import net.srt.query.DataAccessTaskDetailQuery;
+import net.srt.query.DataAccessTaskQuery;
+import net.srt.service.DataAccessService;
+import net.srt.service.DataAccessTaskDetailService;
+import net.srt.service.DataAccessTaskService;
+import net.srt.vo.DataAccessTaskDetailVO;
+import net.srt.vo.DataAccessTaskVO;
+import net.srt.vo.DataAccessVO;
+import net.srt.vo.PreviewNameMapperVo;
+import org.apache.commons.lang3.StringUtils;
+import org.quartz.CronExpression;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+import srt.cloud.framework.dbswitch.common.type.ProductTypeEnum;
+import srt.cloud.framework.dbswitch.common.util.DbswitchStrUtils;
+import srt.cloud.framework.dbswitch.common.util.PatterNameUtils;
+import srt.cloud.framework.dbswitch.common.util.StringUtil;
+import srt.cloud.framework.dbswitch.core.model.ColumnDescription;
+import srt.cloud.framework.dbswitch.core.model.TableDescription;
+import srt.cloud.framework.dbswitch.core.service.IMetaDataByJdbcService;
+import srt.cloud.framework.dbswitch.core.service.impl.MetaDataByJdbcServiceImpl;
+import srt.cloud.framework.dbswitch.data.config.DbswichProperties;
+import srt.cloud.framework.dbswitch.data.entity.SourceDataSourceProperties;
+import srt.cloud.framework.dbswitch.data.entity.TargetDataSourceProperties;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 数据集成-数据接入
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-24
+ */
+@Service
+@AllArgsConstructor
+public class DataAccessServiceImpl extends BaseServiceImpl implements DataAccessService {
+
+ private final DataDatabaseDao dataDatabaseDao;
+ private final QuartzDataAccessApi quartzDataAccessApi;
+ private final DataAccessTaskService dataAccessTaskService;
+ private final DataAccessTaskDetailService dataAccessTaskDetailService;
+ private final Config config;
+
+ private final static String STRING_EMPTY = "";
+ private final static String STRING_DELETE = "";
+
+ @Override
+ public PageResult page(DataAccessQuery query) {
+ IPage page = baseMapper.selectPage(getPage(query), getWrapper(query));
+
+ return new PageResult<>(DataAccessConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
+ }
+
+ @Override
+ public DataAccessClientDto getById(Long id) {
+ DataAccessEntity dataAccessEntity = baseMapper.selectById(id);
+ if (dataAccessEntity == null) {
+ return null;
+ }
+ DbswichProperties dataAccessJson = dataAccessEntity.getDataAccessJson();
+ SourceDataSourceProperties source = dataAccessJson.getSource().get(0);
+ TargetDataSourceProperties target = dataAccessJson.getTarget();
+ return DataAccessClientDto.builder().id(dataAccessEntity.getId()).accessMode(dataAccessEntity.getAccessMode()).taskName(dataAccessEntity.getTaskName())
+ .cron(dataAccessEntity.getCron()).description(dataAccessEntity.getDescription()).projectId(dataAccessEntity.getProjectId())
+ .sourceDatabaseId(dataAccessEntity.getSourceDatabaseId()).targetDatabaseId(dataAccessEntity.getTargetDatabaseId())
+ .taskType(dataAccessEntity.getTaskType()).batchSize(source.getFetchSize()).tableNameMapper(source.getRegexTableMapper())
+ .columnNameMapper(source.getRegexColumnMapper()).includeOrExclude(source.getIncludeOrExclude())
+ .sourceSelectedTables(YesOrNo.YES.getValue().equals(source.getIncludeOrExclude()) ? DbswitchStrUtils.stringToList(source.getSourceIncludes()) : DbswitchStrUtils.stringToList(source.getSourceExcludes()))
+ .targetAutoIncrement(target.getCreateTableAutoIncrement()).targetDataSync(target.getChangeDataSync()).targetDropTable(target.getTargetDrop())
+ .targetIndexCreate(target.getIndexCreate()).targetLowerCase(target.getLowercase()).targetOnlyCreate(target.getOnlyCreate())
+ .targetSyncExit(target.getSyncExist()).targetUpperCase(target.getUppercase()).build();
+ }
+
+ private LambdaQueryWrapper getWrapper(DataAccessQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.like(StringUtil.isNotBlank(query.getTaskName()), DataAccessEntity::getTaskName, query.getTaskName());
+ wrapper.eq(query.getProjectId() != null, DataAccessEntity::getProjectId, query.getProjectId());
+ wrapper.eq(query.getDataDatabaseId() != null, DataAccessEntity::getSourceDatabaseId, query.getDataDatabaseId());
+ wrapper.eq(query.getStatus() != null, DataAccessEntity::getStatus, query.getStatus());
+ wrapper.eq(query.getRunStatus() != null, DataAccessEntity::getRunStatus, query.getRunStatus());
+ dataScopeWithoutOrgId(wrapper);
+ wrapper.orderByDesc(DataAccessEntity::getCreateTime);
+ wrapper.orderByDesc(DataAccessEntity::getId);
+ return wrapper;
+ }
+
+ @Override
+ public void save(DataAccessClientDto dto) {
+ dto.setProjectId(getProjectId());
+ DataAccessEntity dataAccessEntity = buildDataAccessEntity(dto);
+ dataAccessEntity.setProjectId(dto.getProjectId());
+ baseMapper.insert(dataAccessEntity);
+
+ }
+
+ @Override
+ public void update(DataAccessClientDto dto) {
+ dto.setProjectId(getProjectId());
+ DataAccessEntity entity = buildDataAccessEntity(dto);
+ entity.setProjectId(dto.getProjectId());
+ updateById(entity);
+ }
+
+ private DataAccessEntity buildDataAccessEntity(DataAccessClientDto dto) {
+ if (TaskType.ONE_TIME_FULL_PERIODIC_INCR_SYNC.getCode().equals(dto.getTaskType()) && !CronExpression.isValidExpression(dto.getCron())) {
+ throw new ServerException("cron表达式有误,请检查!");
+ }
+ DbswichProperties dbswichProperties = new DbswichProperties();
+ List source = new ArrayList<>(1);
+ SourceDataSourceProperties sourceDataSourceProperties = new SourceDataSourceProperties();
+ DataDatabaseEntity sourceDatabase = dataDatabaseDao.selectById(dto.getSourceDatabaseId());
+ //构建源端
+ ProductTypeEnum sourceProductType = ProductTypeEnum.getByIndex(sourceDatabase.getDatabaseType());
+ sourceDataSourceProperties.setSourceProductType(sourceProductType);
+ sourceDataSourceProperties.setUrl(StringUtil.isBlank(sourceDatabase.getJdbcUrl()) ? sourceProductType.getUrl()
+ .replace("{host}", sourceDatabase.getDatabaseIp())
+ .replace("{port}", sourceDatabase.getDatabasePort())
+ .replace("{database}", sourceDatabase.getDatabaseName()) : sourceDatabase.getJdbcUrl());
+ sourceDataSourceProperties.setDriverClassName(sourceProductType.getDriveClassName());
+ sourceDataSourceProperties.setUsername(sourceDatabase.getUserName());
+ sourceDataSourceProperties.setPassword(sourceDatabase.getPassword());
+ sourceDataSourceProperties.setFetchSize(dto.getBatchSize());
+ sourceDataSourceProperties.setSourceSchema(ProductTypeEnum.ORACLE.getIndex().equals(sourceDatabase.getDatabaseType()) ? sourceDatabase.getUserName() : sourceDatabase.getDatabaseName());
+ Integer includeOrExclude = dto.getIncludeOrExclude();
+ sourceDataSourceProperties.setIncludeOrExclude(includeOrExclude);
+ //如果是包含表
+ if (YesOrNo.YES.getValue().equals(includeOrExclude)) {
+ sourceDataSourceProperties.setSourceIncludes(StringUtils.join(dto.getSourceSelectedTables(), ","));
+ } else {
+ sourceDataSourceProperties.setSourceExcludes(StringUtils.join(dto.getSourceSelectedTables(), ","));
+ }
+ sourceDataSourceProperties.setRegexTableMapper(dto.getTableNameMapper());
+ sourceDataSourceProperties.setRegexColumnMapper(dto.getColumnNameMapper());
+ source.add(sourceDataSourceProperties);
+ //构建目标端
+ TargetDataSourceProperties target = new TargetDataSourceProperties();
+ if (AccessMode.ODS.getValue().equals(dto.getAccessMode())) {
+ DataProjectCacheBean project = getProject(dto.getProjectId());
+ ProductTypeEnum productTypeEnum = ProductTypeEnum.getByIndex(project.getDbType());
+ target.setTargetProductType(productTypeEnum);
+ target.setDriverClassName(productTypeEnum.getDriveClassName());
+ target.setUrl(project.getDbUrl());
+ target.setUsername(project.getDbUsername());
+ target.setPassword(project.getDbPassword());
+ target.setTargetSchema(project.getDbName());
+ target.setTablePrefix(DataHouseLayer.ODS.getTablePrefix());
+ } else {
+ DataDatabaseEntity targetDatabase = dataDatabaseDao.selectById(dto.getTargetDatabaseId());
+ ProductTypeEnum targetProductType = ProductTypeEnum.getByIndex(targetDatabase.getDatabaseType());
+ target.setTargetProductType(targetProductType);
+ target.setUrl(StringUtil.isBlank(targetDatabase.getJdbcUrl()) ? targetProductType.getUrl()
+ .replace("{host}", targetDatabase.getDatabaseIp())
+ .replace("{port}", targetDatabase.getDatabasePort())
+ .replace("{database}", targetDatabase.getDatabaseName()) : targetDatabase.getJdbcUrl());
+ target.setDriverClassName(targetProductType.getDriveClassName());
+ target.setUsername(targetDatabase.getUserName());
+ target.setPassword(targetDatabase.getPassword());
+ target.setTargetSchema(ProductTypeEnum.ORACLE.getIndex().equals(targetDatabase.getDatabaseType()) ? targetDatabase.getUserName() : targetDatabase.getDatabaseName());
+ }
+ target.setTargetDrop(dto.isTargetDropTable());
+ target.setSyncExist(dto.isTargetSyncExit());
+ target.setOnlyCreate(dto.isTargetOnlyCreate());
+ target.setIndexCreate(dto.isTargetIndexCreate());
+ target.setLowercase(dto.isTargetLowerCase());
+ target.setUppercase(dto.isTargetUpperCase());
+ target.setCreateTableAutoIncrement(dto.isTargetAutoIncrement());
+ target.setChangeDataSync(dto.isTargetDataSync());
+ dbswichProperties.setSource(source);
+ dbswichProperties.setTarget(target);
+
+ return DataAccessEntity.builder().id(dto.getId()).taskName(dto.getTaskName()).taskType(dto.getTaskType()).description(dto.getDescription())
+ .accessMode(dto.getAccessMode()).cron(dto.getCron()).projectId(dto.getProjectId()).status(YesOrNo.NO.getValue())
+ .targetDatabaseId(AccessMode.CUSTOM.getValue().equals(dto.getAccessMode()) ? dto.getTargetDatabaseId() : null).sourceDatabaseId(dto.getSourceDatabaseId()).runStatus(CommonRunStatus.WAITING.getCode())
+ .dataAccessJson(dbswichProperties).build();
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(List idList) {
+ removeByIds(idList);
+ for (Long id : idList) {
+ quartzDataAccessApi.cancleAccess(id);
+ //删除记录
+ dataAccessTaskService.deleteByAccessId(id);
+ dataAccessTaskDetailService.deleteByAccessId(id);
+ }
+ }
+
+ @Override
+ public DataAccessEntity loadById(Long id) {
+ return baseMapper.selectById(id);
+ }
+
+ @Override
+ public void updateStartInfo(Long dataAccessId) {
+ baseMapper.updateStartInfo(dataAccessId);
+ }
+
+ @Override
+ public void updateEndInfo(Long dataAccessId, Integer runStatus, Date nextRunTime) {
+ baseMapper.updateEndInfo(dataAccessId, runStatus, nextRunTime);
+ }
+
+ @Override
+ public List getTableMap(Long id) {
+ PreviewMapDto previewMapDto = getPreviewMapDto(id);
+ return BeanUtil.copyListProperties(previewTableMap(previewMapDto).stream().filter(item -> StringUtil.isNotBlank(item.getTargetName())).collect(Collectors.toList()), PreviewNameMapperDto::new);
+ }
+
+
+ @Override
+ public List getColumnMap(Long id, String tableName) {
+ PreviewMapDto previewMapDto = getPreviewMapDto(id);
+ previewMapDto.setPreiveTableName(tableName);
+ return BeanUtil.copyListProperties(previewColumnMap(previewMapDto).stream().filter(item -> !STRING_DELETE.equals(item.getTargetName())).collect(Collectors.toList()), PreviewNameMapperDto::new);
+ }
+
+ private PreviewMapDto getPreviewMapDto(Long id) {
+ DataAccessEntity dataAccessEntity = baseMapper.selectById(id);
+ DbswichProperties dbswichProperties = dataAccessEntity.getDataAccessJson();
+ PreviewMapDto previewMapDto = new PreviewMapDto();
+ previewMapDto.setSourceDatabaseId(dataAccessEntity.getSourceDatabaseId());
+ TargetDataSourceProperties targetDataSourceProperties = dbswichProperties.getTarget();
+ SourceDataSourceProperties sourceDataSourceProperties = dbswichProperties.getSource().get(0);
+ previewMapDto.setIncludeOrExclude(sourceDataSourceProperties.getIncludeOrExclude());
+ List sourceSelectedTables = new ArrayList<>();
+ if (StringUtil.isNotBlank(sourceDataSourceProperties.getSourceIncludes())) {
+ sourceSelectedTables.addAll(Arrays.asList(sourceDataSourceProperties.getSourceIncludes().split(",")));
+ }
+ if (StringUtil.isNotBlank(sourceDataSourceProperties.getSourceExcludes())) {
+ sourceSelectedTables.addAll(Arrays.asList(sourceDataSourceProperties.getSourceExcludes().split(",")));
+ }
+ previewMapDto.setSourceSelectedTables(sourceSelectedTables);
+ previewMapDto.setTableNameMapper(sourceDataSourceProperties.getRegexTableMapper());
+ previewMapDto.setColumnNameMapper(sourceDataSourceProperties.getRegexColumnMapper());
+ previewMapDto.setTablePrefix(targetDataSourceProperties.getTablePrefix());
+ previewMapDto.setTargetLowerCase(targetDataSourceProperties.getLowercase());
+ previewMapDto.setTargetUpperCase(targetDataSourceProperties.getUppercase());
+ return previewMapDto;
+ }
+
+ @Override
+ public List previewTableMap(PreviewMapDto previewMapDto) {
+ boolean include = YesOrNo.YES.getValue().equals(previewMapDto.getIncludeOrExclude());
+ List result = new ArrayList<>(10);
+ List allTableNames = getAllTableNames(previewMapDto);
+ //如果选择的表名为空,则预览全部
+ if (CollectionUtils.isEmpty(previewMapDto.getSourceSelectedTables())) {
+ for (TableDescription td : allTableNames) {
+ String targetName = PatterNameUtils.getFinalName(
+ td.getTableName(), previewMapDto.getTableNameMapper());
+ if (previewMapDto.isTargetLowerCase()) {
+ targetName = targetName.toLowerCase();
+ } else if (previewMapDto.isTargetUpperCase()) {
+ targetName = targetName.toUpperCase();
+ }
+ if (StringUtils.isNotBlank(previewMapDto.getTablePrefix()) && !targetName.startsWith(previewMapDto.getTablePrefix())) {
+ targetName = previewMapDto.getTablePrefix() + targetName;
+ }
+ result.add(PreviewNameMapperVo.builder()
+ .originalName(td.getTableName())
+ .targetName(StringUtils.isNotBlank(targetName) ? targetName : STRING_EMPTY)
+ .remarks(StringUtil.isNotBlank(td.getRemarks()) ? td.getRemarks() : td.getTableName())
+ .build());
+ }
+ } else {
+ if (include) {
+ for (String name : previewMapDto.getSourceSelectedTables()) {
+ if (StringUtils.isNotBlank(name)) {
+ String targetName = PatterNameUtils.getFinalName(
+ name, previewMapDto.getTableNameMapper());
+ if (previewMapDto.isTargetLowerCase()) {
+ targetName = targetName.toLowerCase();
+ } else if (previewMapDto.isTargetUpperCase()) {
+ targetName = targetName.toUpperCase();
+ }
+ if (StringUtils.isNotBlank(previewMapDto.getTablePrefix()) && !targetName.startsWith(previewMapDto.getTablePrefix())) {
+ targetName = previewMapDto.getTablePrefix() + targetName;
+ }
+ TableDescription tableDescription = allTableNames.stream().filter(item -> name.equals(item.getTableName())).findFirst().orElse(null);
+ result.add(PreviewNameMapperVo.builder()
+ .originalName(name)
+ .targetName(StringUtils.isNotBlank(targetName) ? targetName : STRING_EMPTY)
+ .remarks(tableDescription != null ? tableDescription.getRemarks() : null)
+ .build());
+ }
+ }
+ } else {
+ for (TableDescription td : allTableNames) {
+ if (!previewMapDto.getSourceSelectedTables().contains(td.getTableName())) {
+ String targetName = PatterNameUtils.getFinalName(td.getTableName(), previewMapDto.getTableNameMapper());
+ if (previewMapDto.isTargetLowerCase()) {
+ targetName = targetName.toLowerCase();
+ } else if (previewMapDto.isTargetUpperCase()) {
+ targetName = targetName.toUpperCase();
+ }
+ if (StringUtils.isNotBlank(previewMapDto.getTablePrefix()) && !targetName.startsWith(previewMapDto.getTablePrefix())) {
+ targetName = previewMapDto.getTablePrefix() + targetName;
+ }
+ result.add(PreviewNameMapperVo.builder()
+ .originalName(td.getTableName())
+ .targetName(StringUtils.isNotBlank(targetName) ? targetName : STRING_EMPTY)
+ .remarks(td.getRemarks())
+ .build());
+ }
+ }
+ }
+ }
+ return result;
+ }
+
+
+ @Override
+ public List previewColumnMap(PreviewMapDto previewMapDto) {
+ if (previewMapDto.getSourceDatabaseId() == null || StringUtils.isBlank(previewMapDto.getPreiveTableName())) {
+ throw new ServerException("请选择源端数据库,数据表");
+ }
+ List result = new ArrayList<>(10);
+ DataDatabaseEntity databaseEntity = dataDatabaseDao.selectById(previewMapDto.getSourceDatabaseId());
+ if (databaseEntity == null) {
+ throw new ServerException("选择的源端数据库已不存在!");
+ }
+ ProductTypeEnum productTypeEnum = ProductTypeEnum.getByIndex(databaseEntity.getDatabaseType());
+ IMetaDataByJdbcService service = new MetaDataByJdbcServiceImpl(productTypeEnum);
+ List columns = service.queryTableColumnMetaOnly(StringUtil.isBlank(databaseEntity.getJdbcUrl()) ? productTypeEnum.getUrl()
+ .replace("{host}", databaseEntity.getDatabaseIp())
+ .replace("{port}", databaseEntity.getDatabasePort())
+ .replace("{database}", databaseEntity.getDatabaseName()) : databaseEntity.getJdbcUrl(), databaseEntity.getUserName(), databaseEntity.getPassword(), ProductTypeEnum.ORACLE.equals(productTypeEnum) ? databaseEntity.getUserName() : databaseEntity.getDatabaseName(),
+ previewMapDto.getPreiveTableName());
+ for (ColumnDescription cd : columns) {
+ String targetName = PatterNameUtils.getFinalName(cd.getFieldName(), previewMapDto.getColumnNameMapper());
+ if (previewMapDto.isTargetLowerCase()) {
+ targetName = targetName.toLowerCase();
+ } else if (previewMapDto.isTargetUpperCase()) {
+ targetName = targetName.toUpperCase();
+ }
+ result.add(PreviewNameMapperVo.builder()
+ .originalName(cd.getFieldName())
+ .targetName(StringUtils.isNotBlank(targetName) ? targetName : STRING_DELETE)
+ .remarks(StringUtil.isNotBlank(cd.getRemarks()) ? cd.getRemarks() : cd.getFieldName())
+ .build());
+ }
+ return result;
+ }
+
+ @Override
+ public void release(Long id) {
+ DataAccessEntity dataAccessEntity = baseMapper.selectById(id);
+ if (TaskType.REAL_TIME_SYNC.getCode().equals(dataAccessEntity.getTaskType())) {
+ throw new ServerException("暂不支持实时同步!");
+ }
+ quartzDataAccessApi.releaseAccess(id);
+ //更新状态,发布时间和发布人
+ baseMapper.changeStatus(id, YesOrNo.YES.getValue(), new Date(), SecurityUser.getUserId());
+ }
+
+ @Override
+ public void cancle(Long id) {
+ quartzDataAccessApi.cancleAccess(id);
+ //更新状态
+ baseMapper.changeStatus(id, YesOrNo.NO.getValue(), null, null);
+ }
+
+ @Override
+ public void handRun(Long id) {
+ quartzDataAccessApi.handRun(id);
+ }
+
+ @Override
+ public PageResult taskPage(DataAccessTaskQuery taskQuery) {
+ return dataAccessTaskService.page(taskQuery);
+ }
+
+ @Override
+ public void deleteTask(List idList) {
+ dataAccessTaskService.delete(idList);
+ //删除对应的同步结果
+ dataAccessTaskDetailService.deleteByTaskId(idList);
+ }
+
+ @Override
+ public PageResult taskDetailPage(DataAccessTaskDetailQuery detailQuery) {
+ detailQuery.setProjectId(getProjectId());
+ return dataAccessTaskDetailService.page(detailQuery);
+ }
+
+ @Override
+ public DataAccessTaskVO getTaskById(Long id) {
+ return DataAccessTaskConvert.INSTANCE.convert(dataAccessTaskService.getById(id));
+ }
+
+
+ private List getAllTableNames(PreviewMapDto previewMapDto) {
+ if (previewMapDto.getSourceDatabaseId() == null) {
+ throw new ServerException("请选择源端数据库");
+ }
+ DataDatabaseEntity databaseEntity = dataDatabaseDao.selectById(previewMapDto.getSourceDatabaseId());
+
+ if (databaseEntity == null) {
+ throw new ServerException("选择的源端数据库已不存在!");
+ }
+
+ ProductTypeEnum productTypeEnum = ProductTypeEnum.getByIndex(databaseEntity.getDatabaseType());
+ IMetaDataByJdbcService service = new MetaDataByJdbcServiceImpl(productTypeEnum);
+
+ return service.queryTableList(StringUtil.isBlank(databaseEntity.getJdbcUrl()) ? productTypeEnum.getUrl()
+ .replace("{host}", databaseEntity.getDatabaseIp())
+ .replace("{port}", databaseEntity.getDatabasePort())
+ .replace("{database}", databaseEntity.getDatabaseName()) : databaseEntity.getJdbcUrl(), databaseEntity.getUserName(), databaseEntity.getPassword(),
+ ProductTypeEnum.ORACLE.equals(productTypeEnum) ? databaseEntity.getUserName() : databaseEntity.getDatabaseName()).stream().filter(td -> !td.isViewTable())
+ .collect(Collectors.toList());
+ }
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessTaskDetailServiceImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessTaskDetailServiceImpl.java
new file mode 100644
index 0000000..0456c9a
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessTaskDetailServiceImpl.java
@@ -0,0 +1,85 @@
+package net.srt.service.impl;
+
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import lombok.AllArgsConstructor;
+import net.srt.convert.DataAccessTaskDetailConvert;
+import net.srt.entity.DataAccessTaskDetailEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.query.DataAccessTaskDetailQuery;
+import net.srt.vo.DataAccessTaskDetailVO;
+import net.srt.dao.DataAccessTaskDetailDao;
+import net.srt.service.DataAccessTaskDetailService;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import srt.cloud.framework.dbswitch.common.util.StringUtil;
+
+import java.util.List;
+
+/**
+ * 数据接入-同步记录详情
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-28
+ */
+@Service
+@AllArgsConstructor
+public class DataAccessTaskDetailServiceImpl extends BaseServiceImpl implements DataAccessTaskDetailService {
+
+ @Override
+ public PageResult page(DataAccessTaskDetailQuery query) {
+ IPage page = baseMapper.selectPage(getPage(query), getWrapper(query));
+
+ return new PageResult<>(DataAccessTaskDetailConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
+ }
+
+ private LambdaQueryWrapper getWrapper(DataAccessTaskDetailQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(query.getIfSuccess() != null, DataAccessTaskDetailEntity::getIfSuccess, query.getIfSuccess());
+ wrapper.eq(query.getProjectId() != null, DataAccessTaskDetailEntity::getProjectId, query.getProjectId());
+ wrapper.eq(query.getTaskId() != null, DataAccessTaskDetailEntity::getTaskId, query.getTaskId());
+ wrapper.eq(StringUtil.isNotBlank(query.getTableName()), DataAccessTaskDetailEntity::getTargetTableName, query.getTableName());
+ wrapper.orderByDesc(DataAccessTaskDetailEntity::getCreateTime);
+ wrapper.orderByDesc(DataAccessTaskDetailEntity::getId);
+ return wrapper;
+ }
+
+ @Override
+ public void save(DataAccessTaskDetailVO vo) {
+ DataAccessTaskDetailEntity entity = DataAccessTaskDetailConvert.INSTANCE.convert(vo);
+
+ baseMapper.insert(entity);
+ }
+
+ @Override
+ public void update(DataAccessTaskDetailVO vo) {
+ DataAccessTaskDetailEntity entity = DataAccessTaskDetailConvert.INSTANCE.convert(vo);
+
+ updateById(entity);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(List idList) {
+ removeByIds(idList);
+ }
+
+ @Override
+ public void deleteByTaskId(List idList) {
+ idList.forEach(taskId -> {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(DataAccessTaskDetailEntity::getTaskId, taskId);
+ remove(wrapper);
+ });
+ }
+
+ @Override
+ public void deleteByAccessId(Long id) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(DataAccessTaskDetailEntity::getDataAccessId, id);
+ remove(wrapper);
+ }
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessTaskServiceImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessTaskServiceImpl.java
new file mode 100644
index 0000000..052e788
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataAccessTaskServiceImpl.java
@@ -0,0 +1,90 @@
+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.constants.CommonRunStatus;
+import net.srt.convert.DataAccessTaskConvert;
+import net.srt.dao.DataAccessTaskDao;
+import net.srt.entity.DataAccessTaskEntity;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.DateUtils;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.query.DataAccessTaskQuery;
+import net.srt.service.DataAccessTaskService;
+import net.srt.vo.DataAccessTaskVO;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 数据接入任务记录
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-24
+ */
+@Service
+@AllArgsConstructor
+public class DataAccessTaskServiceImpl extends BaseServiceImpl implements DataAccessTaskService {
+
+ @Override
+ public PageResult page(DataAccessTaskQuery query) {
+ IPage page = baseMapper.selectPage(getPage(query), getWrapper(query));
+
+ return new PageResult<>(DataAccessTaskConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
+ }
+
+ private LambdaQueryWrapper getWrapper(DataAccessTaskQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.eq(DataAccessTaskEntity::getDataAccessId, query.getDataAccessId());
+ wrapper.eq(query.getRunStatus() != null, DataAccessTaskEntity::getRunStatus, query.getRunStatus());
+ wrapper.orderByDesc(DataAccessTaskEntity::getCreateTime);
+ wrapper.orderByDesc(DataAccessTaskEntity::getId);
+ return wrapper;
+ }
+
+ @Override
+ public void save(DataAccessTaskVO vo) {
+ DataAccessTaskEntity entity = DataAccessTaskConvert.INSTANCE.convert(vo);
+
+ baseMapper.insert(entity);
+ }
+
+ @Override
+ public void update(DataAccessTaskVO vo) {
+ DataAccessTaskEntity entity = DataAccessTaskConvert.INSTANCE.convert(vo);
+
+ updateById(entity);
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(List idList) {
+ removeByIds(idList);
+ }
+
+ @Override
+ public void deleteByAccessId(Long id) {
+ LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(DataAccessTaskEntity::getDataAccessId, id);
+ remove(wrapper);
+ }
+
+ @Override
+ public void dealNotFinished() {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.in(DataAccessTaskEntity::getRunStatus, CommonRunStatus.WAITING.getCode(), CommonRunStatus.RUNNING.getCode());
+ List accessTaskEntities = baseMapper.selectList(wrapper);
+ for (DataAccessTaskEntity accessTaskEntity : accessTaskEntities) {
+ accessTaskEntity.setEndTime(new Date());
+ accessTaskEntity.setRunStatus(CommonRunStatus.FAILED.getCode());
+ String errorLog = DateUtils.formatDateTime(new Date()) + " The sync task has unexpected stop,you can try run again";
+ accessTaskEntity.setErrorInfo(accessTaskEntity.getErrorInfo() == null ? errorLog : accessTaskEntity.getErrorInfo() + "\r\n" + errorLog);
+ baseMapper.updateById(accessTaskEntity);
+ }
+ }
+
+}
diff --git a/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataDatabaseServiceImpl.java b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataDatabaseServiceImpl.java
new file mode 100644
index 0000000..4d10450
--- /dev/null
+++ b/srt-cloud-data-integrate/src/main/java/net/srt/service/impl/DataDatabaseServiceImpl.java
@@ -0,0 +1,351 @@
+package net.srt.service.impl;
+
+import cn.hutool.core.util.StrUtil;
+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 lombok.SneakyThrows;
+import net.sf.jsqlparser.parser.CCJSqlParserUtil;
+import net.sf.jsqlparser.statement.Statement;
+import net.sf.jsqlparser.statement.select.Select;
+import net.srt.constants.DataHouseLayer;
+import net.srt.constants.MiddleTreeNodeType;
+import net.srt.constants.YesOrNo;
+import net.srt.convert.DataDatabaseConvert;
+import net.srt.dao.DataAccessDao;
+import net.srt.dao.DataDatabaseDao;
+import net.srt.dto.SqlConsole;
+import net.srt.entity.DataAccessEntity;
+import net.srt.entity.DataDatabaseEntity;
+import net.srt.framework.common.cache.bean.DataProjectCacheBean;
+import net.srt.framework.common.exception.ServerException;
+import net.srt.framework.common.page.PageResult;
+import net.srt.framework.common.utils.BeanUtil;
+import net.srt.framework.common.utils.SqlUtils;
+import net.srt.framework.common.utils.TreeNodeVo;
+import net.srt.framework.mybatis.service.impl.BaseServiceImpl;
+import net.srt.query.DataDatabaseQuery;
+import net.srt.service.DataAccessService;
+import net.srt.service.DataDatabaseService;
+import net.srt.vo.ColumnDescriptionVo;
+import net.srt.vo.DataDatabaseVO;
+import net.srt.vo.SchemaTableDataVo;
+import net.srt.vo.SqlGenerationVo;
+import net.srt.vo.TableVo;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import srt.cloud.framework.dbswitch.common.type.ProductTypeEnum;
+import srt.cloud.framework.dbswitch.common.util.StringUtil;
+import srt.cloud.framework.dbswitch.core.model.ColumnDescription;
+import srt.cloud.framework.dbswitch.core.model.SchemaTableData;
+import srt.cloud.framework.dbswitch.core.model.TableDescription;
+import srt.cloud.framework.dbswitch.core.service.IMetaDataByJdbcService;
+import srt.cloud.framework.dbswitch.core.service.impl.MetaDataByJdbcServiceImpl;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 数据集成-数据库管理
+ *
+ * @author zrx 985134801@qq.com
+ * @since 1.0.0 2022-10-09
+ */
+@Service
+@AllArgsConstructor
+public class DataDatabaseServiceImpl extends BaseServiceImpl implements DataDatabaseService {
+
+ private final DataAccessDao dataAccessDao;
+ private final DataAccessService dataAccessService;
+
+ @Override
+ public PageResult page(DataDatabaseQuery query) {
+ IPage page = baseMapper.selectPage(getPage(query), getWrapper(query));
+
+ return new PageResult<>(DataDatabaseConvert.INSTANCE.convertList(page.getRecords()), page.getTotal());
+ }
+
+ private LambdaQueryWrapper getWrapper(DataDatabaseQuery query) {
+ LambdaQueryWrapper wrapper = Wrappers.lambdaQuery();
+ wrapper.like(StrUtil.isNotBlank(query.getName()), DataDatabaseEntity::getName, query.getName());
+ wrapper.like(StrUtil.isNotBlank(query.getDatabaseName()), DataDatabaseEntity::getDatabaseName, query.getDatabaseName());
+ wrapper.eq(query.getDatabaseType() != null, DataDatabaseEntity::getDatabaseType, query.getDatabaseType());
+ wrapper.eq(query.getStatus() != null, DataDatabaseEntity::getStatus, query.getStatus());
+ wrapper.eq(query.getIsRtApprove() != null, DataDatabaseEntity::getIsRtApprove, query.getIsRtApprove());
+ wrapper.eq(query.getProjectId() != null, DataDatabaseEntity::getProjectId, query.getProjectId());
+ dataScopeWithoutOrgId(wrapper);
+ return wrapper;
+ }
+
+ @Override
+ public void save(DataDatabaseVO vo) {
+ DataDatabaseEntity entity = DataDatabaseConvert.INSTANCE.convert(vo);
+ entity.setProjectId(getProjectId());
+ setJdbcUrlByEntity(entity);
+ baseMapper.insert(entity);
+ try {
+ testOnline(DataDatabaseConvert.INSTANCE.convert(entity));
+ } catch (Exception ignored) {
+ }
+
+ }
+
+ @Override
+ public void update(DataDatabaseVO vo) {
+ DataDatabaseEntity entity = DataDatabaseConvert.INSTANCE.convert(vo);
+ LambdaQueryWrapper dataAccessEntityWrapper = new LambdaQueryWrapper<>();
+ dataAccessEntityWrapper.eq(DataAccessEntity::getSourceDatabaseId, vo.getId()).or().eq(DataAccessEntity::getTargetDatabaseId, vo.getId());
+ setJdbcUrlByEntity(entity);
+ entity.setProjectId(getProjectId());
+ List dataAccessEntities = dataAccessDao.selectList(dataAccessEntityWrapper);
+ for (DataAccessEntity dataAccessEntity : dataAccessEntities) {
+ //修改数据库的同时,同时修改一下相关的数据接入任务
+ dataAccessService.update(dataAccessService.getById(dataAccessEntity.getId()));
+ }
+ updateById(entity);
+ try {
+ testOnline(DataDatabaseConvert.INSTANCE.convert(entity));
+ } catch (Exception ignored) {
+ }
+ }
+
+ private void setJdbcUrlByEntity(DataDatabaseEntity entity) {
+ ProductTypeEnum productTypeEnum = ProductTypeEnum.getByIndex(entity.getDatabaseType());
+ entity.setJdbcUrl(StringUtil.isBlank(entity.getJdbcUrl()) ? productTypeEnum.getUrl()
+ .replace("{host}", entity.getDatabaseIp())
+ .replace("{port}", entity.getDatabasePort())
+ .replace("{database}", entity.getDatabaseName()) : entity.getJdbcUrl());
+ }
+
+ @Override
+ @Transactional(rollbackFor = Exception.class)
+ public void delete(List idList) {
+ LambdaQueryWrapper dataAccessEntityWrapper = new LambdaQueryWrapper<>();
+ dataAccessEntityWrapper.in(DataAccessEntity::getSourceDatabaseId, idList).or().in(DataAccessEntity::getTargetDatabaseId, idList).last(" limit 1");
+ if (dataAccessDao.selectOne(dataAccessEntityWrapper) != null) {
+ throw new ServerException("要删除的数据库中有数据接入任务与之关联,不允许删除!");
+ }
+
+ removeByIds(idList);
+ }
+
+ @Override
+ public void testOnline(DataDatabaseVO vo) {
+ ProductTypeEnum productTypeEnum = ProductTypeEnum.getByIndex(vo.getDatabaseType());
+ IMetaDataByJdbcService metaDataService = new MetaDataByJdbcServiceImpl(productTypeEnum);
+ if (StringUtil.isBlank(vo.getJdbcUrl())) {
+ vo.setJdbcUrl(productTypeEnum.getUrl()
+ .replace("{host}", vo.getDatabaseIp())
+ .replace("{port}", vo.getDatabasePort())
+ .replace("{database}", vo.getDatabaseName()));
+ }
+ metaDataService.testQuerySQL(
+ vo.getJdbcUrl(),
+ vo.getUserName(),
+ vo.getPassword(),
+ productTypeEnum.getTestSql()
+ );
+ if (vo.getId() != null) {
+ //更新状态
+ baseMapper.changeStatusById(vo.getId(), YesOrNo.YES.getValue());
+ }
+ }
+
+ @Override
+ public List getTablesById(Long id) {
+ DataDatabaseEntity dataDatabaseEntity = baseMapper.selectById(id);
+ return getTables(dataDatabaseEntity);
+ }
+
+ private List getTables(DataDatabaseEntity dataDatabaseEntity) {
+ ProductTypeEnum productTypeEnum = ProductTypeEnum.getByIndex(dataDatabaseEntity.getDatabaseType());
+ IMetaDataByJdbcService metaDataService = new MetaDataByJdbcServiceImpl(productTypeEnum);
+ List tableDescriptions = metaDataService.queryTableList(StringUtil.isBlank(dataDatabaseEntity.getJdbcUrl()) ? productTypeEnum.getUrl()
+ .replace("{host}", dataDatabaseEntity.getDatabaseIp())
+ .replace("{port}", dataDatabaseEntity.getDatabasePort())
+ .replace("{database}", dataDatabaseEntity.getDatabaseName()) : dataDatabaseEntity.getJdbcUrl(), dataDatabaseEntity.getUserName(), dataDatabaseEntity.getPassword(),
+ ProductTypeEnum.ORACLE.equals(productTypeEnum) ? dataDatabaseEntity.getUserName() : dataDatabaseEntity.getDatabaseName());
+ return BeanUtil.copyListProperties(tableDescriptions, TableVo::new);
+ }
+
+ @SneakyThrows
+ @Override
+ public SchemaTableDataVo getTableDataBySql(Integer id, SqlConsole sqlConsole) {
+ Statement parse = CCJSqlParserUtil.parse(sqlConsole.getSql());
+ if (!(parse instanceof Select)) {
+ throw new ServerException("只能执行select查询语句!");
+ }
+ DataDatabaseEntity dataDatabaseEntity = baseMapper.selectById(id);
+ ProductTypeEnum productTypeEnum = ProductTypeEnum.getByIndex(dataDatabaseEntity.getDatabaseType());
+ IMetaDataByJdbcService metaDataService = new MetaDataByJdbcServiceImpl(productTypeEnum);
+ SchemaTableData schemaTableData = metaDataService.queryTableDataBySql(StringUtil.isBlank(dataDatabaseEntity.getJdbcUrl()) ? productTypeEnum.getUrl()
+ .replace("{host}", dataDatabaseEntity.getDatabaseIp())
+ .replace("{port}", dataDatabaseEntity.getDatabasePort())
+ .replace("{database}", dataDatabaseEntity.getDatabaseName()) : dataDatabaseEntity.getJdbcUrl(), dataDatabaseEntity.getUserName(), dataDatabaseEntity.getPassword(), sqlConsole.getSql(), 100);
+ return SchemaTableDataVo.builder().columns(SqlUtils.convertColumns(schemaTableData.getColumns())).rows(SqlUtils.convertRows(schemaTableData.getColumns(), schemaTableData.getRows())).build();
+ }
+
+ @Override
+ public List listAll() {
+ LambdaQueryWrapper