Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
datax-cloud
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
黄营
datax-cloud
Commits
d48a0fea
Commit
d48a0fea
authored
Aug 05, 2020
by
yuwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
项目初始化
parent
4b7521e7
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
54 changed files
with
577 additions
and
766 deletions
+577
-766
RedisConstant.java
...ore/src/main/java/cn/datax/common/core/RedisConstant.java
+8
-4
pom.xml
datax-common/datax-common-redis/pom.xml
+0
-6
RedissonConfig.java
...ain/java/cn/datax/common/redis/config/RedissonConfig.java
+0
-47
Locker.java
...s/src/main/java/cn/datax/common/redis/service/Locker.java
+0
-68
RedissonLocker.java
...va/cn/datax/common/redis/service/impl/RedissonLocker.java
+0
-66
LockUtil.java
...s/src/main/java/cn/datax/common/redis/utils/LockUtil.java
+0
-95
spring.factories
...common-redis/src/main/resources/META-INF/spring.factories
+0
-1
datax-service-codegen-dev.yml
...g/src/main/resources/config/datax-service-codegen-dev.yml
+1
-0
datax-service-data-api-mapping-dev.yml
...n/resources/config/datax-service-data-api-mapping-dev.yml
+1
-0
datax-service-data-console-dev.yml
.../main/resources/config/datax-service-data-console-dev.yml
+1
-0
datax-service-data-market-dev.yml
...c/main/resources/config/datax-service-data-market-dev.yml
+1
-0
datax-service-data-metadata-dev.yml
...main/resources/config/datax-service-data-metadata-dev.yml
+1
-0
datax-service-data-visual-dev.yml
...c/main/resources/config/datax-service-data-visual-dev.yml
+1
-0
datax-service-email-dev.yml
...fig/src/main/resources/config/datax-service-email-dev.yml
+1
-0
datax-service-file-dev.yml
...nfig/src/main/resources/config/datax-service-file-dev.yml
+1
-0
datax-service-quartz-dev.yml
...ig/src/main/resources/config/datax-service-quartz-dev.yml
+1
-0
datax-service-system-dev.yml
...ig/src/main/resources/config/datax-service-system-dev.yml
+1
-0
pom.xml
datax-gateway/pom.xml
+17
-6
SwaggerResourceConfig.java
...n/java/cn/datax/gateway/config/SwaggerResourceConfig.java
+3
-2
SwaggerHeaderFilter.java
...ain/java/cn/datax/gateway/filter/SwaggerHeaderFilter.java
+5
-3
SwaggerHandler.java
...rc/main/java/cn/datax/gateway/handler/SwaggerHandler.java
+5
-5
pom.xml
...odules/codegen-service-parent/codegen-service-api/pom.xml
+18
-13
SwaggerConfig.java
...n/java/cn/datax/service/codegen/config/SwaggerConfig.java
+5
-0
SwaggerConfig.java
...service/data/market/api/mapping/config/SwaggerConfig.java
+5
-0
pom.xml
...ata-market-service-parent/data-market-service-api/pom.xml
+18
-13
SwaggerConfig.java
...va/cn/datax/service/data/market/config/SwaggerConfig.java
+5
-0
pom.xml
...metadata-service-parent/data-metadata-service-api/pom.xml
+18
-13
DataLevel.java
...a/cn/datax/service/data/metadata/api/enums/DataLevel.java
+34
-0
MetadataTreeVo.java
...cn/datax/service/data/metadata/api/vo/MetadataTreeVo.java
+1
-1
SwaggerConfig.java
...x/service/data/metadata/console/config/SwaggerConfig.java
+5
-0
SwaggerConfig.java
.../cn/datax/service/data/metadata/config/SwaggerConfig.java
+5
-0
MetadataColumnController.java
...ce/data/metadata/controller/MetadataColumnController.java
+7
-4
MetadataColumnService.java
.../service/data/metadata/service/MetadataColumnService.java
+1
-1
MetadataColumnServiceImpl.java
...data/metadata/service/impl/MetadataColumnServiceImpl.java
+47
-11
pom.xml
...ata-visual-service-parent/data-visual-service-api/pom.xml
+18
-13
SwaggerConfig.java
...va/cn/datax/service/data/visual/config/SwaggerConfig.java
+5
-0
pom.xml
datax-modules/email-service-parent/email-service-api/pom.xml
+18
-13
SwaggerConfig.java
...ain/java/cn/datax/service/email/config/SwaggerConfig.java
+5
-0
pom.xml
datax-modules/file-service-parent/file-service-api/pom.xml
+18
-13
SwaggerConfig.java
...main/java/cn/datax/service/file/config/SwaggerConfig.java
+5
-0
pom.xml
...-modules/quartz-service-parent/quartz-service-api/pom.xml
+18
-13
SwaggerConfig.java
...in/java/cn/datax/service/quartz/config/SwaggerConfig.java
+5
-0
pom.xml
...-modules/system-service-parent/system-service-api/pom.xml
+18
-13
SwaggerConfig.java
...in/java/cn/datax/service/system/config/SwaggerConfig.java
+5
-0
datacolumn.js
datax-ui/src/api/metadata/datacolumn.js
+7
-0
ChangeRecordAdd.vue
datax-ui/src/views/metadata/changerecord/ChangeRecordAdd.vue
+29
-115
ChangeRecordDetail.vue
...ui/src/views/metadata/changerecord/ChangeRecordDetail.vue
+20
-107
ChangeRecordEdit.vue
...x-ui/src/views/metadata/changerecord/ChangeRecordEdit.vue
+30
-104
ChangeRecordList.vue
...x-ui/src/views/metadata/changerecord/ChangeRecordList.vue
+16
-12
DataColumnDetail.vue
datax-ui/src/views/metadata/datacolumn/DataColumnDetail.vue
+99
-0
DataColumnList.vue
datax-ui/src/views/metadata/datacolumn/DataColumnList.vue
+0
-0
index.vue
datax-ui/src/views/metadata/datacolumn/index.vue
+25
-2
index.vue
datax-ui/src/views/metadata/datamap/index.vue
+15
-0
pom.xml
pom.xml
+4
-2
No files found.
datax-common/datax-common-core/src/main/java/cn/datax/common/core/RedisConstant.java
View file @
d48a0fea
...
...
@@ -2,10 +2,6 @@ package cn.datax.common.core;
public
interface
RedisConstant
{
String
FACTORY_SOURCE_KEY
=
"data:factory:sources"
;
String
FACTORY_SET_KEY
=
"data:factory:sets"
;
String
MARKET_API_KEY
=
"data:market:apis"
;
String
MARKET_API_MASK_KEY
=
"data:market:api:masks"
;
...
...
@@ -13,4 +9,12 @@ public interface RedisConstant {
String
SYSTEM_DICT_KEY
=
"data:system:dicts"
;
String
SYSTEM_CONFIG_KEY
=
"data:system:configs"
;
String
METADATA_SOURCE_KEY
=
"data:metadata:sources"
;
String
METADATA_TABLE_KEY
=
"data:metadata:tables"
;
String
METADATA_COLUMN_KEY
=
"data:metadata:columns"
;
String
VISUAL_SET_KEY
=
"data:visual:sets"
;
}
datax-common/datax-common-redis/pom.xml
View file @
d48a0fea
...
...
@@ -24,10 +24,5 @@
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-pool2
</artifactId>
</dependency>
<dependency>
<groupId>
org.redisson
</groupId>
<artifactId>
redisson
</artifactId>
<version>
${redisson.version}
</version>
</dependency>
</dependencies>
</project>
\ No newline at end of file
datax-common/datax-common-redis/src/main/java/cn/datax/common/redis/config/RedissonConfig.java
deleted
100644 → 0
View file @
4b7521e7
package
cn
.
datax
.
common
.
redis
.
config
;
import
cn.datax.common.redis.service.impl.RedissonLocker
;
import
cn.datax.common.redis.utils.LockUtil
;
import
org.redisson.Redisson
;
import
org.redisson.api.RedissonClient
;
import
org.redisson.config.Config
;
import
org.redisson.config.SingleServerConfig
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
public
class
RedissonConfig
{
@Value
(
"${spring.redis.database}"
)
private
int
database
;
@Value
(
"${spring.redis.host}"
)
private
String
host
;
@Value
(
"${spring.redis.port}"
)
private
String
port
;
@Value
(
"${spring.redis.password}"
)
private
String
password
;
/**
* RedissonClient,单机模式
*
* @return
*/
@Bean
(
destroyMethod
=
"shutdown"
)
public
RedissonClient
redissonClient
()
{
Config
config
=
new
Config
();
SingleServerConfig
singleServerConfig
=
config
.
useSingleServer
();
singleServerConfig
.
setAddress
(
"redis://"
+
host
+
":"
+
port
);
singleServerConfig
.
setDatabase
(
database
);
if
(
password
!=
null
&&
!
""
.
equals
(
password
))
{
singleServerConfig
.
setPassword
(
password
);
}
return
Redisson
.
create
(
config
);
}
@Bean
public
RedissonLocker
redissonLocker
(
RedissonClient
redissonClient
)
{
RedissonLocker
locker
=
new
RedissonLocker
(
redissonClient
);
// 设置LockUtil的锁处理对象
LockUtil
.
setLocker
(
locker
);
return
locker
;
}
}
datax-common/datax-common-redis/src/main/java/cn/datax/common/redis/service/Locker.java
deleted
100644 → 0
View file @
4b7521e7
package
cn
.
datax
.
common
.
redis
.
service
;
import
java.util.concurrent.TimeUnit
;
/**
* 锁接口
*/
public
interface
Locker
{
/**
* 获取锁,如果锁不可用,则当前线程处于休眠状态,直到获得锁为止。
*
* @param lockKey
*/
void
lock
(
String
lockKey
);
/**
* 释放锁
*
* @param lockKey
*/
void
unlock
(
String
lockKey
);
/**
* 获取锁,如果锁不可用,则当前线程处于休眠状态,直到获得锁为止。如果获取到锁后,执行结束后解锁或达到超时时间后会自动释放锁
*
* @param lockKey
* @param timeout
*/
void
lock
(
String
lockKey
,
int
timeout
);
/**
* 获取锁,如果锁不可用,则当前线程处于休眠状态,直到获得锁为止。如果获取到锁后,执行结束后解锁或达到超时时间后会自动释放锁
*
* @param lockKey
* @param unit
* @param timeout
*/
void
lock
(
String
lockKey
,
TimeUnit
unit
,
int
timeout
);
/**
* 尝试获取锁,获取到立即返回true,未获取到立即返回false
*
* @param lockKey
* @return
*/
boolean
tryLock
(
String
lockKey
);
/**
* 尝试获取锁,在等待时间内获取到锁则返回true,否则返回false,如果获取到锁,则要么执行完后程序释放锁,
* 要么在给定的超时时间leaseTime后释放锁
*
* @param lockKey
* @param waitTime
* @param leaseTime
* @param unit
* @return
*/
boolean
tryLock
(
String
lockKey
,
long
waitTime
,
long
leaseTime
,
TimeUnit
unit
)
throws
InterruptedException
;
/**
* 锁是否被任意一个线程锁持有
*
* @param lockKey
* @return
*/
boolean
isLocked
(
String
lockKey
);
}
datax-common/datax-common-redis/src/main/java/cn/datax/common/redis/service/impl/RedissonLocker.java
deleted
100644 → 0
View file @
4b7521e7
package
cn
.
datax
.
common
.
redis
.
service
.
impl
;
import
cn.datax.common.redis.service.Locker
;
import
org.redisson.api.RLock
;
import
org.redisson.api.RedissonClient
;
import
java.util.concurrent.TimeUnit
;
/**
* 基于Redisson的分布式锁
*/
public
class
RedissonLocker
implements
Locker
{
private
RedissonClient
redissonClient
;
public
RedissonLocker
(
RedissonClient
redissonClient
)
{
super
();
this
.
redissonClient
=
redissonClient
;
}
@Override
public
void
lock
(
String
lockKey
)
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
lock
.
lock
();
}
@Override
public
void
unlock
(
String
lockKey
)
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
lock
.
unlock
();
}
@Override
public
void
lock
(
String
lockKey
,
int
leaseTime
)
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
lock
.
lock
(
leaseTime
,
TimeUnit
.
SECONDS
);
}
@Override
public
void
lock
(
String
lockKey
,
TimeUnit
unit
,
int
timeout
)
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
lock
.
lock
(
timeout
,
unit
);
}
public
void
setRedissonClient
(
RedissonClient
redissonClient
)
{
this
.
redissonClient
=
redissonClient
;
}
@Override
public
boolean
tryLock
(
String
lockKey
)
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
return
lock
.
tryLock
();
}
@Override
public
boolean
tryLock
(
String
lockKey
,
long
waitTime
,
long
leaseTime
,
TimeUnit
unit
)
throws
InterruptedException
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
return
lock
.
tryLock
(
waitTime
,
leaseTime
,
unit
);
}
@Override
public
boolean
isLocked
(
String
lockKey
)
{
RLock
lock
=
redissonClient
.
getLock
(
lockKey
);
return
lock
.
isLocked
();
}
}
datax-common/datax-common-redis/src/main/java/cn/datax/common/redis/utils/LockUtil.java
deleted
100644 → 0
View file @
4b7521e7
package
cn
.
datax
.
common
.
redis
.
utils
;
import
cn.datax.common.redis.service.Locker
;
import
java.util.concurrent.TimeUnit
;
/**
* redis分布式锁工具类
*/
public
final
class
LockUtil
{
private
static
Locker
locker
;
/**
* 设置工具类使用的locker
*
* @param locker
*/
public
static
void
setLocker
(
Locker
locker
)
{
LockUtil
.
locker
=
locker
;
}
/**
* 获取锁
*
* @param lockKey
*/
public
static
void
lock
(
String
lockKey
)
{
locker
.
lock
(
lockKey
);
}
/**
* 释放锁
*
* @param lockKey
*/
public
static
void
unlock
(
String
lockKey
)
{
locker
.
unlock
(
lockKey
);
}
/**
* 获取锁,超时释放
*
* @param lockKey
* @param timeout
*/
public
static
void
lock
(
String
lockKey
,
int
timeout
)
{
locker
.
lock
(
lockKey
,
timeout
);
}
/**
* 获取锁,超时释放,指定时间单位
*
* @param lockKey
* @param unit
* @param timeout
*/
public
static
void
lock
(
String
lockKey
,
TimeUnit
unit
,
int
timeout
)
{
locker
.
lock
(
lockKey
,
unit
,
timeout
);
}
/**
* 尝试获取锁,获取到立即返回true,获取失败立即返回false
*
* @param lockKey
* @return
*/
public
static
boolean
tryLock
(
String
lockKey
)
{
return
locker
.
tryLock
(
lockKey
);
}
/**
* 尝试获取锁,在给定的waitTime时间内尝试,获取到返回true,获取失败返回false,获取到后再给定的leaseTime时间超时释放
*
* @param lockKey
* @param waitTime
* @param leaseTime
* @param unit
* @return
* @throws InterruptedException
*/
public
static
boolean
tryLock
(
String
lockKey
,
long
waitTime
,
long
leaseTime
,
TimeUnit
unit
)
throws
InterruptedException
{
return
locker
.
tryLock
(
lockKey
,
waitTime
,
leaseTime
,
unit
);
}
/**
* 锁释放被任意一个线程持有
*
* @param lockKey
* @return
*/
public
static
boolean
isLocked
(
String
lockKey
)
{
return
locker
.
isLocked
(
lockKey
);
}
}
datax-common/datax-common-redis/src/main/resources/META-INF/spring.factories
View file @
d48a0fea
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
cn.datax.common.redis.config.RedisConfig,\
cn.datax.common.redis.config.RedissonConfig,\
cn.datax.common.redis.aspectj.RedisCacheAspect
datax-config/src/main/resources/config/datax-service-codegen-dev.yml
View file @
d48a0fea
...
...
@@ -50,6 +50,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-data-api-mapping-dev.yml
View file @
d48a0fea
...
...
@@ -55,6 +55,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-data-console-dev.yml
View file @
d48a0fea
...
...
@@ -50,6 +50,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-data-market-dev.yml
View file @
d48a0fea
...
...
@@ -55,6 +55,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-data-metadata-dev.yml
View file @
d48a0fea
...
...
@@ -50,6 +50,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-data-visual-dev.yml
View file @
d48a0fea
...
...
@@ -50,6 +50,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-email-dev.yml
View file @
d48a0fea
...
...
@@ -62,6 +62,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-file-dev.yml
View file @
d48a0fea
...
...
@@ -51,6 +51,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-quartz-dev.yml
View file @
d48a0fea
...
...
@@ -82,6 +82,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-config/src/main/resources/config/datax-service-system-dev.yml
View file @
d48a0fea
...
...
@@ -50,6 +50,7 @@ security:
# Swagger界面内容配置
swagger
:
enable
:
true
title
:
API接口文档
description
:
Api Documentation
version
:
1.0.0
...
...
datax-gateway/pom.xml
View file @
d48a0fea
...
...
@@ -23,19 +23,30 @@
<artifactId>
spring-cloud-starter-gateway
</artifactId>
</dependency>
<dependency>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-spring-ui
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
<version>
${springfox.version}
</version>
<exclusions>
<exclusion>
<groupId>
io.swagger
</groupId>
<artifactId>
swagger-models
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>
io.s
pringfox
</groupId>
<artifactId>
s
pringfox-bean-validator
s
</artifactId>
<version>
${swagger
2
.version}
</version>
<groupId>
io.s
wagger
</groupId>
<artifactId>
s
wagger-model
s
</artifactId>
<version>
${swagger.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-
swagger-ui
</artifactId>
<version>
${s
wagger2
.version}
</version>
<artifactId>
springfox-
bean-validators
</artifactId>
<version>
${s
pringfox
.version}
</version>
</dependency>
<dependency>
<groupId>
cn.datax
</groupId>
...
...
datax-gateway/src/main/java/cn/datax/gateway/config/Swagger
Provider
.java
→
datax-gateway/src/main/java/cn/datax/gateway/config/Swagger
ResourceConfig
.java
View file @
d48a0fea
...
...
@@ -15,7 +15,7 @@ import java.util.List;
@Component
@Primary
@AllArgsConstructor
public
class
Swagger
Provider
implements
SwaggerResourcesProvider
{
public
class
Swagger
ResourceConfig
implements
SwaggerResourcesProvider
{
public
static
final
String
API_URI
=
"/v2/api-docs"
;
private
final
RouteLocator
routeLocator
;
...
...
@@ -33,7 +33,8 @@ public class SwaggerProvider implements SwaggerResourcesProvider {
routeDefinition
.
getPredicates
().
stream
()
.
filter
(
predicateDefinition
->
(
"Path"
).
equalsIgnoreCase
(
predicateDefinition
.
getName
()))
.
filter
(
predicateDefinition
->
!
"datax-auth"
.
equalsIgnoreCase
(
routeDefinition
.
getId
())
||
!
"datax-service-data-api-call"
.
equalsIgnoreCase
(
routeDefinition
.
getId
()))
!
"datax-service-data-api-mapping"
.
equalsIgnoreCase
(
routeDefinition
.
getId
())
||
!
"datax-service-data-console"
.
equalsIgnoreCase
(
routeDefinition
.
getId
()))
.
forEach
(
predicateDefinition
->
resources
.
add
(
swaggerResource
(
routeDefinition
.
getId
(),
predicateDefinition
.
getArgs
().
get
(
NameUtils
.
GENERATED_NAME_PREFIX
+
"0"
)
.
replace
(
"/**"
,
API_URI
))));
...
...
datax-gateway/src/main/java/cn/datax/gateway/filter/SwaggerHeaderFilter.java
View file @
d48a0fea
package
cn
.
datax
.
gateway
.
filter
;
import
cn.datax.gateway.config.SwaggerProvider
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.cloud.gateway.filter.GatewayFilter
;
import
org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory
;
...
...
@@ -10,17 +9,20 @@ import org.springframework.web.server.ServerWebExchange;
@Component
public
class
SwaggerHeaderFilter
extends
AbstractGatewayFilterFactory
{
private
static
final
String
HEADER_NAME
=
"X-Forwarded-Prefix"
;
private
static
final
String
URI
=
"/v2/api-docs"
;
@Override
public
GatewayFilter
apply
(
Object
config
)
{
return
(
exchange
,
chain
)
->
{
ServerHttpRequest
request
=
exchange
.
getRequest
();
String
path
=
request
.
getURI
().
getPath
();
if
(!
StringUtils
.
endsWithIgnoreCase
(
path
,
SwaggerProvider
.
API_URI
))
{
if
(!
StringUtils
.
endsWithIgnoreCase
(
path
,
URI
))
{
return
chain
.
filter
(
exchange
);
}
String
basePath
=
path
.
substring
(
0
,
path
.
lastIndexOf
(
SwaggerProvider
.
API_
URI
));
String
basePath
=
path
.
substring
(
0
,
path
.
lastIndexOf
(
URI
));
ServerHttpRequest
newRequest
=
request
.
mutate
().
header
(
HEADER_NAME
,
basePath
).
build
();
ServerWebExchange
newExchange
=
exchange
.
mutate
().
request
(
newRequest
).
build
();
return
chain
.
filter
(
newExchange
);
...
...
datax-gateway/src/main/java/cn/datax/gateway/handler/SwaggerHandler.java
View file @
d48a0fea
...
...
@@ -4,7 +4,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.http.HttpStatus
;
import
org.springframework.http.ResponseEntity
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
reactor.core.publisher.Mono
;
import
springfox.documentation.swagger.web.*
;
...
...
@@ -12,13 +11,14 @@ import springfox.documentation.swagger.web.*;
import
java.util.Optional
;
@RestController
@RequestMapping
(
"/swagger-resources"
)
public
class
SwaggerHandler
{
@Autowired
(
required
=
false
)
private
SecurityConfiguration
securityConfiguration
;
@Autowired
(
required
=
false
)
private
UiConfiguration
uiConfiguration
;
private
final
SwaggerResourcesProvider
swaggerResources
;
@Autowired
...
...
@@ -27,19 +27,19 @@ public class SwaggerHandler {
}
@GetMapping
(
"/configuration/security"
)
@GetMapping
(
"/
swagger-resources/
configuration/security"
)
public
Mono
<
ResponseEntity
<
SecurityConfiguration
>>
securityConfiguration
()
{
return
Mono
.
just
(
new
ResponseEntity
<>(
Optional
.
ofNullable
(
securityConfiguration
).
orElse
(
SecurityConfigurationBuilder
.
builder
().
build
()),
HttpStatus
.
OK
));
}
@GetMapping
(
"/configuration/ui"
)
@GetMapping
(
"/
swagger-resources/
configuration/ui"
)
public
Mono
<
ResponseEntity
<
UiConfiguration
>>
uiConfiguration
()
{
return
Mono
.
just
(
new
ResponseEntity
<>(
Optional
.
ofNullable
(
uiConfiguration
).
orElse
(
UiConfigurationBuilder
.
builder
().
build
()),
HttpStatus
.
OK
));
}
@GetMapping
(
""
)
@GetMapping
(
"
/swagger-resources
"
)
public
Mono
<
ResponseEntity
>
swaggerResources
()
{
return
Mono
.
just
((
new
ResponseEntity
<>(
swaggerResources
.
get
(),
HttpStatus
.
OK
)));
}
...
...
datax-modules/codegen-service-parent/codegen-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/codegen-service-parent/codegen-service/src/main/java/cn/datax/service/codegen/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
codegen
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/data-market-service-parent/data-market-service-api-mapping/src/main/java/cn/datax/service/data/market/api/mapping/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
data
.
market
.
api
.
mapping
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/data-market-service-parent/data-market-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/data-market-service-parent/data-market-service/src/main/java/cn/datax/service/data/market/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
data
.
market
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/data-metadata-service-parent/data-metadata-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/enums/DataLevel.java
0 → 100644
View file @
d48a0fea
package
cn
.
datax
.
service
.
data
.
metadata
.
api
.
enums
;
public
enum
DataLevel
{
DATABASE
(
"database"
,
1
),
TABLE
(
"table"
,
2
),
COLUMN
(
"column"
,
3
);
private
final
String
key
;
private
final
Integer
level
;
DataLevel
(
String
key
,
Integer
level
)
{
this
.
key
=
key
;
this
.
level
=
level
;
}
public
String
getKey
()
{
return
key
;
}
public
Integer
getLevel
()
{
return
level
;
}
public
static
DataLevel
getLevel
(
String
key
)
{
for
(
DataLevel
type
:
DataLevel
.
values
())
{
if
(
type
.
key
.
equals
(
key
))
{
return
type
;
}
}
return
DATABASE
;
}
}
datax-modules/data-metadata-service-parent/data-metadata-service-api/src/main/java/cn/datax/service/data/metadata/api/vo/MetadataTreeVo.java
View file @
d48a0fea
...
...
@@ -12,7 +12,7 @@ public class MetadataTreeVo implements Serializable {
private
String
id
;
/**
* 数据
类型
database、table、column
* 数据
层级
database、table、column
*/
private
String
type
;
private
String
label
;
...
...
datax-modules/data-metadata-service-parent/data-metadata-service-console/src/main/java/cn/datax/service/data/metadata/console/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
data
.
metadata
.
console
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
data
.
metadata
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/controller/MetadataColumnController.java
View file @
d48a0fea
...
...
@@ -150,12 +150,15 @@ public class MetadataColumnController extends BaseController {
}
/**
* 获取结构树
* 获取层级树
* @param level 层级database、table、column
* @return
*/
@GetMapping
(
"/tree"
)
public
R
getDataMetadataTree
()
{
List
<
MetadataTreeVo
>
list
=
metadataColumnService
.
getDataMetadataTree
();
@ApiOperation
(
value
=
"获取层级树"
,
notes
=
"根据url的层级来获取树对象"
)
@ApiImplicitParam
(
name
=
"level"
,
value
=
"层级"
,
required
=
true
,
dataType
=
"String"
,
paramType
=
"path"
)
@GetMapping
(
"/tree/{level}"
)
public
R
getDataMetadataTree
(
@PathVariable
String
level
)
{
List
<
MetadataTreeVo
>
list
=
metadataColumnService
.
getDataMetadataTree
(
level
);
return
R
.
ok
().
setData
(
list
);
}
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/MetadataColumnService.java
View file @
d48a0fea
...
...
@@ -27,5 +27,5 @@ public interface MetadataColumnService extends BaseService<MetadataColumnEntity>
void
deleteMetadataColumnBatch
(
List
<
String
>
ids
);
List
<
MetadataTreeVo
>
getDataMetadataTree
();
List
<
MetadataTreeVo
>
getDataMetadataTree
(
String
level
);
}
datax-modules/data-metadata-service-parent/data-metadata-service/src/main/java/cn/datax/service/data/metadata/service/impl/MetadataColumnServiceImpl.java
View file @
d48a0fea
...
...
@@ -4,6 +4,8 @@ import cn.datax.common.core.DataConstant;
import
cn.datax.service.data.metadata.api.dto.MetadataColumnDto
;
import
cn.datax.service.data.metadata.api.entity.MetadataColumnEntity
;
import
cn.datax.service.data.metadata.api.entity.MetadataSourceEntity
;
import
cn.datax.service.data.metadata.api.entity.MetadataTableEntity
;
import
cn.datax.service.data.metadata.api.enums.DataLevel
;
import
cn.datax.service.data.metadata.api.vo.MetadataTreeVo
;
import
cn.datax.service.data.metadata.dao.MetadataSourceDao
;
import
cn.datax.service.data.metadata.dao.MetadataTableDao
;
...
...
@@ -11,9 +13,7 @@ import cn.datax.service.data.metadata.service.MetadataColumnService;
import
cn.datax.service.data.metadata.mapstruct.MetadataColumnMapper
;
import
cn.datax.service.data.metadata.dao.MetadataColumnDao
;
import
cn.datax.common.base.BaseServiceImpl
;
import
cn.datax.service.system.api.entity.UserRoleEntity
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
...
...
@@ -21,6 +21,8 @@ import org.springframework.transaction.annotation.Propagation;
import
org.springframework.transaction.annotation.Transactional
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.stream.Collectors
;
/**
* <p>
...
...
@@ -81,14 +83,48 @@ public class MetadataColumnServiceImpl extends BaseServiceImpl<MetadataColumnDao
}
@Override
public
List
<
MetadataTreeVo
>
getDataMetadataTree
()
{
// 参考分布式锁
// https://blog.csdn.net/qq_32099833/article/details/103848016
// metadataSourceDao.selectList(Wrappers.<MetadataSourceEntity>lambdaQuery()
// .eq(MetadataSourceEntity::getStatus, DataConstant.EnableState.ENABLE.getKey()));
public
List
<
MetadataTreeVo
>
getDataMetadataTree
(
String
level
)
{
List
<
MetadataSourceEntity
>
sourceList
=
metadataSourceDao
.
selectList
(
Wrappers
.
emptyWrapper
());
// 参考递归
// https://blog.csdn.net/qq_19244927/article/details/106481777
return
null
;
List
<
MetadataTableEntity
>
tableList
=
metadataTableDao
.
selectList
(
Wrappers
.
emptyWrapper
());
List
<
MetadataColumnEntity
>
columnList
=
metadataColumnDao
.
selectList
(
Wrappers
.
emptyWrapper
());
List
<
MetadataTreeVo
>
list
=
sourceList
.
stream
().
filter
(
s
->
DataConstant
.
EnableState
.
ENABLE
.
getKey
().
equals
(
s
.
getStatus
()))
.
map
(
m
->
{
MetadataTreeVo
tree
=
new
MetadataTreeVo
();
tree
.
setId
(
m
.
getId
());
tree
.
setType
(
DataLevel
.
DATABASE
.
getKey
());
tree
.
setLabel
(
m
.
getSourceName
());
if
(
DataLevel
.
getLevel
(
level
).
getLevel
()
>=
DataLevel
.
TABLE
.
getLevel
())
{
tree
.
setChildren
(
getTableChildrens
(
m
.
getId
(),
level
,
tableList
,
columnList
));
}
return
tree
;
}).
collect
(
Collectors
.
toList
());
return
list
;
}
private
List
<
MetadataTreeVo
>
getTableChildrens
(
String
id
,
String
level
,
List
<
MetadataTableEntity
>
tableList
,
List
<
MetadataColumnEntity
>
columnList
)
{
List
<
MetadataTreeVo
>
children
=
tableList
.
stream
().
filter
(
m
->
Objects
.
equals
(
id
,
m
.
getSourceId
()))
.
map
(
m
->
{
MetadataTreeVo
tree
=
new
MetadataTreeVo
();
tree
.
setId
(
m
.
getId
());
tree
.
setType
(
DataLevel
.
TABLE
.
getKey
());
tree
.
setLabel
(
StrUtil
.
isBlank
(
m
.
getTableComment
())
?
m
.
getTableName
()
:
m
.
getTableComment
());
if
(
DataLevel
.
getLevel
(
level
).
getLevel
()
>=
DataLevel
.
COLUMN
.
getLevel
())
{
tree
.
setChildren
(
getColumnChildrens
(
m
.
getId
(),
columnList
));
}
return
tree
;
}).
collect
(
Collectors
.
toList
());
return
children
;
}
private
List
<
MetadataTreeVo
>
getColumnChildrens
(
String
id
,
List
<
MetadataColumnEntity
>
columnList
)
{
List
<
MetadataTreeVo
>
children
=
columnList
.
stream
().
filter
(
m
->
Objects
.
equals
(
id
,
m
.
getTableId
()))
.
map
(
m
->
{
MetadataTreeVo
tree
=
new
MetadataTreeVo
();
tree
.
setId
(
m
.
getId
());
tree
.
setType
(
DataLevel
.
TABLE
.
getKey
());
tree
.
setLabel
(
StrUtil
.
isBlank
(
m
.
getColumnComment
())
?
m
.
getColumnName
()
:
m
.
getColumnComment
());
return
tree
;
}).
collect
(
Collectors
.
toList
());
return
children
;
}
}
datax-modules/data-visual-service-parent/data-visual-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/data-visual-service-parent/data-visual-service/src/main/java/cn/datax/service/data/visual/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
data
.
visual
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/email-service-parent/email-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/email-service-parent/email-service/src/main/java/cn/datax/service/email/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
email
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/file-service-parent/file-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/file-service-parent/file-service/src/main/java/cn/datax/service/file/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
file
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/quartz-service-parent/quartz-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/quartz-service-parent/quartz-service/src/main/java/cn/datax/service/quartz/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
quartz
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-modules/system-service-parent/system-service-api/pom.xml
View file @
d48a0fea
...
...
@@ -13,20 +13,25 @@
<dependencies>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger2
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-bean-validators
</artifactId>
<version>
${swagger2.version}
</version>
</dependency>
<dependency>
<groupId>
io.springfox
</groupId>
<artifactId>
springfox-swagger-ui
</artifactId>
<version>
${swagger2.version}
</version>
<groupId>
com.github.xiaoymin
</groupId>
<artifactId>
knife4j-micro-spring-boot-starter
</artifactId>
<version>
${knife4j.version}
</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger2</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-bean-validators</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>io.springfox</groupId>-->
<!-- <artifactId>springfox-swagger-ui</artifactId>-->
<!-- <version>${swagger2.version}</version>-->
<!-- </dependency>-->
<!--feign 依赖-->
<dependency>
<groupId>
io.github.openfeign
</groupId>
...
...
datax-modules/system-service-parent/system-service/src/main/java/cn/datax/service/system/config/SwaggerConfig.java
View file @
d48a0fea
package
cn
.
datax
.
service
.
system
.
config
;
import
com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
springfox.bean.validators.configuration.BeanValidatorPluginsConfiguration
;
import
springfox.documentation.builders.*
;
import
springfox.documentation.schema.ModelRef
;
import
springfox.documentation.service.*
;
...
...
@@ -20,6 +23,8 @@ import java.util.List;
@ConditionalOnProperty
(
prefix
=
"swagger"
,
name
=
"enable"
,
havingValue
=
"true"
)
@EnableConfigurationProperties
(
SwaggerProperties
.
class
)
@EnableSwagger2
@EnableKnife4j
@Import
(
BeanValidatorPluginsConfiguration
.
class
)
public
class
SwaggerConfig
{
@Autowired
...
...
datax-ui/src/api/metadata/datacolumn.js
View file @
d48a0fea
...
...
@@ -52,3 +52,10 @@ export function updateDataColumn (data) {
data
:
data
})
}
export
function
getDataMetadataTree
(
level
)
{
return
request
({
url
:
'/data/metadata/columns/tree/'
+
level
,
method
:
'get'
})
}
datax-ui/src/views/metadata/changerecord/ChangeRecordAdd.vue
View file @
d48a0fea
...
...
@@ -9,23 +9,21 @@
</el-button-group>
</div>
<div
:style=
"classCardbody"
>
<el-steps
:active=
"active"
finish-status=
"success"
align-center
>
<el-step
title=
"数据源信息"
></el-step>
<el-step
title=
"连接信息"
></el-step>
</el-steps>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
v-if=
"active == 1"
>
<el-form-item
label=
"数据源类型"
prop=
"dbType"
>
<el-select
v-model=
"form.dbType"
>
<el-option
v-for=
"item in dbTypeOptions"
:key=
"item.id"
:label=
"item.itemValue"
:value=
"item.itemText"
></el-option>
</el-select>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"源数据表主键"
prop=
"objectId"
>
<el-input
v-model=
"form.objectId"
placeholder=
"请输入源数据表主键"
/>
</el-form-item>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
<el-form-item
label=
"源数据表的字段名"
prop=
"fieldName"
>
<el-input
v-model=
"form.fieldName"
placeholder=
"请输入源数据表的字段名"
/>
</el-form-item>
<el-form-item
label=
"原来的值"
prop=
"fieldOldValue"
>
<el-input
v-model=
"form.fieldOldValue"
placeholder=
"请输入原来的值"
/>
</el-form-item>
<el-form-item
label=
"最新的值"
prop=
"fieldNewValue"
>
<el-input
v-model=
"form.fieldNewValue"
placeholder=
"请输入最新的值"
/>
</el-form-item>
<el-form-item
label=
"版本号"
prop=
"version"
>
<el-input
v-model=
"form.version"
placeholder=
"请输入版本号"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
>
...
...
@@ -40,38 +38,13 @@
<el-input
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入内容"
/>
</el-form-item>
</el-form>
<el-form
ref=
"form2"
:model=
"form2"
:rules=
"rules2"
label-width=
"80px"
v-if=
"active == 2"
>
<el-form-item
label=
"主机"
prop=
"host"
>
<el-input
v-model=
"form2.host"
placeholder=
"请输入主机"
/>
</el-form-item>
<el-form-item
label=
"端口"
prop=
"port"
>
<el-input
v-model=
"form2.port"
placeholder=
"请输入端口"
/>
</el-form-item>
<el-form-item
label=
"服务名"
prop=
"sid"
v-if=
"form.dbType === '3' || form.dbType === '4'"
>
<el-input
v-model=
"form2.sid"
placeholder=
"请输入服务名"
/>
</el-form-item>
<el-form-item
label=
"数据库"
prop=
"dbName"
v-if=
"form.dbType !== '3' && form.dbType !== '4'"
>
<el-input
v-model=
"form2.dbName"
placeholder=
"请输入数据库"
/>
</el-form-item>
<el-form-item
label=
"用户名"
prop=
"username"
>
<el-input
v-model=
"form2.username"
placeholder=
"请输入用户名"
/>
</el-form-item>
<el-form-item
label=
"密码"
prop=
"password"
>
<el-input
v-model=
"form2.password"
placeholder=
"请输入密码"
/>
</el-form-item>
<el-form-item>
<el-button
size=
"mini"
type=
"primary"
@
click=
"handleCheckConnection"
>
连通性检测
</el-button>
</el-form-item>
</el-form>
<el-button
style=
"margin-top: 12px;"
@
click=
"handleNextStep"
v-if=
"active == 1"
>
下一步
</el-button>
<el-button
style=
"margin-top: 12px;"
@
click=
"handleLastStep"
v-if=
"active == 2"
>
上一步
</el-button>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
{
add
DataSource
,
checkConnection
}
from
'@/api/metadata/datasource
'
import
{
add
ChangeRecord
}
from
'@/api/metadata/changerecord
'
export
default
{
name
:
'ChangeRecordAdd'
,
...
...
@@ -104,58 +77,30 @@ export default {
loadingText
:
'保存'
,
isDisabled
:
false
},
active
:
1
,
// 表单参数
form
:
{
id
:
undefined
,
dbType
:
undefined
,
themeId
:
undefined
,
sourceName
:
undefined
,
dbSchema
:
{},
status
:
'1'
,
remark
:
undefined
status
:
'1'
},
// 表单校验
rules
:
{
dbType
:
[
{
required
:
true
,
message
:
'数据源类型不能为空'
,
trigger
:
'change'
}
],
sourceName
:
[
{
required
:
true
,
message
:
'数据源名称不能为空'
,
trigger
:
'blur'
}
]
},
form2
:
{
host
:
undefined
,
port
:
undefined
,
dbName
:
undefined
,
username
:
undefined
,
password
:
undefined
,
sid
:
undefined
},
rules2
:
{
host
:
[
{
required
:
true
,
message
:
'主机不能为空'
,
trigger
:
'blur'
}
objectId
:
[
{
required
:
true
,
message
:
'源数据表主键不能为空'
,
trigger
:
'blur'
}
],
port
:
[
{
required
:
true
,
message
:
'
端口
不能为空'
,
trigger
:
'blur'
}
fieldName
:
[
{
required
:
true
,
message
:
'
数据表的字段名
不能为空'
,
trigger
:
'blur'
}
],
sid
:
[
{
required
:
true
,
message
:
'
服务名
不能为空'
,
trigger
:
'blur'
}
fieldOldValue
:
[
{
required
:
true
,
message
:
'
原来的值
不能为空'
,
trigger
:
'blur'
}
],
dbNam
e
:
[
{
required
:
true
,
message
:
'
数据库
不能为空'
,
trigger
:
'blur'
}
fieldNewValu
e
:
[
{
required
:
true
,
message
:
'
最新的值
不能为空'
,
trigger
:
'blur'
}
],
username
:
[
{
required
:
true
,
message
:
'用户名不能为空'
,
trigger
:
'blur'
}
],
password
:
[
{
required
:
true
,
message
:
'密码不能为空'
,
trigger
:
'blur'
}
version
:
[
{
required
:
true
,
message
:
'版本号不能为空'
,
trigger
:
'blur'
}
]
},
// 状态数据字典
statusOptions
:
[],
// 数据源类型数据字典
dbTypeOptions
:
[]
statusOptions
:
[]
}
},
created
()
{
...
...
@@ -164,50 +109,19 @@ export default {
this
.
statusOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_db_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
dbTypeOptions
=
response
.
data
}
})
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 步骤条下一步 */
handleNextStep
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
active
++
}
})
},
/** 步骤条上一步 */
handleLastStep
()
{
this
.
active
--
},
/** 检测数据库连通性 */
handleCheckConnection
()
{
this
.
$refs
[
'form2'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
form
.
dbSchema
=
this
.
form2
checkConnection
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'连接成功'
)
}
})
}
})
},
/** 提交按钮 */
submitForm
:
function
()
{
this
.
$refs
[
'form
2
'
].
validate
(
valid
=>
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
form
.
dbSchema
=
this
.
form2
this
.
loadingOptions
.
loading
=
true
this
.
loadingOptions
.
loadingText
=
'保存中...'
this
.
loadingOptions
.
isDisabled
=
true
add
DataSource
(
this
.
form
).
then
(
response
=>
{
add
ChangeRecord
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'保存成功'
)
setTimeout
(()
=>
{
...
...
datax-ui/src/views/metadata/changerecord/ChangeRecordDetail.vue
View file @
d48a0fea
...
...
@@ -4,30 +4,25 @@
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
title
}}
</span>
<el-button-group
style=
"float: right;"
>
<el-button
size=
"mini"
icon=
"el-icon-coin"
type=
"primary"
round
@
click=
"handleSync"
>
元数据同步
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-coin"
type=
"primary"
round
@
click=
"handleWord"
>
数据库文档
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-coin"
type=
"primary"
round
@
click=
"handleCheckConnection"
v-if=
"active == 2"
>
连通性检测
</el-button>
<el-button
size=
"mini"
icon=
"el-icon-back"
round
@
click=
"showCard"
>
返回
</el-button>
</el-button-group>
</div>
<div
:style=
"classCardbody"
>
<el-steps
:active=
"active"
finish-status=
"success"
align-center
>
<el-step
title=
"数据源信息"
></el-step>
<el-step
title=
"连接信息"
></el-step>
</el-steps>
<el-form
ref=
"form"
:model=
"form"
label-width=
"80px"
v-if=
"active == 1"
disabled
>
<el-form-item
label=
"数据源类型"
prop=
"dbType"
>
<el-select
v-model=
"form.dbType"
>
<el-option
v-for=
"item in dbTypeOptions"
:key=
"item.id"
:label=
"item.itemValue"
:value=
"item.itemText"
></el-option>
</el-select>
<el-form
ref=
"form"
:model=
"form"
label-width=
"80px"
disabled
>
<el-form-item
label=
"源数据表主键"
prop=
"objectId"
>
<el-input
v-model=
"form.objectId"
/>
</el-form-item>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
<el-form-item
label=
"源数据表的字段名"
prop=
"fieldName"
>
<el-input
v-model=
"form.fieldName"
/>
</el-form-item>
<el-form-item
label=
"原来的值"
prop=
"fieldOldValue"
>
<el-input
v-model=
"form.fieldOldValue"
/>
</el-form-item>
<el-form-item
label=
"最新的值"
prop=
"fieldNewValue"
>
<el-input
v-model=
"form.fieldNewValue"
/>
</el-form-item>
<el-form-item
label=
"版本号"
prop=
"version"
>
<el-input
v-model=
"form.version"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
>
...
...
@@ -39,38 +34,16 @@
</el-radio-group>
</el-form-item>
<el-form-item
label=
"备注"
prop=
"remark"
>
<el-input
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入内容"
/>
</el-form-item>
</el-form>
<el-form
ref=
"form2"
:model=
"form2"
label-width=
"80px"
v-if=
"active == 2"
disabled
>
<el-form-item
label=
"主机"
prop=
"host"
>
<el-input
v-model=
"form2.host"
placeholder=
"请输入主机"
/>
</el-form-item>
<el-form-item
label=
"端口"
prop=
"port"
>
<el-input
v-model=
"form2.port"
placeholder=
"请输入端口"
/>
</el-form-item>
<el-form-item
label=
"服务名"
prop=
"sid"
v-if=
"form.dbType === '3' || form.dbType === '4'"
>
<el-input
v-model=
"form2.sid"
placeholder=
"请输入服务名"
/>
</el-form-item>
<el-form-item
label=
"数据库"
prop=
"dbName"
v-if=
"form.dbType !== '3' || form.dbType !== '4'"
>
<el-input
v-model=
"form2.dbName"
placeholder=
"请输入数据库"
/>
</el-form-item>
<el-form-item
label=
"用户名"
prop=
"username"
>
<el-input
v-model=
"form2.username"
placeholder=
"请输入用户名"
/>
</el-form-item>
<el-form-item
label=
"密码"
prop=
"password"
>
<el-input
v-model=
"form2.password"
placeholder=
"请输入密码"
/>
<el-input
v-model=
"form.remark"
type=
"textarea"
/>
</el-form-item>
</el-form>
<el-button
style=
"margin-top: 12px;"
@
click=
"handleNextStep"
v-if=
"active == 1"
>
下一步
</el-button>
<el-button
style=
"margin-top: 12px;"
@
click=
"handleLastStep"
v-if=
"active == 2"
>
上一步
</el-button>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
{
get
DataSource
,
checkConnection
,
sync
,
word
}
from
'@/api/metadata/datasource
'
import
{
get
ChangeRecord
}
from
'@/api/metadata/changerecord
'
export
default
{
name
:
'ChangeRecordDetail'
,
...
...
@@ -97,14 +70,10 @@ export default {
showEdit
:
false
,
showDetail
:
false
},
active
:
1
,
// 表单参数
form
:
{},
form2
:
{},
// 状态数据字典
statusOptions
:
[],
// 数据源类型数据字典
dbTypeOptions
:
[]
statusOptions
:
[]
}
},
created
()
{
...
...
@@ -114,75 +83,19 @@ export default {
this
.
statusOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_db_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
dbTypeOptions
=
response
.
data
}
})
},
mounted
()
{
this
.
get
DataSource
(
this
.
data
.
id
)
this
.
get
ChangeRecord
(
this
.
data
.
id
)
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 获取详情 */
get
DataSource
:
function
(
id
)
{
get
DataSource
(
id
).
then
(
response
=>
{
get
ChangeRecord
:
function
(
id
)
{
get
ChangeRecord
(
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
form
=
response
.
data
this
.
form2
=
this
.
form
.
dbSchema
}
})
},
/** 步骤条下一步 */
handleNextStep
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
active
++
}
})
},
/** 步骤条上一步 */
handleLastStep
()
{
this
.
active
--
},
/** 检测数据库连通性 */
handleCheckConnection
()
{
checkConnection
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'连接成功'
)
}
})
},
/** 元数据同步 */
handleSync
()
{
sync
(
this
.
data
.
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'元数据正在后台同步中,请到元数据管理中查看结果'
)
}
})
},
/** 数据库文档 */
handleWord
()
{
word
(
this
.
data
.
id
).
then
(
response
=>
{
const
blob
=
new
Blob
([
response
])
const
fileName
=
'数据库设计文档.doc'
if
(
'download'
in
document
.
createElement
(
'a'
))
{
// 非IE下载
const
elink
=
document
.
createElement
(
'a'
)
elink
.
download
=
fileName
elink
.
style
.
display
=
'none'
elink
.
href
=
URL
.
createObjectURL
(
blob
)
document
.
body
.
appendChild
(
elink
)
elink
.
click
()
URL
.
revokeObjectURL
(
elink
.
href
)
// 释放URL 对象
document
.
body
.
removeChild
(
elink
)
}
else
{
// IE10+下载
navigator
.
msSaveBlob
(
blob
,
fileName
)
}
})
}
...
...
datax-ui/src/views/metadata/changerecord/ChangeRecordEdit.vue
View file @
d48a0fea
...
...
@@ -9,23 +9,21 @@
</el-button-group>
</div>
<div
:style=
"classCardbody"
>
<el-steps
:active=
"active"
finish-status=
"success"
align-center
>
<el-step
title=
"数据源信息"
></el-step>
<el-step
title=
"连接信息"
></el-step>
</el-steps>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
v-if=
"active == 1"
>
<el-form-item
label=
"数据源类型"
prop=
"dbType"
>
<el-select
v-model=
"form.dbType"
>
<el-option
v-for=
"item in dbTypeOptions"
:key=
"item.id"
:label=
"item.itemValue"
:value=
"item.itemText"
></el-option>
</el-select>
<el-form
ref=
"form"
:model=
"form"
:rules=
"rules"
label-width=
"80px"
>
<el-form-item
label=
"源数据表主键"
prop=
"objectId"
>
<el-input
v-model=
"form.objectId"
placeholder=
"请输入源数据表主键"
/>
</el-form-item>
<el-form-item
label=
"数据源名称"
prop=
"sourceName"
>
<el-input
v-model=
"form.sourceName"
placeholder=
"请输入数据源名称"
/>
<el-form-item
label=
"源数据表的字段名"
prop=
"fieldName"
>
<el-input
v-model=
"form.fieldName"
placeholder=
"请输入源数据表的字段名"
/>
</el-form-item>
<el-form-item
label=
"原来的值"
prop=
"fieldOldValue"
>
<el-input
v-model=
"form.fieldOldValue"
placeholder=
"请输入原来的值"
/>
</el-form-item>
<el-form-item
label=
"最新的值"
prop=
"fieldNewValue"
>
<el-input
v-model=
"form.fieldNewValue"
placeholder=
"请输入最新的值"
/>
</el-form-item>
<el-form-item
label=
"版本号"
prop=
"version"
>
<el-input
v-model=
"form.version"
placeholder=
"请输入版本号"
/>
</el-form-item>
<el-form-item
label=
"状态"
prop=
"status"
>
<el-radio-group
v-model=
"form.status"
>
...
...
@@ -40,38 +38,13 @@
<el-input
v-model=
"form.remark"
type=
"textarea"
placeholder=
"请输入内容"
/>
</el-form-item>
</el-form>
<el-form
ref=
"form2"
:model=
"form2"
:rules=
"rules2"
label-width=
"80px"
v-if=
"active == 2"
>
<el-form-item
label=
"主机"
prop=
"host"
>
<el-input
v-model=
"form2.host"
placeholder=
"请输入主机"
/>
</el-form-item>
<el-form-item
label=
"端口"
prop=
"port"
>
<el-input
v-model=
"form2.port"
placeholder=
"请输入端口"
/>
</el-form-item>
<el-form-item
label=
"服务名"
prop=
"sid"
v-if=
"form.dbType === '3' || form.dbType === '4'"
>
<el-input
v-model=
"form2.sid"
placeholder=
"请输入服务名"
/>
</el-form-item>
<el-form-item
label=
"数据库"
prop=
"dbName"
v-if=
"form.dbType !== '3' && form.dbType !== '4'"
>
<el-input
v-model=
"form2.dbName"
placeholder=
"请输入数据库"
/>
</el-form-item>
<el-form-item
label=
"用户名"
prop=
"username"
>
<el-input
v-model=
"form2.username"
placeholder=
"请输入用户名"
/>
</el-form-item>
<el-form-item
label=
"密码"
prop=
"password"
>
<el-input
v-model=
"form2.password"
placeholder=
"请输入密码"
/>
</el-form-item>
<el-form-item>
<el-button
size=
"mini"
type=
"primary"
@
click=
"handleCheckConnection"
>
连通性检测
</el-button>
</el-form-item>
</el-form>
<el-button
style=
"margin-top: 12px;"
@
click=
"handleNextStep"
v-if=
"active == 1"
>
下一步
</el-button>
<el-button
style=
"margin-top: 12px;"
@
click=
"handleLastStep"
v-if=
"active == 2"
>
上一步
</el-button>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
{
get
DataSource
,
updateDataSource
,
checkConnection
}
from
'@/api/metadata/datasource
'
import
{
get
ChangeRecord
,
updateChangeRecord
}
from
'@/api/metadata/changerecord
'
export
default
{
name
:
'ChangeRecordEdit'
,
...
...
@@ -104,43 +77,28 @@ export default {
loadingText
:
'保存'
,
isDisabled
:
false
},
active
:
1
,
// 表单参数
form
:
{},
// 表单校验
rules
:
{
dbType
:
[
{
required
:
true
,
message
:
'数据源类型不能为空'
,
trigger
:
'change'
}
],
sourceName
:
[
{
required
:
true
,
message
:
'数据源名称不能为空'
,
trigger
:
'blur'
}
]
},
form2
:
{},
rules2
:
{
host
:
[
{
required
:
true
,
message
:
'主机不能为空'
,
trigger
:
'blur'
}
objectId
:
[
{
required
:
true
,
message
:
'源数据表主键不能为空'
,
trigger
:
'blur'
}
],
port
:
[
{
required
:
true
,
message
:
'
端口
不能为空'
,
trigger
:
'blur'
}
fieldName
:
[
{
required
:
true
,
message
:
'
数据表的字段名
不能为空'
,
trigger
:
'blur'
}
],
sid
:
[
{
required
:
true
,
message
:
'
服务名
不能为空'
,
trigger
:
'blur'
}
fieldOldValue
:
[
{
required
:
true
,
message
:
'
原来的值
不能为空'
,
trigger
:
'blur'
}
],
dbNam
e
:
[
{
required
:
true
,
message
:
'
数据库
不能为空'
,
trigger
:
'blur'
}
fieldNewValu
e
:
[
{
required
:
true
,
message
:
'
最新的值
不能为空'
,
trigger
:
'blur'
}
],
username
:
[
{
required
:
true
,
message
:
'用户名不能为空'
,
trigger
:
'blur'
}
],
password
:
[
{
required
:
true
,
message
:
'密码不能为空'
,
trigger
:
'blur'
}
version
:
[
{
required
:
true
,
message
:
'版本号不能为空'
,
trigger
:
'blur'
}
]
},
// 状态数据字典
statusOptions
:
[],
// 数据源类型数据字典
dbTypeOptions
:
[]
statusOptions
:
[]
}
},
created
()
{
...
...
@@ -150,50 +108,19 @@ export default {
this
.
statusOptions
=
response
.
data
}
})
this
.
getDicts
(
'data_db_type'
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
dbTypeOptions
=
response
.
data
}
})
},
mounted
()
{
this
.
get
DataSource
(
this
.
data
.
id
)
this
.
get
ChangeRecord
(
this
.
data
.
id
)
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 获取详情 */
get
DataSource
:
function
(
id
)
{
get
DataSource
(
id
).
then
(
response
=>
{
get
ChangeRecord
:
function
(
id
)
{
get
ChangeRecord
(
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
form
=
response
.
data
this
.
form2
=
this
.
form
.
dbSchema
}
})
},
/** 步骤条下一步 */
handleNextStep
()
{
this
.
$refs
[
'form'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
active
++
}
})
},
/** 步骤条上一步 */
handleLastStep
()
{
this
.
active
--
},
/** 检测数据库连通性 */
handleCheckConnection
()
{
this
.
$refs
[
'form2'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
form
.
dbSchema
=
this
.
form2
checkConnection
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'连接成功'
)
}
})
}
})
},
...
...
@@ -201,11 +128,10 @@ export default {
submitForm
:
function
()
{
this
.
$refs
[
'form2'
].
validate
(
valid
=>
{
if
(
valid
)
{
this
.
form
.
dbSchema
=
this
.
form2
this
.
loadingOptions
.
loading
=
true
this
.
loadingOptions
.
loadingText
=
'保存中...'
this
.
loadingOptions
.
isDisabled
=
true
update
DataSource
(
this
.
form
).
then
(
response
=>
{
update
ChangeRecord
(
this
.
form
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
$message
.
success
(
'保存成功'
)
setTimeout
(()
=>
{
...
...
datax-ui/src/views/metadata/changerecord/ChangeRecordList.vue
View file @
d48a0fea
...
...
@@ -2,10 +2,10 @@
<div>
<el-card
class=
"box-card"
shadow=
"always"
>
<el-form
:model=
"queryParams"
ref=
"queryForm"
:inline=
"true"
>
<el-form-item
label=
"
数据源名称"
prop=
"source
Name"
>
<el-form-item
label=
"
字段名称"
prop=
"field
Name"
>
<el-input
v-model=
"queryParams.
source
Name"
placeholder=
"请输入
数据源
名称"
v-model=
"queryParams.
field
Name"
placeholder=
"请输入
字段
名称"
clearable
size=
"small"
@
keyup
.
enter
.
native=
"handleQuery"
...
...
@@ -90,7 +90,7 @@
<el-table
v-loading=
"loading"
:data=
"
dataSource
List"
:data=
"
changeRecord
List"
@
selection-change=
"handleSelectionChange"
border
tooltip-effect=
"dark"
...
...
@@ -158,7 +158,7 @@
</template>
<
script
>
import
{
page
DataSource
,
delDataSource
,
delDataSources
}
from
'@/api/metadata/datasource
'
import
{
page
ChangeRecord
,
delChangeRecord
,
delChangeRecords
}
from
'@/api/metadata/changerecord
'
export
default
{
name
:
'ChangeRecordList'
,
...
...
@@ -183,7 +183,11 @@ export default {
multiple
:
true
,
// 表格头
tableColumns
:
[
{
prop
:
'sourceName'
,
label
:
'数据源名称'
,
show
:
true
},
{
prop
:
'objectId'
,
label
:
'源数据表主键'
,
show
:
true
},
{
prop
:
'fieldName'
,
label
:
'源数据表的字段名'
,
show
:
true
},
{
prop
:
'fieldOldValue'
,
label
:
'原来的值'
,
show
:
true
},
{
prop
:
'fieldNewValue'
,
label
:
'最新的值'
,
show
:
true
},
{
prop
:
'version'
,
label
:
'版本号'
,
show
:
true
},
{
prop
:
'status'
,
label
:
'状态'
,
...
...
@@ -197,15 +201,15 @@ export default {
tableSize
:
'medium'
,
// 状态数据字典
statusOptions
:
[],
//
数据源
表格数据
dataSource
List
:
[],
// 表格数据
changeRecord
List
:
[],
// 总数据条数
total
:
0
,
// 查询参数
queryParams
:
{
pageNum
:
1
,
pageSize
:
20
,
source
Name
:
''
field
Name
:
''
}
}
},
...
...
@@ -224,11 +228,11 @@ export default {
/** 查询数据源列表 */
getList
()
{
this
.
loading
=
true
page
DataSource
(
this
.
queryParams
).
then
(
response
=>
{
page
ChangeRecord
(
this
.
queryParams
).
then
(
response
=>
{
this
.
loading
=
false
if
(
response
.
success
)
{
const
{
data
}
=
response
this
.
dataSource
List
=
data
.
data
this
.
changeRecord
List
=
data
.
data
this
.
total
=
data
.
total
}
})
...
...
@@ -302,7 +306,7 @@ export default {
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
del
DataSource
(
row
.
id
)
del
ChangeRecord
(
row
.
id
)
}).
then
(()
=>
{
this
.
$message
.
success
(
'删除成功'
)
this
.
getList
()
...
...
datax-ui/src/views/metadata/datacolumn/DataColumnDetail.vue
0 → 100644
View file @
d48a0fea
<
template
>
<div>
<el-card
class=
"box-card"
shadow=
"always"
>
<div
slot=
"header"
class=
"clearfix"
>
<span>
{{
title
}}
</span>
<el-button-group
style=
"float: right;"
>
<el-button
size=
"mini"
icon=
"el-icon-back"
round
@
click=
"showCard"
>
返回
</el-button>
</el-button-group>
</div>
<div
:style=
"classCardbody"
>
<el-form
ref=
"form"
:model=
"form"
label-width=
"80px"
disabled
>
<el-form-item
label=
"字段名称"
prop=
"columnName"
>
<el-input
v-model=
"form.columnName"
/>
</el-form-item>
<el-form-item
label=
"字段注释"
prop=
"columnComment"
>
<el-input
v-model=
"form.columnComment"
/>
</el-form-item>
<el-form-item
label=
"是否主键"
prop=
"columnKey"
>
<el-input
v-model=
"form.columnKey"
/>
</el-form-item>
<el-form-item
label=
"是否允许为空"
prop=
"columnNullable"
>
<el-input
v-model=
"form.columnNullable"
/>
</el-form-item>
<el-form-item
label=
"数据类型"
prop=
"dataType"
>
<el-input
v-model=
"form.dataType"
/>
</el-form-item>
<el-form-item
label=
"数据长度"
prop=
"dataLength"
>
<el-input
v-model=
"form.dataLength"
/>
</el-form-item>
<el-form-item
label=
"数据精度"
prop=
"dataPrecision"
>
<el-input
v-model=
"form.dataPrecision"
/>
</el-form-item>
<el-form-item
label=
"数据小数位"
prop=
"dataScale"
>
<el-input
v-model=
"form.dataScale"
/>
</el-form-item>
<el-form-item
label=
"数据默认值"
prop=
"dataDefault"
>
<el-input
v-model=
"form.dataDefault"
/>
</el-form-item>
</el-form>
</div>
</el-card>
</div>
</
template
>
<
script
>
import
{
getDataColumn
}
from
'@/api/metadata/datacolumn'
export
default
{
name
:
'DataColumnDetail'
,
props
:
{
data
:
{
type
:
Object
,
default
:
function
()
{
return
{}
}
}
},
data
()
{
return
{
classCardbody
:
{
overflow
:
'auto'
,
height
:
document
.
body
.
offsetHeight
-
240
+
'px'
},
title
:
'元数据详情'
,
// 展示切换
showOptions
:
{
data
:
{},
showList
:
true
,
showDetail
:
false
},
// 表单参数
form
:
{}
}
},
created
()
{
console
.
log
(
'id:'
+
this
.
data
.
id
)
},
mounted
()
{
this
.
getDataColumn
(
this
.
data
.
id
)
},
methods
:
{
showCard
()
{
this
.
$emit
(
'showCard'
,
this
.
showOptions
)
},
/** 获取详情 */
getDataColumn
:
function
(
id
)
{
getDataColumn
(
id
).
then
(
response
=>
{
if
(
response
.
success
)
{
this
.
form
=
response
.
data
}
})
}
}
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
datax-ui/src/views/metadata/datacolumn/DataColumnList.vue
0 → 100644
View file @
d48a0fea
This diff is collapsed.
Click to expand it.
datax-ui/src/views/metadata/datacolumn/index.vue
View file @
d48a0fea
<
template
>
<div
class=
"app-container"
>
DataColumn
<transition
name=
"el-zoom-in-center"
>
<data-column-list
v-if=
"options.showList"
@
showCard=
"showCard"
></data-column-list>
</transition>
<transition
name=
"el-zoom-in-bottom"
>
<data-column-detail
v-if=
"options.showDetail"
:data=
"options.data"
@
showCard=
"showCard"
></data-column-detail>
</transition>
</div>
</
template
>
<
script
>
import
DataColumnList
from
'./DataColumnList'
import
DataColumnDetail
from
'./DataColumnDetail'
export
default
{
name
:
'DataColumn'
name
:
'DataColumn'
,
components
:
{
DataColumnList
,
DataColumnDetail
},
data
()
{
return
{
options
:
{
data
:
{},
showList
:
true
,
showDetail
:
false
}
}
},
methods
:
{
showCard
(
data
)
{
Object
.
assign
(
this
.
options
,
data
)
}
}
}
</
script
>
...
...
datax-ui/src/views/metadata/datamap/index.vue
0 → 100644
View file @
d48a0fea
<
template
>
<div
class=
"app-container"
>
DataMap
</div>
</
template
>
<
script
>
export
default
{
name
:
'DataMap'
}
</
script
>
<
style
lang=
"scss"
scoped
>
</
style
>
pom.xml
View file @
d48a0fea
...
...
@@ -42,7 +42,9 @@
<commons.codec.version>
1.13
</commons.codec.version>
<commons.beanutils.version>
1.9.4
</commons.beanutils.version>
<common-pool.version>
2.7.0
</common-pool.version>
<swagger2.version>
2.9.2
</swagger2.version>
<knife4j.version>
2.0.4
</knife4j.version>
<swagger.version>
1.6.2
</swagger.version>
<springfox.version>
2.9.2
</springfox.version>
<mapstruct.version>
1.3.1.Final
</mapstruct.version>
<aliyun-sdk-oss.version>
3.6.0
</aliyun-sdk-oss.version>
<qiniu-java-sdk.version>
7.2.25
</qiniu-java-sdk.version>
...
...
@@ -53,7 +55,7 @@
<sqlserver.version>
8.2.1.jre8
</sqlserver.version>
<zxing.version>
3.4.0
</zxing.version>
<aspose.version>
20.3
</aspose.version>
<redisson.version>
3.1
2.5
</redisson.version>
<redisson.version>
3.1
3.3
</redisson.version>
<jasperreports.version>
6.12.2
</jasperreports.version>
<mybatis-spring.version>
2.1.2
</mybatis-spring.version>
<bitwalker.version>
1.21
</bitwalker.version>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment