diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java
index 119be18a4..95839a2fb 100644
--- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java
+++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java
@@ -17,7 +17,6 @@
package com.pig4cloud.pigx.common.data.mybatis;
-import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
@@ -83,7 +82,7 @@ public class MybatisPlusConfiguration implements WebMvcConfigurer {
dataScopeInnerInterceptor.setDataScopeHandle(dataScopeHandle());
interceptor.addInnerInterceptor(dataScopeInnerInterceptor);
// 分页支持
- interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
+ interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
diff --git a/pigx-common/pigx-common-datasource/pom.xml b/pigx-common/pigx-common-datasource/pom.xml
index 18bcfb46b..e484f746a 100644
--- a/pigx-common/pigx-common-datasource/pom.xml
+++ b/pigx-common/pigx-common-datasource/pom.xml
@@ -32,5 +32,10 @@
druid-spring-boot-starter
provided
+
+
+ org.springframework
+ spring-webmvc
+
\ No newline at end of file
diff --git a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/DynamicDataSourceAutoConfiguration.java b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/DynamicDataSourceAutoConfiguration.java
index cde3b1811..5daa24ca9 100644
--- a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/DynamicDataSourceAutoConfiguration.java
+++ b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/DynamicDataSourceAutoConfiguration.java
@@ -22,6 +22,7 @@ import com.baomidou.dynamic.datasource.provider.DynamicDataSourceProvider;
import com.pig4cloud.pigx.common.datasource.config.DruidDataSourceProperties;
import com.pig4cloud.pigx.common.datasource.config.JdbcDynamicDataSourceProvider;
import com.pig4cloud.pigx.common.datasource.config.LastParamDsProcessor;
+import com.pig4cloud.pigx.common.datasource.config.WebMvcConfig;
import lombok.AllArgsConstructor;
import org.jasypt.encryption.StringEncryptor;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
@@ -29,6 +30,7 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @author lengleng
@@ -56,4 +58,9 @@ public class DynamicDataSourceAutoConfiguration {
return new LastParamDsProcessor();
}
+ @Bean
+ public WebMvcConfigurer webMvcConfigurer() {
+ return new WebMvcConfig();
+ }
+
}
diff --git a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/ClearTtlDsInterceptor.java b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/ClearTtlDsInterceptor.java
new file mode 100644
index 000000000..9e05799cb
--- /dev/null
+++ b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/ClearTtlDsInterceptor.java
@@ -0,0 +1,29 @@
+package com.pig4cloud.pigx.common.datasource.config;
+
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
+import org.springframework.web.servlet.HandlerInterceptor;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+/**
+ * @author lengleng
+ * @date 2020/12/11
+ *
+ * 清空上文的DS 设置避免污染当前线程
+ */
+public class ClearTtlDsInterceptor implements HandlerInterceptor {
+
+ @Override
+ public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
+ DynamicDataSourceContextHolder.clear();
+ return true;
+ }
+
+ @Override
+ public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler,
+ Exception ex) {
+ DynamicDataSourceContextHolder.clear();
+ }
+
+}
diff --git a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/JdbcDynamicDataSourceProvider.java b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/JdbcDynamicDataSourceProvider.java
index 7cbf48dd5..958a9f0f8 100644
--- a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/JdbcDynamicDataSourceProvider.java
+++ b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/JdbcDynamicDataSourceProvider.java
@@ -20,6 +20,8 @@ package com.pig4cloud.pigx.common.datasource.config;
import com.baomidou.dynamic.datasource.provider.AbstractJdbcDataSourceProvider;
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty;
import com.pig4cloud.pigx.common.datasource.support.DataSourceConstants;
+import com.pig4cloud.pigx.common.datasource.util.DsConfTypeEnum;
+import com.pig4cloud.pigx.common.datasource.util.DsJdbcUrlEnum;
import org.jasypt.encryption.StringEncryptor;
import java.sql.ResultSet;
@@ -61,9 +63,30 @@ public class JdbcDynamicDataSourceProvider extends AbstractJdbcDataSourceProvide
String name = rs.getString(DataSourceConstants.DS_NAME);
String username = rs.getString(DataSourceConstants.DS_USER_NAME);
String password = rs.getString(DataSourceConstants.DS_USER_PWD);
- String url = rs.getString(DataSourceConstants.DS_JDBC_URL);
+ Integer confType = rs.getInt(DataSourceConstants.DS_CONFIG_TYPE);
+ String dsType = rs.getString(DataSourceConstants.DS_TYPE);
+
+ String url;
+ // JDBC 配置形式
+ DsJdbcUrlEnum urlEnum = DsJdbcUrlEnum.get(dsType);
+ if (DsConfTypeEnum.JDBC.getType().equals(confType)) {
+ url = rs.getString(DataSourceConstants.DS_JDBC_URL);
+ }
+ else if (DsJdbcUrlEnum.MSSQL.getDbName().equals(dsType)) {
+ String host = rs.getString(DataSourceConstants.DS_HOST);
+ String port = rs.getString(DataSourceConstants.DS_PORT);
+ String dsName = rs.getString(DataSourceConstants.DS_NAME);
+ String instance = rs.getString(DataSourceConstants.DS_INSTANCE);
+ url = String.format(urlEnum.getUrl(), host, instance, port, dsName);
+ }
+ else {
+ String host = rs.getString(DataSourceConstants.DS_HOST);
+ String port = rs.getString(DataSourceConstants.DS_PORT);
+ String dsName = rs.getString(DataSourceConstants.DS_NAME);
+ url = String.format(urlEnum.getUrl(), host, port, dsName);
+ }
+
DataSourceProperty property = new DataSourceProperty();
- property.setDriverClassName(DataSourceConstants.DS_DRIVER);
property.setUsername(username);
property.setPassword(stringEncryptor.decrypt(password));
property.setUrl(url);
@@ -75,7 +98,6 @@ public class JdbcDynamicDataSourceProvider extends AbstractJdbcDataSourceProvide
property.setUsername(properties.getUsername());
property.setPassword(properties.getPassword());
property.setUrl(properties.getUrl());
- property.setDriverClassName(DataSourceConstants.DS_DRIVER);
map.put(DataSourceConstants.DS_MASTER, property);
return map;
}
diff --git a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/WebMvcConfig.java b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/WebMvcConfig.java
new file mode 100644
index 000000000..77da071e1
--- /dev/null
+++ b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/config/WebMvcConfig.java
@@ -0,0 +1,17 @@
+package com.pig4cloud.pigx.common.datasource.config;
+
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+/**
+ * @author lengleng
+ * @date 2020/12/11
+ */
+public class WebMvcConfig implements WebMvcConfigurer {
+
+ @Override
+ public void addInterceptors(InterceptorRegistry registry) {
+ registry.addInterceptor(new ClearTtlDsInterceptor()).addPathPatterns("/**");
+ }
+
+}
\ No newline at end of file
diff --git a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/support/DataSourceConstants.java b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/support/DataSourceConstants.java
index 38730f4b5..8f2a96d40 100644
--- a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/support/DataSourceConstants.java
+++ b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/support/DataSourceConstants.java
@@ -23,6 +23,11 @@ public interface DataSourceConstants {
*/
String DS_JDBC_URL = "url";
+ /**
+ * 配置类型
+ */
+ String DS_CONFIG_TYPE = "conf_type";
+
/**
* 用户名
*/
@@ -34,8 +39,23 @@ public interface DataSourceConstants {
String DS_USER_PWD = "password";
/**
- * 默认驱动名称
+ * 数据库类型
*/
- String DS_DRIVER = "com.mysql.cj.jdbc.Driver";
+ String DS_TYPE = "ds_type";
+
+ /**
+ * 主机类型
+ */
+ String DS_HOST = "host";
+
+ /**
+ * 端口
+ */
+ String DS_PORT = "port";
+
+ /**
+ * 实例名称
+ */
+ String DS_INSTANCE = "instance";
}
diff --git a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/util/DsConfTypeEnum.java b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/util/DsConfTypeEnum.java
new file mode 100644
index 000000000..9579e7c72
--- /dev/null
+++ b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/util/DsConfTypeEnum.java
@@ -0,0 +1,30 @@
+package com.pig4cloud.pigx.common.datasource.util;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author lengleng
+ * @date 2020/12/11
+ *
+ * 数据源配置类型
+ */
+@Getter
+@AllArgsConstructor
+public enum DsConfTypeEnum {
+
+ /**
+ * 主机链接
+ */
+ HOST(0, "主机链接"),
+
+ /**
+ * JDBC链接
+ */
+ JDBC(1, "JDBC链接");
+
+ private final Integer type;
+
+ private final String description;
+
+}
diff --git a/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/util/DsJdbcUrlEnum.java b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/util/DsJdbcUrlEnum.java
new file mode 100644
index 000000000..0987fcfaf
--- /dev/null
+++ b/pigx-common/pigx-common-datasource/src/main/java/com/pig4cloud/pigx/common/datasource/util/DsJdbcUrlEnum.java
@@ -0,0 +1,53 @@
+package com.pig4cloud.pigx.common.datasource.util;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+import java.util.Arrays;
+
+/**
+ * @author lengleng
+ * @date 2020/12/11
+ *
+ * jdbc-url
+ */
+@Getter
+@AllArgsConstructor
+public enum DsJdbcUrlEnum {
+
+ /**
+ * mysql 数据库
+ */
+ MYSQL("mysql",
+ "jdbc:mysql://%s:%s/%s?characterEncoding=utf8"
+ + "&zeroDateTimeBehavior=convertToNull&useSSL=false&useJDBCCompliantTimezoneShift=true"
+ + "&useLegacyDatetimeCode=false&allowMultiQueries=true&allowPublicKeyRetrieval=true",
+ "mysql8 链接"),
+
+ /**
+ * pg 数据库
+ */
+ PG("pg", "jdbc:postgresql://%s:%s/%s", "postgresql 链接"),
+
+ /**
+ * SQL SERVER
+ */
+ MSSQL("mssql", "jdbc:sqlserver://%s\\%s:%s;database=%s;characterEncoding=UTF-8", "sqlserver 链接"),
+
+ /**
+ * oracle
+ */
+ ORACLE("oracle", "jdbc:oracle:thin:@%s:%s:%s", "oracle 链接");
+
+ private final String dbName;
+
+ private final String url;
+
+ private final String description;
+
+ public static DsJdbcUrlEnum get(String dsType) {
+ return Arrays.stream(DsJdbcUrlEnum.values()).filter(dsJdbcUrlEnum -> dsType.equals(dsJdbcUrlEnum.getDbName()))
+ .findFirst().get();
+ }
+
+}
diff --git a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerProvider.java b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerProvider.java
index 8e308b321..82844c406 100644
--- a/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerProvider.java
+++ b/pigx-common/pigx-common-swagger/src/main/java/com/pig4cloud/pigx/common/swagger/support/SwaggerProvider.java
@@ -62,10 +62,11 @@ public class SwaggerProvider implements SwaggerResourcesProvider {
.filter(predicateDefinition -> !swaggerProperties.getIgnoreProviders()
.contains(routeDefinition.getId()))
.map(predicateDefinition -> swaggerResource(routeDefinition.getId(),
- predicateDefinition.getArgs()
- .get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**", API_URI))))
+ predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0").replace("/**",
+ API_URI))))
// 只显示注册中心 内已经正确启动的服务
- .filter(swaggerResource -> discoveryClient.getServices().stream().anyMatch(s -> s.equals(swaggerResource.getName())))
+ .filter(swaggerResource -> discoveryClient.getServices().stream()
+ .anyMatch(s -> s.equals(swaggerResource.getName())))
.collect(Collectors.toList());
}
diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java
index 3bf44f4bf..bbe3c4c81 100644
--- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java
+++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/controller/SysFileController.java
@@ -49,8 +49,7 @@ public class SysFileController {
/**
* 分页查询
- *
- * @param page 分页对象
+ * @param page 分页对象
* @param sysFile 文件管理
* @return
*/
@@ -62,7 +61,6 @@ public class SysFileController {
/**
* 通过id删除文件管理
- *
* @param id id
* @return R
*/
@@ -76,7 +74,6 @@ public class SysFileController {
/**
* 上传文件 文件名采用uuid,避免原始文件名中带"-"符号导致下载的时候解析出现异常
- *
* @param file 资源
* @return R(/ admin / bucketName / filename)
*/
@@ -87,8 +84,7 @@ public class SysFileController {
/**
* 获取文件
- *
- * @param bucket 桶名称
+ * @param bucket 桶名称
* @param fileName 文件空间/名称
* @param response
* @return
diff --git a/pigx-visual/pigx-codegen/pom.xml b/pigx-visual/pigx-codegen/pom.xml
index 30acc3974..055488dd2 100755
--- a/pigx-visual/pigx-codegen/pom.xml
+++ b/pigx-visual/pigx-codegen/pom.xml
@@ -14,6 +14,11 @@
代码生成模块
+
+ 4.0
+ 12.1.0.1-atlassian-hosted
+
+
@@ -44,6 +49,23 @@
mysql
mysql-connector-java
+
+
+ org.postgresql
+ postgresql
+
+
+
+ com.oracle
+ ojdbc6
+ ${oracle.version}
+
+
+
+ com.microsoft.sqlserver
+ sqljdbc4
+ ${sqlserver.version}
+
com.alibaba
diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/GenDatasourceConf.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/GenDatasourceConf.java
index a74dbc59a..c60caf818 100755
--- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/GenDatasourceConf.java
+++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/GenDatasourceConf.java
@@ -50,10 +50,40 @@ public class GenDatasourceConf extends Model {
private String name;
/**
- * jdbcurl
+ * 数据库类型
+ */
+ private String dsType;
+
+ /**
+ * 配置类型 (0 主机形式 | 1 url形式)
+ */
+ private Integer confType;
+
+ /**
+ * 主机地址
+ */
+ private String host;
+
+ /**
+ * 端口
+ */
+ private Integer port;
+
+ /**
+ * jdbc-url
*/
private String url;
+ /**
+ * 实例
+ */
+ private String instance;
+
+ /**
+ * 数据库名称
+ */
+ private String dsName;
+
/**
* 用户名
*/
@@ -80,9 +110,4 @@ public class GenDatasourceConf extends Model {
@TableLogic
private String delFlag;
- /**
- * 租户ID
- */
- private Integer tenantId;
-
}
diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/TableEntity.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/TableEntity.java
index 59bbe048c..3a73c5368 100755
--- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/TableEntity.java
+++ b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/entity/TableEntity.java
@@ -58,4 +58,9 @@ public class TableEntity {
*/
private String lowerClassName;
+ /**
+ * 数据库类型 (用于根据数据库个性化)
+ */
+ private String dbType;
+
}
diff --git a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/mapper/GenTableColumnMapper.java b/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/mapper/GenTableColumnMapper.java
deleted file mode 100644
index 3567d6e39..000000000
--- a/pigx-visual/pigx-codegen/src/main/java/com/pig4cloud/pigx/codegen/mapper/GenTableColumnMapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.pig4cloud.pigx.codegen.mapper;
-
-import com.baomidou.dynamic.datasource.annotation.DS;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.pig4cloud.pigx.codegen.entity.ColumnEntity;
-import com.pig4cloud.pigx.common.data.datascope.PigxBaseMapper;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author lengleng
- * @date 2020/5/18
- */
-@Mapper
-public interface GenTableColumnMapper extends PigxBaseMapper {
-
- /**
- * 分页查询表分页信息
- * @param page
- * @param tableName
- * @param dsName
- * @return
- */
- @DS("#last")
- IPage selectTableColumn(Page page, @Param("tableName") String tableName,
- @Param("dsName") String dsName);
-
- /**
- * 查询表全部列信息
- * @param tableName
- * @param dsName
- * @return
- */
- @DS("#last")
- List selectTableColumn(@Param("tableName") String tableName, @Param("dsName") String dsName);
-
- /**
- * 查询表全部列信息
- * @param tableName 表名称
- * @param dsName 数据源名称
- * @return
- */
- @DS("#last")
- List