first commit
This commit is contained in:
7
pom.xml
7
pom.xml
@ -52,7 +52,7 @@
|
||||
<!-- easy poi -->
|
||||
<easypoi.version>4.4.0</easypoi.version>
|
||||
<!-- knife4接口文档 -->
|
||||
<knife4j.version>4.0.0</knife4j.version>
|
||||
<knife4j.version>4.1.0</knife4j.version>
|
||||
<!-- spring doc -->
|
||||
<springdoc.version>1.6.14</springdoc.version>
|
||||
<!-- 数据校验 -->
|
||||
@ -163,6 +163,11 @@
|
||||
<artifactId>qiaoba-module-monitor</artifactId>
|
||||
<version>${qiaoba.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.qiaoba</groupId>
|
||||
<artifactId>qiaoba-module-generator</artifactId>
|
||||
<version>${qiaoba.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.qiaoba</groupId>
|
||||
<artifactId>qiaoba-module-demo</artifactId>
|
||||
|
@ -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;
|
||||
|
||||
|
@ -30,6 +30,10 @@
|
||||
<groupId>com.qiaoba</groupId>
|
||||
<artifactId>qiaoba-module-tenant</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.qiaoba</groupId>
|
||||
<artifactId>qiaoba-module-generator</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
@ -31,7 +31,7 @@ public class MybatisPlusConfig {
|
||||
/**
|
||||
* 不需要拼接租户ID的表 租户表/租户数据源表
|
||||
*/
|
||||
private static final List<String> IGNORE_TABLES = ListUtil.toList("sys_tenant", "sys_tenant_datasource");
|
||||
private static final List<String> IGNORE_TABLES = ListUtil.toList("sys_tenant", "sys_tenant_datasource", "generator_table", "generator_table_column");
|
||||
|
||||
@Bean
|
||||
public MybatisPlusInterceptor mybatisPlusInterceptor() {
|
||||
|
@ -27,6 +27,7 @@ public class DynamicDataSourceFactory {
|
||||
public void setSchemaPrefix() {
|
||||
TenantSchema.setSchemaPrefix(schemaPrefix);
|
||||
}
|
||||
|
||||
@Bean
|
||||
public DynamicDataSourceContext dataSource() {
|
||||
return new DynamicDataSourceContext();
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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'");
|
||||
}
|
||||
}
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
<artifactId>qiaoba-module-generator</artifactId>
|
||||
|
||||
<description> 代码生成 </description>
|
||||
<description>代码生成</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
@ -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;
|
||||
|
||||
}
|
@ -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"};
|
||||
}
|
@ -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 {
|
||||
}
|
@ -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));
|
||||
}
|
||||
}
|
@ -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;
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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;
|
||||
}
|
@ -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<GeneratorTableColumn> {
|
||||
|
||||
/**
|
||||
* 查询表的字段信息
|
||||
*
|
||||
* @param tableName 表名
|
||||
* @return list
|
||||
*/
|
||||
List<TableColumnVo> selectListByTableName(String tableName);
|
||||
}
|
@ -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<GeneratorTable> {
|
||||
|
||||
/**
|
||||
* 查询数据库表
|
||||
@ -22,4 +24,5 @@ public interface TableMapper {
|
||||
* @return list
|
||||
*/
|
||||
Page<DbTableVo> selectPageDbTableList(Page page, @Param("dto") TableDto dto);
|
||||
|
||||
}
|
@ -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<TableColumnVo> selectListByTableName(String tableName);
|
||||
|
||||
/**
|
||||
* 新增
|
||||
*
|
||||
* @param generatorTableColumn column
|
||||
* @return 结果
|
||||
*/
|
||||
Integer insert(GeneratorTableColumn generatorTableColumn);
|
||||
}
|
@ -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<DbTableVo> selectPageDbTableList(TableDto dto, PageQuery pageQuery);
|
||||
|
||||
|
||||
/**
|
||||
* 导入表结构
|
||||
*
|
||||
* @param dto dto
|
||||
* @return 结果
|
||||
*/
|
||||
int importTable(TableDto dto);
|
||||
}
|
@ -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<TableColumnVo> selectListByTableName(String tableName) {
|
||||
return generatorTableColumnMapper.selectListByTableName(tableName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Integer insert(GeneratorTableColumn generatorTableColumn) {
|
||||
return generatorTableColumnMapper.insert(generatorTableColumn);
|
||||
}
|
||||
}
|
@ -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<DbTableVo> 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<TableColumnVo> 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;
|
||||
}
|
||||
}
|
@ -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<DbTableVo> 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;
|
||||
}
|
||||
}
|
@ -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<String> 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<String> 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;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.qiaoba.module.generator.mapper.GeneratorTableColumnMapper">
|
||||
|
||||
<resultMap type="com.qiaoba.module.generator.entity.vo.TableColumnVo" id="DbTableColumnVoResult">
|
||||
<result property="columnName" column="column_name"/>
|
||||
<result property="columnComment" column="column_comment"/>
|
||||
<result property="columnType" column="column_type"/>
|
||||
<result property="isRequired" column="is_required"/>
|
||||
<result property="isPk" column="is_pk"/>
|
||||
<result property="sort" column="sort"/>
|
||||
</resultMap>
|
||||
|
||||
<select id="selectListByTableName" resultMap="DbTableColumnVoResult">
|
||||
select column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, column_type
|
||||
from information_schema.columns where table_schema = (select database()) and table_name = (#{tableName})
|
||||
order by ordinal_position
|
||||
</select>
|
||||
|
||||
</mapper>
|
@ -2,7 +2,7 @@
|
||||
<!DOCTYPE mapper
|
||||
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
<mapper namespace="com.qiaoba.module.generator.mapper.TableMapper">
|
||||
<mapper namespace="com.qiaoba.module.generator.mapper.GeneratorTableMapper">
|
||||
|
||||
<resultMap type="com.qiaoba.module.generator.entity.vo.DbTableVo" id="DbTableVoResult">
|
||||
<result property="tableName" column="table_name"/>
|
||||
@ -27,7 +27,8 @@
|
||||
</if>
|
||||
|
||||
<if test="dto.dbType=='Oracle'.toString()">
|
||||
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
|
||||
</if>
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -25,7 +25,7 @@ public interface InitTablesStrategy {
|
||||
/**
|
||||
* 创建表
|
||||
*
|
||||
* @param conn 连接对象
|
||||
* @param conn 连接对象
|
||||
* @return 结果
|
||||
*/
|
||||
TenantInitVo create(Connection conn);
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
* 租户管理 服务层
|
||||
*
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user