From f270a9bb120fe4ae4e87eb39188de3f1619c0969 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?= <806783409@qq.com> Date: Fri, 23 Apr 2021 22:58:16 +0800 Subject: [PATCH] =?UTF-8?q?DDL=E5=A4=9A=E6=95=B0=E6=8D=AE=E6=BA=90?= =?UTF-8?q?=E6=94=AF=E6=8C=81=EF=BC=8C=E8=99=BD=E7=84=B6=E8=BF=98=E6=B2=A1?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../db/controller/DatabaseDocController.java | 9 +-- .../doc/db/controller/vo/TableDdlVo.java | 61 +++++++++++++++++++ .../doc/db/service/DbBaseService.java | 3 +- .../doc/db/service/MysqlServiceImpl.java | 10 ++- zyplayer-doc-ui/db-ui/.env.development | 4 +- .../db-ui/src/views/table/Info.vue | 32 ++++++++-- 6 files changed, 105 insertions(+), 14 deletions(-) create mode 100644 zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DatabaseDocController.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DatabaseDocController.java index 1df1a8fb..df91a3d3 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DatabaseDocController.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/DatabaseDocController.java @@ -16,6 +16,7 @@ import com.zyplayer.doc.data.utils.CacheUtil; import com.zyplayer.doc.db.controller.vo.DatabaseExportVo; import com.zyplayer.doc.db.controller.vo.TableColumnVo; import com.zyplayer.doc.db.controller.vo.TableColumnVo.TableInfoVo; +import com.zyplayer.doc.db.controller.vo.TableDdlVo; import com.zyplayer.doc.db.controller.vo.TableStatusVo; import com.zyplayer.doc.db.framework.consts.DbAuthType; import com.zyplayer.doc.db.framework.db.bean.DatabaseFactoryBean; @@ -110,8 +111,8 @@ public class DatabaseDocController { @PostMapping(value = "/getTableDdl") public ResponseJson getTableDdl(Long sourceId, String dbName, String tableName) { DbBaseService dbBaseService = dbBaseFactory.getDbBaseService(sourceId); - String tableDdl = dbBaseService.getTableDdl(sourceId, dbName, tableName); - return DocDbResponseJson.ok(tableDdl); + TableDdlVo tableDdlVo = dbBaseService.getTableDdl(sourceId, dbName, tableName); + return DocDbResponseJson.ok(tableDdlVo); } @PostMapping(value = "/getDatabaseList") @@ -200,8 +201,8 @@ public class DatabaseDocController { DbBaseService dbBaseService = dbBaseFactory.getDbBaseService(sourceId); Map ddlSqlMap = new HashMap<>(); for (String tableName : tableNameList) { - String tableDdl = dbBaseService.getTableDdl(sourceId, dbName, tableName); - ddlSqlMap.put(tableName, tableDdl); + TableDdlVo tableDdlVo = dbBaseService.getTableDdl(sourceId, dbName, tableName); + ddlSqlMap.put(tableName, tableDdlVo.getTableDDLByType()); } try { DatabaseFactoryBean databaseFactoryBean = databaseRegistrationBean.getOrCreateFactoryById(sourceId); diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java new file mode 100644 index 00000000..1f129dae --- /dev/null +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/controller/vo/TableDdlVo.java @@ -0,0 +1,61 @@ +package com.zyplayer.doc.db.controller.vo; + +import com.zyplayer.doc.db.framework.db.bean.DatabaseFactoryBean; + +import java.util.Objects; + +public class TableDdlVo { + private String current; + private String mysql; + private String sqlserver; + private String oracle; + private String postgresql; + + public String getTableDDLByType() { + if (Objects.equals(current, DatabaseFactoryBean.DatabaseProduct.MYSQL.name().toLowerCase())) return mysql; + if (Objects.equals(current, DatabaseFactoryBean.DatabaseProduct.SQLSERVER.name().toLowerCase())) return sqlserver; + if (Objects.equals(current, DatabaseFactoryBean.DatabaseProduct.ORACLE.name().toLowerCase())) return oracle; + if (Objects.equals(current, DatabaseFactoryBean.DatabaseProduct.POSTGRESQL.name().toLowerCase())) return postgresql; + return null; + } + + public String getCurrent() { + return current; + } + + public void setCurrent(String current) { + this.current = current; + } + + public String getMysql() { + return mysql; + } + + public void setMysql(String mysql) { + this.mysql = mysql; + } + + public String getSqlserver() { + return sqlserver; + } + + public void setSqlserver(String sqlserver) { + this.sqlserver = sqlserver; + } + + public String getOracle() { + return oracle; + } + + public void setOracle(String oracle) { + this.oracle = oracle; + } + + public String getPostgresql() { + return postgresql; + } + + public void setPostgresql(String postgresql) { + this.postgresql = postgresql; + } +} diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/DbBaseService.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/DbBaseService.java index 8b8891cc..e24106a3 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/DbBaseService.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/DbBaseService.java @@ -4,6 +4,7 @@ import com.zyplayer.doc.core.exception.ConfirmException; import com.zyplayer.doc.data.config.security.DocUserUtil; import com.zyplayer.doc.data.repository.support.consts.DocAuthConst; import com.zyplayer.doc.db.controller.vo.TableColumnVo; +import com.zyplayer.doc.db.controller.vo.TableDdlVo; import com.zyplayer.doc.db.controller.vo.TableStatusVo; import com.zyplayer.doc.db.framework.consts.DbAuthType; import com.zyplayer.doc.db.framework.db.bean.DatabaseFactoryBean; @@ -66,7 +67,7 @@ public abstract class DbBaseService { * @author 暮光:城中城 * @since 2018年8月8日 */ - public String getTableDdl(Long sourceId, String dbName, String tableName) { + public TableDdlVo getTableDdl(Long sourceId, String dbName, String tableName) { // 需要各数据服务自己实现,各数据库产品的实现都不一样 throw new ConfirmException("暂未支持的数据库类型"); } diff --git a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/MysqlServiceImpl.java b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/MysqlServiceImpl.java index 10becead..41aac6ec 100644 --- a/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/MysqlServiceImpl.java +++ b/zyplayer-doc-db/src/main/java/com/zyplayer/doc/db/service/MysqlServiceImpl.java @@ -1,5 +1,6 @@ package com.zyplayer.doc.db.service; +import com.zyplayer.doc.db.controller.vo.TableDdlVo; import com.zyplayer.doc.db.framework.db.bean.DatabaseFactoryBean; import com.zyplayer.doc.db.framework.db.dto.ColumnInfoDto; import com.zyplayer.doc.db.framework.db.mapper.base.BaseMapper; @@ -19,10 +20,15 @@ public class MysqlServiceImpl extends DbBaseService { } @Override - public String getTableDdl(Long sourceId, String dbName, String tableName) { + public TableDdlVo getTableDdl(Long sourceId, String dbName, String tableName) { BaseMapper baseMapper = this.getViewAuthBaseMapper(sourceId); Map tableDdl = baseMapper.getTableDdl(dbName, tableName); - return tableDdl.get("Create Table"); + TableDdlVo tableDdlVo = new TableDdlVo(); + tableDdlVo.setCurrent(DatabaseFactoryBean.DatabaseProduct.MYSQL.name().toLowerCase()); + tableDdlVo.setMysql(tableDdl.get("Create Table")); + tableDdlVo.setOracle("// TODO 等待大佬来实现转换"); + // TODO 将建表语句转换为其他数据库的,还不知道怎么做,先这样留着,看有没大佬来实现 + return tableDdlVo; } @Override diff --git a/zyplayer-doc-ui/db-ui/.env.development b/zyplayer-doc-ui/db-ui/.env.development index fb7181ed..58e9a01d 100644 --- a/zyplayer-doc-ui/db-ui/.env.development +++ b/zyplayer-doc-ui/db-ui/.env.development @@ -2,8 +2,8 @@ ENV = 'development' # base api -# VUE_APP_BASE_API = 'http://local.zyplayer.com:8083/zyplayer-doc-manage' -VUE_APP_BASE_API = 'http://doc.zyplayer.com/zyplayer-doc-manage' +VUE_APP_BASE_API = 'http://local.zyplayer.com:8083/zyplayer-doc-manage' +# VUE_APP_BASE_API = 'http://doc.zyplayer.com/zyplayer-doc-manage' VUE_CLI_BABEL_TRANSPILE_MODULES = true diff --git a/zyplayer-doc-ui/db-ui/src/views/table/Info.vue b/zyplayer-doc-ui/db-ui/src/views/table/Info.vue index df6ea900..926385ef 100644 --- a/zyplayer-doc-ui/db-ui/src/views/table/Info.vue +++ b/zyplayer-doc-ui/db-ui/src/views/table/Info.vue @@ -80,11 +80,30 @@
DDL - 复制 + 复制
-
-
-
+ + +
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
@@ -101,6 +120,7 @@ columnList: [], tableInfo: {}, nowExecutorId: 1, + tableDDLInfoTab: '', tableDDLInfo: '', tableDDLInfoDialogVisible: false, }; @@ -163,10 +183,12 @@ spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)' }); + this.tableDDLInfoTab = ''; this.tableDDLInfoDialogVisible = false; datasourceApi.queryTableDdl(param).then(res => { loading.close(); - this.tableDDLInfo = res.data || '获取失败'; + this.tableDDLInfo = res.data || {}; + this.tableDDLInfoTab = this.tableDDLInfo.current; setTimeout(() => this.tableDDLInfoDialogVisible = true, 0); }).catch(() => { loading.close();