From 6c36460d89a8a2a0da852cbe16b07a4914366a89 Mon Sep 17 00:00:00 2001 From: ailanyin Date: Sun, 2 Jul 2023 21:43:18 +0800 Subject: [PATCH] first commit --- pom.xml | 7 +- .../api/system/service/SysMenuApiService.java | 1 - qiaoba-application/pom.xml | 4 + .../src/main/resources/application.yml | 3 + .../qiaoba/common/base/utils/ArrayUtil.java | 26 +++ .../database/config/MybatisPlusConfig.java | 2 +- .../factories/DynamicDataSourceFactory.java | 1 + .../interceptors/SchemaInterceptor.java | 1 - .../qiaoba/common/database/utils/DbUtil.java | 17 -- .../common/database/utils/JdbcUtil.java | 5 - .../qiaoba-module-generator/pom.xml | 2 +- .../generator/config/GeneratorConfig.java | 30 +++ .../generator/constant/GenConstants.java | 216 ++++++++++++++++++ .../generator/controller/GenController.java | 20 -- .../controller/GeneratorController.java | 35 +++ .../generator/entity/GeneratorTable.java | 73 ++++++ .../entity/GeneratorTableColumn.java | 107 +++++++++ .../generator/entity/vo/TableColumnVo.java | 46 ++++ .../mapper/GeneratorTableColumnMapper.java | 27 +++ ...eMapper.java => GeneratorTableMapper.java} | 5 +- .../service/GeneratorTableColumnService.java | 32 +++ ...ervice.java => GeneratorTableService.java} | 13 +- .../impl/GeneratorTableColumnServiceImpl.java | 34 +++ .../impl/GeneratorTableServiceImpl.java | 62 +++++ .../service/impl/TableServiceImpl.java | 41 ---- .../module/generator/util/GeneratorUtil.java | 184 +++++++++++++++ .../mapper/GeneratorTableColumnMapper.xml | 22 ++ .../src/main/resources/mapper/TableMapper.xml | 6 +- .../service/impl/SysRoleServiceImpl.java | 1 - .../controller/SysTenantController.java | 4 +- .../SysTenantDatasourceController.java | 2 +- .../filters/DynamicDataSourceFilter.java | 6 +- .../tenant/init/InitTablesStrategy.java | 2 +- .../tenant/service/SysTenantService.java | 3 +- .../impl/DynamicDatasourceServiceImpl.java | 4 +- .../impl/SysTenantDatasourceServiceImpl.java | 4 +- .../impl/SysTenantInitServiceImpl.java | 6 +- 37 files changed, 943 insertions(+), 111 deletions(-) create mode 100644 qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/utils/ArrayUtil.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/config/GeneratorConfig.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/constant/GenConstants.java delete mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GenController.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/controller/GeneratorController.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTable.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/GeneratorTableColumn.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/entity/vo/TableColumnVo.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/GeneratorTableColumnMapper.java rename qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/mapper/{TableMapper.java => GeneratorTableMapper.java} (75%) create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/GeneratorTableColumnService.java rename qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/{TableService.java => GeneratorTableService.java} (73%) create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableColumnServiceImpl.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/GeneratorTableServiceImpl.java delete mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/service/impl/TableServiceImpl.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/java/com/qiaoba/module/generator/util/GeneratorUtil.java create mode 100644 qiaoba-modules/qiaoba-module-generator/src/main/resources/mapper/GeneratorTableColumnMapper.xml 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;