diff --git a/dbswitch-admin-ui/src/router/index.js b/dbswitch-admin-ui/src/router/index.js index 708c85ed..ab2ca805 100644 --- a/dbswitch-admin-ui/src/router/index.js +++ b/dbswitch-admin-ui/src/router/index.js @@ -125,6 +125,13 @@ const constantRouter = new Router({ icon: "el-icon-menu", hidden: true, component: () => import('@/views/connection/addDataSource1.vue') + }, + { + path: '/connection/list/addDataSource2', + name: '接入数据源', + icon: "el-icon-menu", + hidden: true, + component: () => import('@/views/connection/addDataSource2.vue') } ], }, diff --git a/dbswitch-admin-ui/src/views/connection/addDataSource1.vue b/dbswitch-admin-ui/src/views/connection/addDataSource1.vue index cee23030..813888c0 100644 --- a/dbswitch-admin-ui/src/views/connection/addDataSource1.vue +++ b/dbswitch-admin-ui/src/views/connection/addDataSource1.vue @@ -38,7 +38,10 @@ - + + 下一步 + 取消 + @@ -53,6 +56,7 @@ export default { currentDate: new Date(), databaseType: [], selectedIndex: -1, + selectedDataSource: {}, }; }, @@ -97,7 +101,20 @@ export default { }, selectDbDriver: function (value) { this.selectedIndex = value.id - 1; - console.log(JSON.stringify(value)) + this.selectedDataSource = value; + }, + next: function () { + if (Object.keys(this.selectedDataSource).length === 0) { + this.$message.error('请选择数据库!'); + } else { + this.$router.push({ + path: "/connection/list/addDataSource2", query: + this.selectedDataSource + }); + } + }, + cancel: function () { + this.$router.push("/connection/list"); }, }, created() { @@ -187,4 +204,22 @@ export default { background-color: #eefff9; } +.cancel { + float: right; + padding: 6px 14px; + border: 1px solid #dcdcdd; + cursor: pointer; + background-color: white; +} + +.next { + float: right; + margin-left: 20px; + padding: 6px 14px; + border: none; + color: white; + background-color: #409EFF; + cursor: pointer; +} + \ No newline at end of file diff --git a/dbswitch-admin-ui/src/views/connection/addDataSource2.vue b/dbswitch-admin-ui/src/views/connection/addDataSource2.vue new file mode 100644 index 00000000..3aab1827 --- /dev/null +++ b/dbswitch-admin-ui/src/views/connection/addDataSource2.vue @@ -0,0 +1,402 @@ + + + + + \ No newline at end of file diff --git a/dbswitch-admin-ui/src/views/connection/list.vue b/dbswitch-admin-ui/src/views/connection/list.vue index 89bcf621..d7d1be5d 100644 --- a/dbswitch-admin-ui/src/views/connection/list.vue +++ b/dbswitch-admin-ui/src/views/connection/list.vue @@ -17,8 +17,14 @@ size="mini" icon="el-icon-document-add" @click="selectDataSource">接入数据源 - + + + + + + + - + + + + - - - - {{ item.type }} - - + + + + + + + + + + + + + - + - + { //console.log(res); if (0 === res.data.code) { - alert("测试连接成功!"); + this.$message({ + message: '测试连接成功!', + type: 'success' + }); } else { - alert("测试连接失败," + res.data.message); + this.$message.error("测试连接失败," + res.data.message); } }); }, diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/converter/DbConnectionDetailConverter.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/converter/DbConnectionDetailConverter.java index 2b317bfa..93e004d9 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/converter/DbConnectionDetailConverter.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/converter/DbConnectionDetailConverter.java @@ -24,6 +24,11 @@ public class DbConnectionDetailConverter extends response.setType(databaseConnectionEntity.getType()); response.setVersion(databaseConnectionEntity.getVersion()); response.setDriver(databaseConnectionEntity.getDriver()); + response.setMode(databaseConnectionEntity.getMode()); + response.setAddress(databaseConnectionEntity.getAddress()); + response.setPort(databaseConnectionEntity.getPort()); + response.setDatabaseName(databaseConnectionEntity.getDatabaseName()); + response.setCharacterEncoding(databaseConnectionEntity.getCharacterEncoding()); response.setUrl(databaseConnectionEntity.getUrl()); response.setUsername(databaseConnectionEntity.getUsername()); response.setPassword(databaseConnectionEntity.getPassword()); diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/ConnectionController.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/ConnectionController.java index e438ebe4..fb2a353d 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/ConnectionController.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/controller/privateapi/ConnectionController.java @@ -77,6 +77,13 @@ public class ConnectionController { return connectionService.test(id); } + @TokenCheck + @ApiOperation(value = "预测试连接") + @PostMapping(value = "/preTest", produces = MediaType.APPLICATION_JSON_VALUE) + public Result preTest(@RequestBody DbConnectionCreateRequest request) { + return connectionService.preTest(request); + } + @TokenCheck @ApiOperation(value = "查询连接的Schema列表") @GetMapping(value = "/schemas/get/{id}", produces = MediaType.APPLICATION_JSON_VALUE) diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/entity/DatabaseConnectionEntity.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/entity/DatabaseConnectionEntity.java index b9fc9be6..c0ad53aa 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/entity/DatabaseConnectionEntity.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/entity/DatabaseConnectionEntity.java @@ -44,6 +44,21 @@ public class DatabaseConnectionEntity { @TableField("driver") private String driver; + @TableField("mode") + private Integer mode; + + @TableField("address") + private String address; + + @TableField("port") + private String port; + + @TableField("database_name") + private String databaseName; + + @TableField("character_encoding") + private String characterEncoding; + @TableField("url") private String url; diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/request/DbConnectionCreateRequest.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/request/DbConnectionCreateRequest.java index 66a64a95..9536779a 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/request/DbConnectionCreateRequest.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/request/DbConnectionCreateRequest.java @@ -22,6 +22,11 @@ public class DbConnectionCreateRequest { private ProductTypeEnum type; private String version; private String driver; + private Integer mode; + private String address; + private String port; + private String databaseName; + private String characterEncoding; private String url; private String username; private String password; @@ -33,6 +38,11 @@ public class DbConnectionCreateRequest { databaseConnectionEntity.setType(type); databaseConnectionEntity.setVersion(version.trim()); databaseConnectionEntity.setDriver(driver.trim()); + databaseConnectionEntity.setMode(0); + databaseConnectionEntity.setAddress(address.trim()); + databaseConnectionEntity.setPort(port.trim()); + databaseConnectionEntity.setDatabaseName(databaseName.trim()); + databaseConnectionEntity.setCharacterEncoding(characterEncoding.trim()); databaseConnectionEntity.setUrl(url.trim()); databaseConnectionEntity.setUsername(username); databaseConnectionEntity.setPassword(password); diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DatabaseTypeDetailResponse.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DatabaseTypeDetailResponse.java index 8497047e..b1ecbada 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DatabaseTypeDetailResponse.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DatabaseTypeDetailResponse.java @@ -34,4 +34,7 @@ public class DatabaseTypeDetailResponse { @ApiModelProperty("数据库名称") private String name; + @ApiModelProperty("数据库链接模板") + private String url; + } diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DbConnectionDetailResponse.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DbConnectionDetailResponse.java index 31ed00d2..0b4f069f 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DbConnectionDetailResponse.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/model/response/DbConnectionDetailResponse.java @@ -37,6 +37,21 @@ public class DbConnectionDetailResponse { @ApiModelProperty("驱动类") private String driver; + @ApiModelProperty("连接模式:0默认 1专业") + private Integer mode; + + @ApiModelProperty("连接地址") + private String address; + + @ApiModelProperty("连接端口号") + private String port; + + @ApiModelProperty("数据库名") + private String databaseName; + + @ApiModelProperty("编码格式") + private String characterEncoding; + @ApiModelProperty("URL连接串") private String url; diff --git a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java index b2a35c65..957e4114 100644 --- a/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java +++ b/dbswitch-admin/src/main/java/com/gitee/dbswitch/admin/service/ConnectionService.java @@ -94,6 +94,7 @@ public class ConnectionService { detail.setDriver(type.getDriver()); detail.setSample(type.getSample()); detail.setName(type.getName()); + detail.setUrl(type.getUrl()[0]); lists.add(detail); } @@ -281,4 +282,21 @@ public class ConnectionService { } } + public Result preTest(DbConnectionCreateRequest request) { + DatabaseConnectionEntity dbConn = new DatabaseConnectionEntity(); + dbConn.setType(request.getType()); + dbConn.setUsername(request.getUsername()); + dbConn.setPassword(request.getPassword()); + dbConn.setName(request.getName()); + dbConn.setVersion(request.getVersion()); + dbConn.setUrl(request.getUrl()); + dbConn.setDriver(request.getDriver()); + MetadataService metaDataService = getMetaDataCoreService(dbConn); + try { + metaDataService.testQuerySQL(dbConn.getType().getSql()); + } finally { + metaDataService.close(); + } + return Result.success(); + } } diff --git a/dbswitch-admin/src/main/resources/db/migration/V1_0_13__system-ddl.sql b/dbswitch-admin/src/main/resources/db/migration/V1_0_13__system-ddl.sql new file mode 100644 index 00000000..ca3e07fb --- /dev/null +++ b/dbswitch-admin/src/main/resources/db/migration/V1_0_13__system-ddl.sql @@ -0,0 +1,14 @@ +ALTER TABLE `DBSWITCH_DATABASE_CONNECTION` +ADD COLUMN `mode` varchar(20) not null default '0' comment '连接模式:0默认 1专业' AFTER `driver`; + +ALTER TABLE `DBSWITCH_DATABASE_CONNECTION` +ADD COLUMN `address` varchar(200) not null default '' comment '连接地址' AFTER `mode`; + +ALTER TABLE `DBSWITCH_DATABASE_CONNECTION` +ADD COLUMN `port` varchar(20) not null default '' comment '连接端口号' AFTER `address`; + +ALTER TABLE `DBSWITCH_DATABASE_CONNECTION` +ADD COLUMN `database_name` varchar(200) not null default '' comment '数据库名' AFTER `port`; + +ALTER TABLE `DBSWITCH_DATABASE_CONNECTION` +ADD COLUMN `character_encoding` varchar(20) not null default '' comment '编码格式' AFTER `database_name`; diff --git a/dbswitch-common/src/main/java/com/gitee/dbswitch/common/type/ProductTypeEnum.java b/dbswitch-common/src/main/java/com/gitee/dbswitch/common/type/ProductTypeEnum.java index 92d9fbdc..502d28fc 100644 --- a/dbswitch-common/src/main/java/com/gitee/dbswitch/common/type/ProductTypeEnum.java +++ b/dbswitch-common/src/main/java/com/gitee/dbswitch/common/type/ProductTypeEnum.java @@ -30,7 +30,7 @@ public enum ProductTypeEnum { "/* ping */ SELECT 1", "jdbc:mysql://", new String[]{"jdbc:mysql://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:mysql://172.17.2.10:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&tinyInt1isBit=false&rewriteBatchedStatements=true&useCompression=true"), + "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&tinyInt1isBit=false&rewriteBatchedStatements=true&useCompression=true"), /** * MariaDB数据库类型 @@ -39,7 +39,7 @@ public enum ProductTypeEnum { "SELECT 1", "jdbc:mariadb://", new String[]{"jdbc:mariadb://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:mariadb://172.17.2.10:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&tinyInt1isBit=false&rewriteBatchedStatements=true&useCompression=true"), + "jdbc:mariadb://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&tinyInt1isBit=false&rewriteBatchedStatements=true&useCompression=true"), /** * Oracle数据库类型 @@ -49,7 +49,7 @@ public enum ProductTypeEnum { "jdbc:oracle:thin:@", new String[]{"jdbc:oracle:thin:@{host}:{port}:{database}", "jdbc:oracle:thin:@//{host}[:{port}]/{database}"}, - "jdbc:oracle:thin:@172.17.2.10:1521:ORCL"), + "jdbc:oracle:thin:@127.0.0.1:1521:ORCL"), /** * Microsoft SQL Server数据库类型(>=2005) @@ -58,7 +58,7 @@ public enum ProductTypeEnum { "SELECT 1+2 as a", "jdbc:sqlserver://", new String[]{"jdbc:sqlserver://{host}[:{port}][;DatabaseName={database}][;{params}]"}, - "jdbc:sqlserver://172.17.2.10:1433;DatabaseName=test"), + "jdbc:sqlserver://127.0.0.1:1433;DatabaseName=test"), /** * PostgreSQL数据库类型 @@ -67,7 +67,7 @@ public enum ProductTypeEnum { "SELECT 1", "jdbc:postgresql://", new String[]{"jdbc:postgresql://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:postgresql://172.17.2.10:5432/test"), + "jdbc:postgresql://127.0.0.1:5432/test"), /** * DB2数据库类型 @@ -76,7 +76,7 @@ public enum ProductTypeEnum { "SELECT 1 FROM SYSIBM.SYSDUMMY1", "jdbc:db2://", new String[]{"jdbc:db2://{host}:{port}/{database}[:{params}]"}, - "jdbc:db2://172.17.2.10:50000/testdb:driverType=4;fullyMaterializeLobData=true;fullyMaterializeInputStreams=true;progressiveStreaming=2;progresssiveLocators=2;"), + "jdbc:db2://127.0.0.1:50000/testdb:driverType=4;fullyMaterializeLobData=true;fullyMaterializeInputStreams=true;progressiveStreaming=2;progresssiveLocators=2;"), /** * [国产] 达梦(DM)数据库类型 @@ -85,7 +85,7 @@ public enum ProductTypeEnum { "SELECT 'Hello' from DUAL", "jdbc:dm://", new String[]{"jdbc:dm://{host}:{port}[/{database}][\\?{params}]"}, - "jdbc:dm://172.17.2.10:5236"), + "jdbc:dm://127.0.0.1:5236"), /** * [国产] 金仓(Kingbase)数据库类型 @@ -94,7 +94,7 @@ public enum ProductTypeEnum { "SELECT 1", "jdbc:kingbase8://", new String[]{"jdbc:kingbase8://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:kingbase8://172.17.2.10:54321/test"), + "jdbc:kingbase8://127.0.0.1:54321/test"), /** * [国产] 神通(Oscar)数据库类型 @@ -103,7 +103,7 @@ public enum ProductTypeEnum { "SELECT 1", "jdbc:oscar://", new String[]{"jdbc:oscar://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:oscar://172.17.2.10:2003/OSCRDB"), + "jdbc:oscar://127.0.0.1:2003/OSCRDB"), /** * [国产] 南大通用(GBase8A)数据库类型 @@ -112,7 +112,7 @@ public enum ProductTypeEnum { "/* ping */ SELECT 1", "jdbc:gbase://", new String[]{"jdbc:gbase://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:gbase://172.17.2.10:5258/test"), + "jdbc:gbase://127.0.0.1:5258/test"), /** * Highgo数据库类型:https://blog.csdn.net/weixin_39676699/article/details/134338598 @@ -121,7 +121,7 @@ public enum ProductTypeEnum { "SELECT 1", "jdbc:highgo://", new String[]{"jdbc:highgo://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:highgo://172.17.2.10:5866/highgo"), + "jdbc:highgo://127.0.0.1:5866/highgo"), /** * Sybase 数据库类型 @@ -130,7 +130,7 @@ public enum ProductTypeEnum { "SELECT 1+2 as a", "jdbc:sybase:Tds:", new String[]{"jdbc:sybase:Tds:{host}[:{port}][/{database}][\\?{params}]"}, - "jdbc:sybase:Tds:172.17.2.10:5000/test?charset=cp936"), + "jdbc:sybase:Tds:127.0.0.1:5000/test?charset=cp936"), /** * Hive 数据库类型 @@ -158,7 +158,7 @@ public enum ProductTypeEnum { "SELECT 1", "jdbc:opengauss://", new String[]{"jdbc:opengauss://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:opengauss://172.17.2.10:5866/test"), + "jdbc:opengauss://127.0.0.1:5866/test"), /** * ClickHouse数据库类型 @@ -167,7 +167,7 @@ public enum ProductTypeEnum { "SELECT 1", "jdbc:clickhouse://", new String[]{"jdbc:clickhouse://{host}[:{port}]/[{database}][\\?{params}]"}, - "jdbc:clickhouse://172.17.2.10:8123/default"), + "jdbc:clickhouse://127.0.0.1:8123/default"), /** * MongoDB数据库类型