diff --git a/pom.xml b/pom.xml
index 3de2632..0e4ce62 100644
--- a/pom.xml
+++ b/pom.xml
@@ -52,7 +52,7 @@
4.4.0
- 4.0.0
+ 4.1.0
1.6.14
@@ -163,6 +163,11 @@
qiaoba-module-monitor
${qiaoba.version}
+
+ com.qiaoba
+ qiaoba-module-generator
+ ${qiaoba.version}
+
com.qiaoba
qiaoba-module-demo
diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysMenuApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysMenuApiService.java
index 5dd5fc5..cd79c54 100644
--- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysMenuApiService.java
+++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysMenuApiService.java
@@ -2,7 +2,6 @@ package com.qiaoba.api.system.service;
import com.qiaoba.api.system.entity.SysMenu;
import com.qiaoba.api.system.entity.param.SysMenuParam;
-import com.qiaoba.api.system.entity.vo.SysMenuVo;
import java.util.List;
diff --git a/qiaoba-application/pom.xml b/qiaoba-application/pom.xml
index ff4af62..ec5b0b2 100644
--- a/qiaoba-application/pom.xml
+++ b/qiaoba-application/pom.xml
@@ -30,6 +30,10 @@
com.qiaoba
qiaoba-module-tenant
+
+ com.qiaoba
+ qiaoba-module-generator
+
diff --git a/qiaoba-application/src/main/resources/application.yml b/qiaoba-application/src/main/resources/application.yml
index e454204..1305aab 100644
--- a/qiaoba-application/src/main/resources/application.yml
+++ b/qiaoba-application/src/main/resources/application.yml
@@ -115,6 +115,9 @@ springdoc:
- group: '监控管理'
paths-to-match: '/**'
packages-to-scan: com.qiaoba.module.monitor.controller
+ - group: '代码生成'
+ paths-to-match: '/**'
+ packages-to-scan: com.qiaoba.module.generator.controller
# knife4j的增强配置,不需要增强可以不配
knife4j:
enable: true
diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/ArrayUtil.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/ArrayUtil.java
new file mode 100644
index 0000000..06bb88a
--- /dev/null
+++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/ArrayUtil.java
@@ -0,0 +1,26 @@
+package com.qiaoba.common.base.utils;
+
+import cn.hutool.core.util.StrUtil;
+
+import java.util.Objects;
+
+/**
+ * ArrayUtil
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/5/22 16:41
+ */
+public class ArrayUtil extends cn.hutool.core.util.ArrayUtil {
+
+ public static boolean containsValueIgnoreCase(CharSequence[] array, CharSequence value) {
+ if (Objects.nonNull(array)) {
+ for (CharSequence charSequence : array) {
+ if (StrUtil.containsIgnoreCase(value, charSequence)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+}
diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/MybatisPlusConfig.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/MybatisPlusConfig.java
index 5dae97d..a3f52e8 100644
--- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/MybatisPlusConfig.java
+++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/config/MybatisPlusConfig.java
@@ -31,7 +31,7 @@ public class MybatisPlusConfig {
/**
* 不需要拼接租户ID的表 租户表/租户数据源表
*/
- private static final List IGNORE_TABLES = ListUtil.toList("sys_tenant", "sys_tenant_datasource");
+ private static final List IGNORE_TABLES = ListUtil.toList("sys_tenant", "sys_tenant_datasource", "generator_table", "generator_table_column");
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/factories/DynamicDataSourceFactory.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/factories/DynamicDataSourceFactory.java
index a174d30..7e01e2b 100644
--- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/factories/DynamicDataSourceFactory.java
+++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/factories/DynamicDataSourceFactory.java
@@ -27,6 +27,7 @@ public class DynamicDataSourceFactory {
public void setSchemaPrefix() {
TenantSchema.setSchemaPrefix(schemaPrefix);
}
+
@Bean
public DynamicDataSourceContext dataSource() {
return new DynamicDataSourceContext();
diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java
index eeebca9..72c030e 100644
--- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java
+++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/interceptors/SchemaInterceptor.java
@@ -2,7 +2,6 @@ package com.qiaoba.common.database.interceptors;
import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor;
import com.qiaoba.common.base.context.BaseContext;
-import com.qiaoba.common.base.enums.DataBaseEnum;
import com.qiaoba.common.database.context.TenantDbTypeContext;
import com.qiaoba.common.database.properties.TenantSchema;
import com.qiaoba.common.database.utils.DbUtil;
diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java
index 7afa087..ddbe5da 100644
--- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java
+++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/DbUtil.java
@@ -76,21 +76,4 @@ public class DbUtil {
}
}
- public static void main(String[] args) {
- Connection connection = null;
- try {
- connection = JdbcUtil.getConnection(
- DataBaseEnum.getDriver("Oracle"),
- "jdbc:oracle:thin:@//192.168.0.205:1521/ORCL",
- "system",
- "root"
- );
- setSchema("Oracle", connection, "QIAOBA1");
- runSql(connection, "delete FROM SYS_USER where user_id = '1'");
- } catch (SQLException e) {
- System.out.println(e.getMessage());
- } finally {
- IoUtil.close(connection);
- }
- }
}
diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java
index 6116c18..23f8977 100644
--- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java
+++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/utils/JdbcUtil.java
@@ -82,9 +82,4 @@ public class JdbcUtil {
return DriverManager.getConnection(url, username, password);
}
-
- public static void main(String[] args) throws Exception {
- Connection connection = getConnection("oracle.jdbc.OracleDriver", "jdbc:oracle:thin:@//192.168.0.205:1521/ORCL", "QIAOBA-BOOT-1", "123456");
- DbUtil.runSql(connection, "delete from sys_post where post_id = '1'");
- }
}
diff --git a/qiaoba-modules/qiaoba-module-generator/pom.xml b/qiaoba-modules/qiaoba-module-generator/pom.xml
index 9780049..ba023c8 100644
--- a/qiaoba-modules/qiaoba-module-generator/pom.xml
+++ b/qiaoba-modules/qiaoba-module-generator/pom.xml
@@ -11,7 +11,7 @@
qiaoba-module-generator
- 代码生成
+ 代码生成
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/config/GeneratorConfig.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/config/GeneratorConfig.java
new file mode 100644
index 0000000..94142c6
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/config/GeneratorConfig.java
@@ -0,0 +1,30 @@
+package com.qiaoba.module.generator.config;
+
+/**
+ * 代码生成 默认配置
+ *
+ * @author ruoyi
+ */
+public class GeneratorConfig {
+
+ /**
+ * 作者
+ */
+ public static String AUTHOR = "Ailanyin";
+
+ /**
+ * 默认生成包路径 system 需改成自己的模块名称 如 system monitor tool
+ */
+ public static String PACKAGE_NAME = "com.qiaoba.module.generator";
+
+ /**
+ * 自动去除表前缀,默认是false
+ */
+ public static boolean AUTO_REMOVE_PREFIX;
+
+ /**
+ * 表前缀 生成类名不会包含表前缀, 多个用逗号分隔
+ */
+ public static String TABLE_PREFIX;
+
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/constant/GenConstants.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/constant/GenConstants.java
new file mode 100644
index 0000000..d831538
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/constant/GenConstants.java
@@ -0,0 +1,216 @@
+package com.qiaoba.module.generator.constant;
+
+/**
+ * 代码生成通用常量
+ *
+ * @author ruoyi
+ */
+public class GenConstants {
+ /**
+ * 单表(增删改查)
+ */
+ public static final String TPL_CRUD = "crud";
+
+ /**
+ * 树表(增删改查)
+ */
+ public static final String TPL_TREE = "tree";
+
+ /**
+ * 主子表(增删改查)
+ */
+ public static final String TPL_SUB = "sub";
+
+ /**
+ * 树编码字段
+ */
+ public static final String TREE_CODE = "treeCode";
+
+ /**
+ * 树父编码字段
+ */
+ public static final String TREE_PARENT_CODE = "treeParentCode";
+
+ /**
+ * 树名称字段
+ */
+ public static final String TREE_NAME = "treeName";
+
+ /**
+ * 上级菜单ID字段
+ */
+ public static final String PARENT_MENU_ID = "parentMenuId";
+
+ /**
+ * 上级菜单名称字段
+ */
+ public static final String PARENT_MENU_NAME = "parentMenuName";
+
+ /**
+ * 数据库字符串类型
+ */
+ public static final String[] COLUMNTYPE_STR = {"char", "varchar", "nvarchar", "varchar2"};
+
+ /**
+ * 数据库文本类型
+ */
+ public static final String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"};
+
+ /**
+ * 数据库时间类型
+ */
+ public static final String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp"};
+
+ /**
+ * 数据库数字类型
+ */
+ public static final String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
+ "bit", "bigint", "float", "double", "decimal"};
+
+ /**
+ * 页面不需要编辑字段
+ */
+ public static final String[] COLUMNNAME_NOT_EDIT = {"id", "create_by", "create_time", "del_flag"};
+
+ /**
+ * 页面不需要显示的列表字段
+ */
+ public static final String[] COLUMNNAME_NOT_LIST = {"id", "create_by", "create_time", "del_flag", "update_by",
+ "update_time"};
+
+ /**
+ * 页面不需要查询字段
+ */
+ public static final String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by",
+ "update_time", "remark"};
+
+ /**
+ * Entity基类字段
+ */
+ public static final String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime", "remark"};
+
+ /**
+ * Tree基类字段
+ */
+ public static final String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors", "children"};
+
+ /**
+ * 文本框
+ */
+ public static final String HTML_INPUT = "input";
+
+ /**
+ * 文本域
+ */
+ public static final String HTML_TEXTAREA = "textarea";
+
+ /**
+ * 下拉框
+ */
+ public static final String HTML_SELECT = "select";
+
+ /**
+ * 单选框
+ */
+ public static final String HTML_RADIO = "radio";
+
+ /**
+ * 复选框
+ */
+ public static final String HTML_CHECKBOX = "checkbox";
+
+ /**
+ * 日期控件
+ */
+ public static final String HTML_DATETIME = "datetime";
+
+ /**
+ * 图片上传控件
+ */
+ public static final String HTML_IMAGE_UPLOAD = "imageUpload";
+
+ /**
+ * 文件上传控件
+ */
+ public static final String HTML_FILE_UPLOAD = "fileUpload";
+
+ /**
+ * 富文本控件
+ */
+ public static final String HTML_EDITOR = "editor";
+
+ /**
+ * 字符串类型
+ */
+ public static final String TYPE_STRING = "String";
+
+ /**
+ * 整型
+ */
+ public static final String TYPE_INTEGER = "Integer";
+
+ /**
+ * 长整型
+ */
+ public static final String TYPE_LONG = "Long";
+
+ /**
+ * 浮点型
+ */
+ public static final String TYPE_DOUBLE = "Double";
+
+ /**
+ * 高精度计算类型
+ */
+ public static final String TYPE_BIGDECIMAL = "BigDecimal";
+
+ /**
+ * 时间类型
+ */
+ public static final String TYPE_DATE = "Date";
+
+ /**
+ * 模糊查询
+ */
+ public static final String QUERY_LIKE = "LIKE";
+
+ /**
+ * 相等查询
+ */
+ public static final String QUERY_EQ = "EQ";
+
+ /**
+ * 需要
+ */
+ public static final String REQUIRE = "1";
+
+ /**
+ * 需求处理成 模糊搜索 的字段
+ */
+ public static final String[] HTML_LIKE_COLUMN = {"name", "code", "phone"};
+
+ /**
+ * 需求处理成 单选框 的字段
+ */
+ public static final String[] HTML_RADIO_COLUMN = {"status"};
+
+ /**
+ * 需求处理成 下拉框 的字段
+ */
+ public static final String[] HTML_SELECT_COLUMN = {"type", "sex", "gender"};
+
+ /**
+ * 需求处理成 图片上传控件 的字段
+ */
+ public static final String[] HTML_IMAGE_COLUMN = {"image", "pic"};
+
+ /**
+ * 需求处理成 文件上传控件 的字段
+ */
+ public static final String[] HTML_FILE_COLUMN = {"file"};
+
+ /**
+ * 需求处理成 富文本 的字段
+ */
+ public static final String[] HTML_EDITOR_COLUMN = {"content", "description"};
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GenController.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GenController.java
deleted file mode 100644
index 928c111..0000000
--- a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GenController.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.qiaoba.module.generator.controller;
-
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 代码生成 Web层
- *
- * @author ailanyin
- * @version 1.0
- * @since 2023/6/26 9:09
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/tool/gen")
-public class GenController {
-}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GeneratorController.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GeneratorController.java
new file mode 100644
index 0000000..0553b07
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GeneratorController.java
@@ -0,0 +1,35 @@
+package com.qiaoba.module.generator.controller;
+
+import com.qiaoba.common.base.result.AjaxResult;
+import com.qiaoba.module.generator.entity.dto.TableDto;
+import com.qiaoba.module.generator.service.GeneratorTableService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 代码生成 Web层
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 9:09
+ */
+@Validated
+@RequiredArgsConstructor
+@RestController
+@RequestMapping("/tool/gen")
+public class GeneratorController {
+
+ private final GeneratorTableService generatorTableService;
+
+ /**
+ * 导入表结构(保存)
+ */
+ @PostMapping("/importTable")
+ public AjaxResult importTable(@RequestBody TableDto dto) {
+ return AjaxResult.toAjax(generatorTableService.importTable(dto));
+ }
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTable.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTable.java
new file mode 100644
index 0000000..ec0e50d
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTable.java
@@ -0,0 +1,73 @@
+package com.qiaoba.module.generator.entity;
+
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+
+/**
+ * 业务表 gen_table
+ *
+ * @author ruoyi
+ */
+@Data
+@TableName("generator_table")
+public class GeneratorTable implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId
+ private String tableId;
+
+ /**
+ * 表名称
+ */
+ private String tableName;
+
+ /**
+ * 表描述
+ */
+ private String tableComment;
+
+ /**
+ * 实体类名称(首字母大写)
+ */
+ private String className;
+
+ /**
+ * 生成包路径
+ */
+ private String packageName;
+
+ /**
+ * 生成模块名
+ */
+ private String moduleName;
+
+ /**
+ * 生成业务名
+ */
+ private String businessName;
+
+ /**
+ * 生成功能名
+ */
+ private String functionName;
+
+ /**
+ * 生成作者
+ */
+ private String author;
+
+ /**
+ * 生成路径(不填默认项目路径)
+ */
+ private String genPath;
+
+}
\ No newline at end of file
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTableColumn.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTableColumn.java
new file mode 100644
index 0000000..2de4fe9
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTableColumn.java
@@ -0,0 +1,107 @@
+package com.qiaoba.module.generator.entity;
+
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 表字段
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 10:12
+ */
+@Data
+@TableName("generator_table_column")
+public class GeneratorTableColumn implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 编号
+ */
+ @TableId
+ private String columnId;
+
+ /**
+ * 归属表编号
+ */
+ private String tableId;
+
+ /**
+ * 列名称
+ */
+ private String columnName;
+
+ /**
+ * 列描述
+ */
+ private String columnComment;
+
+ /**
+ * 列类型
+ */
+ private String columnType;
+
+ /**
+ * JAVA类型
+ */
+ private String javaType;
+
+ /**
+ * JAVA字段名
+ */
+ private String javaField;
+
+ /**
+ * 是否主键(1是)
+ */
+ private String isPk;
+
+ /**
+ * 是否必填(1是)
+ */
+ private String isRequired;
+
+ /**
+ * 是否为插入字段(1是)
+ */
+ private String isInsert;
+
+ /**
+ * 是否编辑字段(1是)
+ */
+ private String isEdit;
+
+ /**
+ * 是否列表字段(1是)
+ */
+ private String isList;
+
+ /**
+ * 是否查询字段(1是)
+ */
+ private String isQuery;
+
+ /**
+ * 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围)
+ */
+ private String queryType;
+
+ /**
+ * 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件)
+ */
+ private String htmlType;
+
+ /**
+ * 字典类型
+ */
+ private String dictType;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/vo/TableColumnVo.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/vo/TableColumnVo.java
new file mode 100644
index 0000000..f200c3e
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/vo/TableColumnVo.java
@@ -0,0 +1,46 @@
+package com.qiaoba.module.generator.entity.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 表字段信息
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 10:12
+ */
+@Data
+public class TableColumnVo implements Serializable {
+
+ /**
+ * 列名称
+ */
+ private String columnName;
+
+ /**
+ * 列描述
+ */
+ private String columnComment;
+
+ /**
+ * 是否必填(1是)
+ */
+ private String isRequired;
+
+ /**
+ * 是否主键(1是)
+ */
+ private String isPk;
+
+ /**
+ * 排序
+ */
+ private Integer sort;
+
+ /**
+ * 列类型
+ */
+ private String columnType;
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/GeneratorTableColumnMapper.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/GeneratorTableColumnMapper.java
new file mode 100644
index 0000000..dd9429b
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/GeneratorTableColumnMapper.java
@@ -0,0 +1,27 @@
+package com.qiaoba.module.generator.mapper;
+
+import com.baomidou.mybatisplus.annotation.InterceptorIgnore;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.qiaoba.module.generator.entity.GeneratorTableColumn;
+import com.qiaoba.module.generator.entity.vo.TableColumnVo;
+
+import java.util.List;
+
+/**
+ * 表字段 数据层
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 10:12
+ */
+@InterceptorIgnore(tenantLine = "true")
+public interface GeneratorTableColumnMapper extends BaseMapper {
+
+ /**
+ * 查询表的字段信息
+ *
+ * @param tableName 表名
+ * @return list
+ */
+ List selectListByTableName(String tableName);
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/TableMapper.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/GeneratorTableMapper.java
similarity index 75%
rename from qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/TableMapper.java
rename to qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/GeneratorTableMapper.java
index 176e737..7516c7e 100644
--- a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/TableMapper.java
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/GeneratorTableMapper.java
@@ -1,6 +1,8 @@
package com.qiaoba.module.generator.mapper;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.qiaoba.module.generator.entity.GeneratorTable;
import com.qiaoba.module.generator.entity.dto.TableDto;
import com.qiaoba.module.generator.entity.vo.DbTableVo;
import org.apache.ibatis.annotations.Param;
@@ -12,7 +14,7 @@ import org.apache.ibatis.annotations.Param;
* @version 1.0
* @since 2023/6/26 9:24
*/
-public interface TableMapper {
+public interface GeneratorTableMapper extends BaseMapper {
/**
* 查询数据库表
@@ -22,4 +24,5 @@ public interface TableMapper {
* @return list
*/
Page selectPageDbTableList(Page page, @Param("dto") TableDto dto);
+
}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/GeneratorTableColumnService.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/GeneratorTableColumnService.java
new file mode 100644
index 0000000..dd6aaae
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/GeneratorTableColumnService.java
@@ -0,0 +1,32 @@
+package com.qiaoba.module.generator.service;
+
+import com.qiaoba.module.generator.entity.GeneratorTableColumn;
+import com.qiaoba.module.generator.entity.vo.TableColumnVo;
+
+import java.util.List;
+
+/**
+ * 表字段 服务层
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 10:12
+ */
+public interface GeneratorTableColumnService {
+
+ /**
+ * 查询表的字段信息
+ *
+ * @param tableName 表名
+ * @return list
+ */
+ List selectListByTableName(String tableName);
+
+ /**
+ * 新增
+ *
+ * @param generatorTableColumn column
+ * @return 结果
+ */
+ Integer insert(GeneratorTableColumn generatorTableColumn);
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/TableService.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/GeneratorTableService.java
similarity index 73%
rename from qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/TableService.java
rename to qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/GeneratorTableService.java
index 63517ba..06bfca8 100644
--- a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/TableService.java
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/GeneratorTableService.java
@@ -12,14 +12,23 @@ import com.qiaoba.module.generator.entity.vo.DbTableVo;
* @version 1.0
* @since 2023/6/26 9:24
*/
-public interface TableService {
+public interface GeneratorTableService {
/**
* 分页查询数据库表
*
- * @param dto 查询条件
+ * @param dto 查询条件
* @param pageQuery 分页信息
* @return list
*/
TableDataInfo selectPageDbTableList(TableDto dto, PageQuery pageQuery);
+
+
+ /**
+ * 导入表结构
+ *
+ * @param dto dto
+ * @return 结果
+ */
+ int importTable(TableDto dto);
}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableColumnServiceImpl.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableColumnServiceImpl.java
new file mode 100644
index 0000000..0f342de
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableColumnServiceImpl.java
@@ -0,0 +1,34 @@
+package com.qiaoba.module.generator.service.impl;
+
+import com.qiaoba.module.generator.entity.GeneratorTableColumn;
+import com.qiaoba.module.generator.entity.vo.TableColumnVo;
+import com.qiaoba.module.generator.mapper.GeneratorTableColumnMapper;
+import com.qiaoba.module.generator.service.GeneratorTableColumnService;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 表字段 服务层实现
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 10:12
+ */
+@Service
+@RequiredArgsConstructor
+public class GeneratorTableColumnServiceImpl implements GeneratorTableColumnService {
+
+ private final GeneratorTableColumnMapper generatorTableColumnMapper;
+
+ @Override
+ public List selectListByTableName(String tableName) {
+ return generatorTableColumnMapper.selectListByTableName(tableName);
+ }
+
+ @Override
+ public Integer insert(GeneratorTableColumn generatorTableColumn) {
+ return generatorTableColumnMapper.insert(generatorTableColumn);
+ }
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableServiceImpl.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableServiceImpl.java
new file mode 100644
index 0000000..93ce4f8
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableServiceImpl.java
@@ -0,0 +1,62 @@
+package com.qiaoba.module.generator.service.impl;
+
+import com.qiaoba.common.base.constants.BaseConstant;
+import com.qiaoba.common.database.context.TenantDbTypeContext;
+import com.qiaoba.common.database.entity.PageQuery;
+import com.qiaoba.common.database.entity.TableDataInfo;
+import com.qiaoba.module.generator.entity.GeneratorTable;
+import com.qiaoba.module.generator.entity.GeneratorTableColumn;
+import com.qiaoba.module.generator.entity.dto.TableDto;
+import com.qiaoba.module.generator.entity.vo.DbTableVo;
+import com.qiaoba.module.generator.entity.vo.TableColumnVo;
+import com.qiaoba.module.generator.mapper.GeneratorTableMapper;
+import com.qiaoba.module.generator.service.GeneratorTableColumnService;
+import com.qiaoba.module.generator.service.GeneratorTableService;
+import com.qiaoba.module.generator.util.GeneratorUtil;
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 数据库表 服务层实现
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 10:12
+ */
+@Service
+@RequiredArgsConstructor
+public class GeneratorTableServiceImpl implements GeneratorTableService {
+
+ private final GeneratorTableMapper generatorTableMapper;
+ private final GeneratorTableColumnService generatorTableColumnService;
+
+
+ @Override
+ public TableDataInfo selectPageDbTableList(TableDto dto, PageQuery pageQuery) {
+ dto.setDbType(TenantDbTypeContext.getDefault());
+ dto.setSchema(selectSchema());
+ return TableDataInfo.build(generatorTableMapper.selectPageDbTableList(pageQuery.build(), dto));
+ }
+
+ @Override
+ public int importTable(TableDto dto) {
+ GeneratorTable generatorTable = GeneratorUtil.dtoToGeneratorTable(dto);
+ int result = generatorTableMapper.insert(generatorTable);
+ if (result > BaseConstant.HANDLE_ERROR) {
+ List columnVos = generatorTableColumnService.selectListByTableName(dto.getTableName());
+ for (TableColumnVo columnVo : columnVos) {
+ GeneratorTableColumn generatorTableColumn = GeneratorUtil.initColumn(columnVo, generatorTable.getTableId());
+ generatorTableColumnService.insert(generatorTableColumn);
+ }
+ }
+ return result;
+ }
+
+ private String selectSchema() {
+ // PgSQL 需要设置 schema
+ //DataBaseEnum.POSTGRE_SQL.getType().equals(dbType)
+ return null;
+ }
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/TableServiceImpl.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/TableServiceImpl.java
deleted file mode 100644
index e6a3a8e..0000000
--- a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/TableServiceImpl.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.qiaoba.module.generator.service.impl;
-
-import com.qiaoba.common.base.context.BaseContext;
-import com.qiaoba.common.base.enums.DataBaseEnum;
-import com.qiaoba.common.database.config.DynamicDataSourceConfig;
-import com.qiaoba.common.database.entity.PageQuery;
-import com.qiaoba.common.database.entity.TableDataInfo;
-import com.qiaoba.module.generator.entity.dto.TableDto;
-import com.qiaoba.module.generator.entity.vo.DbTableVo;
-import com.qiaoba.module.generator.mapper.TableMapper;
-import com.qiaoba.module.generator.service.TableService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-/**
- * 数据库表 服务层实现
- *
- * @author ailanyin
- * @version 1.0
- * @since 2023/6/26 10:12
- */
-@Service
-@RequiredArgsConstructor
-public class TableServiceImpl implements TableService {
-
- private final TableMapper tableMapper;
-
- @Override
- public TableDataInfo selectPageDbTableList(TableDto dto, PageQuery pageQuery) {
- String dbType = DynamicDataSourceConfig.TENANT_DATASOURCE_TYPE_MAP.get(BaseContext.getTenantId());
- dto.setDbType(dbType);
- dto.setSchema(selectSchema());
- return TableDataInfo.build(tableMapper.selectPageDbTableList(pageQuery.build(), dto));
- }
-
- private String selectSchema() {
- // PgSQL 需要设置 schema
- //DataBaseEnum.POSTGRE_SQL.getType().equals(dbType)
- return null;
- }
-}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/util/GeneratorUtil.java b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/util/GeneratorUtil.java
new file mode 100644
index 0000000..59e8cc5
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/util/GeneratorUtil.java
@@ -0,0 +1,184 @@
+package com.qiaoba.module.generator.util;
+
+
+import cn.hutool.core.util.StrUtil;
+import com.qiaoba.common.base.constants.BaseConstant;
+import com.qiaoba.common.base.utils.ArrayUtil;
+import com.qiaoba.module.generator.config.GeneratorConfig;
+import com.qiaoba.module.generator.constant.GenConstants;
+import com.qiaoba.module.generator.entity.GeneratorTable;
+import com.qiaoba.module.generator.entity.GeneratorTableColumn;
+import com.qiaoba.module.generator.entity.dto.TableDto;
+import com.qiaoba.module.generator.entity.vo.TableColumnVo;
+
+import java.util.List;
+
+/**
+ * GeneratorUtil
+ *
+ * @author ailanyin
+ * @version 1.0
+ * @since 2023/6/26 9:24
+ */
+public class GeneratorUtil {
+
+ public static GeneratorTableColumn initColumn(TableColumnVo vo, String tableId) {
+ GeneratorTableColumn column = new GeneratorTableColumn();
+ column.setTableId(tableId);
+ column.setSort(vo.getSort());
+ column.setColumnName(vo.getColumnName());
+ column.setColumnComment(vo.getColumnComment());
+ // 设置java字段名
+ column.setJavaField(StrUtil.toCamelCase(column.getColumnName()));
+ // 设置默认类型
+ column.setJavaType(GenConstants.TYPE_STRING);
+ column.setQueryType(GenConstants.QUERY_EQ);
+ column.setColumnType(vo.getColumnType());
+ setType(column, vo.getColumnType());
+ // 插入字段(默认所有字段都需要插入)
+ column.setIsInsert(GenConstants.REQUIRE);
+ column.setIsPk(vo.getIsPk());
+ column.setIsRequired(vo.getIsRequired());
+ // 编辑字段
+ if (!ArrayUtil.contains(GenConstants.COLUMNNAME_NOT_EDIT, column.getColumnName()) && !BaseConstant.YES.equals(column.getIsPk())) {
+ column.setIsEdit(GenConstants.REQUIRE);
+ }
+ // 列表字段
+ if (!ArrayUtil.contains(GenConstants.COLUMNNAME_NOT_LIST, column.getColumnName()) && !BaseConstant.YES.equals(column.getIsPk())) {
+ column.setIsList(GenConstants.REQUIRE);
+ }
+ // 查询字段
+ if (!ArrayUtil.contains(GenConstants.COLUMNNAME_NOT_QUERY, column.getColumnName()) && !BaseConstant.YES.equals(column.getIsPk())) {
+ column.setIsQuery(GenConstants.REQUIRE);
+ }
+
+ return column;
+ }
+
+ public static GeneratorTable dtoToGeneratorTable(TableDto dto) {
+ GeneratorTable generatorTable = new GeneratorTable();
+ generatorTable.setTableName(dto.getTableName());
+ generatorTable.setTableComment(dto.getTableComment());
+ generatorTable.setClassName(tableNameToClassName(dto.getTableName()));
+ generatorTable.setPackageName(GeneratorConfig.PACKAGE_NAME);
+ generatorTable.setModuleName(packageNameToModuleName(GeneratorConfig.PACKAGE_NAME));
+ generatorTable.setBusinessName(tableNameToBusinessName(dto.getTableName()));
+ generatorTable.setFunctionName(commentToBusinessName(dto.getTableComment()));
+ generatorTable.setAuthor(GeneratorConfig.AUTHOR);
+ return generatorTable;
+ }
+
+ private static String tableNameToClassName(String tableName) {
+ // 去除前缀
+ // eg: 表名: bz_sys_user 前缀: bz_ 去除后 sys_user
+ if (GeneratorConfig.AUTO_REMOVE_PREFIX && StrUtil.isNotBlank(GeneratorConfig.TABLE_PREFIX)) {
+ List prefixList = StrUtil.split(GeneratorConfig.TABLE_PREFIX, BaseConstant.DEFAULT_SPLIT_STR);
+ for (String prefix : prefixList) {
+ if (tableName.startsWith(prefix)) {
+ tableName = StrUtil.removePrefix(tableName, prefix);
+ break;
+ }
+ }
+ }
+ // 下划线转驼峰 sys_user -> sysUser
+ tableName = StrUtil.toCamelCase(tableName);
+ // 首字符大写 sysUser -> SysUser
+ return StrUtil.upperFirst(tableName);
+ }
+
+ private static String packageNameToModuleName(String packageName) {
+ int lastIndex = packageName.lastIndexOf(".");
+ int nameLength = packageName.length();
+ return StrUtil.sub(packageName, lastIndex + 1, nameLength);
+ }
+
+ private static String tableNameToBusinessName(String tableName) {
+ int lastIndex = tableName.lastIndexOf("_");
+ int nameLength = tableName.length();
+ return StrUtil.sub(tableName, lastIndex + 1, nameLength);
+ }
+
+ private static String commentToBusinessName(String comment) {
+ // 用户表 -> 用户
+ return StrUtil.isNotBlank(comment) ? StrUtil.replaceLast(comment, "表", "") : comment;
+ }
+
+ private static void setType(GeneratorTableColumn column, String columnType) {
+ // varchar(50) -> varchar
+ columnType = StrUtil.subBefore(columnType, "(", false);
+ // 字符串 or 长文本
+ if (ArrayUtil.contains(GenConstants.COLUMNTYPE_STR, columnType) || ArrayUtil.contains(GenConstants.COLUMNTYPE_TEXT, columnType)) {
+ // 字符串长度超过500设置为文本域
+ Integer columnLength = getColumnLength(column.getColumnType());
+ String htmlType = columnLength >= 500 || ArrayUtil.contains(GenConstants.COLUMNTYPE_TEXT, columnType) ? GenConstants.HTML_TEXTAREA : GenConstants.HTML_INPUT;
+ column.setHtmlType(htmlType);
+ }
+
+ // 时间类型
+ if (ArrayUtil.contains(GenConstants.COLUMNTYPE_TIME, columnType)) {
+ column.setJavaType(GenConstants.TYPE_DATE);
+ column.setHtmlType(GenConstants.HTML_DATETIME);
+ }
+
+ // 数字类型
+ if (ArrayUtil.contains(GenConstants.COLUMNTYPE_NUMBER, columnType)) {
+ column.setHtmlType(GenConstants.HTML_INPUT);
+ // 如果是浮点型 统一用BigDecimal
+ List strList = StrUtil.split(StrUtil.subBetween(column.getColumnType(), "(", ")"), ",");
+
+ if (strList != null && strList.size() == 2 && Integer.parseInt(strList.get(1)) > 0) {
+ column.setJavaType(GenConstants.TYPE_BIGDECIMAL);
+ }
+ // 如果是整形
+ else if (strList != null && strList.size() == 1 && Integer.parseInt(strList.get(0)) <= 10) {
+ column.setJavaType(GenConstants.TYPE_INTEGER);
+ }
+ // 长整形
+ else {
+ column.setJavaType(GenConstants.TYPE_LONG);
+ }
+ }
+
+ // 字段包含中 LIKE_COLUMN 设置 type = like
+ if (ArrayUtil.containsValueIgnoreCase(GenConstants.HTML_LIKE_COLUMN, column.getColumnName())) {
+ column.setQueryType(GenConstants.QUERY_LIKE);
+ }
+ // 单选框
+ if (ArrayUtil.containsValueIgnoreCase(GenConstants.HTML_RADIO_COLUMN, column.getColumnName())) {
+ column.setHtmlType(GenConstants.HTML_RADIO);
+ }
+ // 下拉框
+ if (ArrayUtil.containsValueIgnoreCase(GenConstants.HTML_SELECT_COLUMN, column.getColumnName())) {
+ column.setHtmlType(GenConstants.HTML_SELECT);
+ }
+ // 图片上传控件
+ if (ArrayUtil.containsValueIgnoreCase(GenConstants.HTML_IMAGE_COLUMN, column.getColumnName())) {
+ column.setHtmlType(GenConstants.HTML_IMAGE_UPLOAD);
+ }
+ // 文件上传控件
+ if (ArrayUtil.containsValueIgnoreCase(GenConstants.HTML_FILE_COLUMN, column.getColumnName())) {
+ column.setHtmlType(GenConstants.HTML_FILE_UPLOAD);
+ }
+ // 富文本控件
+ if (ArrayUtil.containsValueIgnoreCase(GenConstants.HTML_EDITOR_COLUMN, column.getColumnName())) {
+ column.setHtmlType(GenConstants.HTML_EDITOR);
+ }
+ }
+
+ /**
+ * 获取字段长度
+ *
+ * @param columnType 列类型
+ * @return 截取后的列类型
+ */
+ private static Integer getColumnLength(String columnType) {
+ // bigint(20)
+ try {
+ String length = StrUtil.subBetween(columnType, "(", ")");
+ return Integer.valueOf(length);
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ }
+
+}
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/GeneratorTableColumnMapper.xml b/qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/GeneratorTableColumnMapper.xml
new file mode 100644
index 0000000..b7626b9
--- /dev/null
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/GeneratorTableColumnMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/TableMapper.xml b/qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/TableMapper.xml
index 8c36ab9..3b9e7f9 100644
--- a/qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/TableMapper.xml
+++ b/qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/TableMapper.xml
@@ -2,7 +2,7 @@
-
+
@@ -27,7 +27,8 @@
- select lower(dt.table_name) as table_name, dtc.comments as table_comment, uo.created as create_time, uo.last_ddl_time as update_time
+ select lower(dt.table_name) as table_name, dtc.comments as table_comment, uo.created as create_time,
+ uo.last_ddl_time as update_time
from user_tables dt, user_tab_comments dtc, user_objects uo
where dt.table_name = dtc.table_name
and dt.table_name = uo.object_name
@@ -68,4 +69,5 @@
order by create_time desc
+
diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java
index 792b6b8..4f6c774 100644
--- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java
+++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysRoleServiceImpl.java
@@ -11,7 +11,6 @@ import com.qiaoba.api.system.entity.dto.DataScopeDto;
import com.qiaoba.api.system.entity.dto.SysRoleDto;
import com.qiaoba.api.system.entity.param.SysRoleParam;
import com.qiaoba.auth.utils.SecurityUtil;
-import com.qiaoba.common.base.context.BaseContext;
import com.qiaoba.common.base.exceptions.ServiceException;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java
index 1e90cc6..cf10755 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantController.java
@@ -1,14 +1,14 @@
package com.qiaoba.module.tenant.controller;
import cn.hutool.core.bean.BeanUtil;
+import com.qiaoba.api.tenant.entity.SysTenant;
+import com.qiaoba.api.tenant.entity.param.SysTenantParam;
import com.qiaoba.common.base.result.AjaxResult;
import com.qiaoba.common.base.validate.AddGroup;
import com.qiaoba.common.base.validate.EditGroup;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
-import com.qiaoba.api.tenant.entity.SysTenant;
import com.qiaoba.module.tenant.entity.dto.TenantSettingDto;
-import com.qiaoba.api.tenant.entity.param.SysTenantParam;
import com.qiaoba.module.tenant.service.SysTenantService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantDatasourceController.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantDatasourceController.java
index ad671ab..0241cb2 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantDatasourceController.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/controller/SysTenantDatasourceController.java
@@ -1,9 +1,9 @@
package com.qiaoba.module.tenant.controller;
+import com.qiaoba.api.tenant.entity.SysTenantDatasource;
import com.qiaoba.common.base.result.AjaxResult;
import com.qiaoba.common.base.validate.AddGroup;
import com.qiaoba.common.base.validate.EditGroup;
-import com.qiaoba.api.tenant.entity.SysTenantDatasource;
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java
index 33bd0fb..4b8095d 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/filters/DynamicDataSourceFilter.java
@@ -2,18 +2,16 @@ package com.qiaoba.module.tenant.filters;
import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.date.DateUtil;
+import com.qiaoba.api.tenant.entity.SysTenant;
+import com.qiaoba.api.tenant.enums.TenantStatusEnum;
import com.qiaoba.api.tenant.utils.TenantUtil;
import com.qiaoba.common.base.code.TenantErrorCode;
import com.qiaoba.common.base.constants.BaseConstant;
import com.qiaoba.common.base.constants.TenantConstant;
import com.qiaoba.common.base.context.BaseContext;
import com.qiaoba.common.database.config.DynamicDataSourceConfig;
-import com.qiaoba.common.database.context.TenantDbTypeContext;
import com.qiaoba.common.web.utils.ResponseUtil;
import com.qiaoba.common.web.utils.UriUtil;
-import com.qiaoba.api.tenant.entity.SysTenant;
-import com.qiaoba.api.tenant.enums.TenantModeEnum;
-import com.qiaoba.api.tenant.enums.TenantStatusEnum;
import com.qiaoba.module.tenant.service.SysTenantService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.annotation.Order;
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategy.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategy.java
index 5d4069b..e377cbb 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategy.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/init/InitTablesStrategy.java
@@ -25,7 +25,7 @@ public interface InitTablesStrategy {
/**
* 创建表
*
- * @param conn 连接对象
+ * @param conn 连接对象
* @return 结果
*/
TenantInitVo create(Connection conn);
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java
index 10cb7b9..88b8605 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/SysTenantService.java
@@ -1,11 +1,10 @@
package com.qiaoba.module.tenant.service;
import com.qiaoba.api.tenant.entity.SysTenant;
+import com.qiaoba.api.tenant.entity.param.SysTenantParam;
import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo;
-import com.qiaoba.api.tenant.entity.param.SysTenantParam;
-
/**
* 租户管理 服务层
*
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java
index 14493af..9f6dd5b 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/DynamicDatasourceServiceImpl.java
@@ -2,13 +2,13 @@ package com.qiaoba.module.tenant.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
+import com.qiaoba.api.tenant.entity.SysTenantDatasource;
+import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam;
import com.qiaoba.common.base.enums.BaseEnum;
import com.qiaoba.common.base.enums.DataBaseEnum;
import com.qiaoba.common.base.exceptions.ServiceException;
import com.qiaoba.common.database.entity.DynamicDataSource;
import com.qiaoba.common.database.service.DynamicDatasourceService;
-import com.qiaoba.api.tenant.entity.SysTenantDatasource;
-import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam;
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java
index 84b346e..49fa6af 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantDatasourceServiceImpl.java
@@ -2,12 +2,12 @@ package com.qiaoba.module.tenant.service.impl;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qiaoba.api.tenant.entity.SysTenantDatasource;
+import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam;
import com.qiaoba.common.base.code.DatasourceErrorCode;
import com.qiaoba.common.base.constants.BaseConstant;
import com.qiaoba.common.base.enums.BaseEnum;
import com.qiaoba.common.base.exceptions.ServiceException;
-import com.qiaoba.api.tenant.entity.SysTenantDatasource;
-import com.qiaoba.api.tenant.entity.param.SysTenantDatasourceParam;
import com.qiaoba.module.tenant.mapper.SysTenantDatasourceMapper;
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
import lombok.RequiredArgsConstructor;
diff --git a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java
index 9394e90..246c179 100644
--- a/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java
+++ b/qiaoba-modules/qiaoba-module-tenant/src/main/java/com/qiaoba/module/tenant/service/impl/SysTenantInitServiceImpl.java
@@ -4,6 +4,9 @@ import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpStatus;
import com.alibaba.druid.pool.DruidDataSource;
+import com.qiaoba.api.tenant.entity.SysTenant;
+import com.qiaoba.api.tenant.entity.SysTenantDatasource;
+import com.qiaoba.api.tenant.enums.TenantModeEnum;
import com.qiaoba.common.base.code.DatasourceErrorCode;
import com.qiaoba.common.base.code.TenantErrorCode;
import com.qiaoba.common.base.enums.DataBaseEnum;
@@ -12,11 +15,8 @@ import com.qiaoba.common.database.context.TenantDbTypeContext;
import com.qiaoba.common.database.properties.TenantSchema;
import com.qiaoba.common.database.utils.DbUtil;
import com.qiaoba.common.database.utils.JdbcUtil;
-import com.qiaoba.api.tenant.entity.SysTenant;
-import com.qiaoba.api.tenant.entity.SysTenantDatasource;
import com.qiaoba.module.tenant.entity.vo.TenantInitCheckVo;
import com.qiaoba.module.tenant.entity.vo.TenantInitVo;
-import com.qiaoba.api.tenant.enums.TenantModeEnum;
import com.qiaoba.module.tenant.init.InitTablesStrategyFactory;
import com.qiaoba.module.tenant.service.SysTenantDatasourceService;
import com.qiaoba.module.tenant.service.SysTenantInitService;