mirror of
				https://github.com/continew-org/continew-admin.git
				synced 2025-10-31 10:57:13 +08:00 
			
		
		
		
	feat: 新增查询列映射信息列表接口
提取 QueryTypeEnum 枚举
This commit is contained in:
		| @@ -18,6 +18,8 @@ package top.charles7c.cnadmin.common.annotation; | |||||||
|  |  | ||||||
| import java.lang.annotation.*; | import java.lang.annotation.*; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 查询注解 |  * 查询注解 | ||||||
|  * |  * | ||||||
| @@ -38,7 +40,7 @@ public @interface Query { | |||||||
|     /** |     /** | ||||||
|      * 查询类型(等值查询、模糊查询、范围查询等) |      * 查询类型(等值查询、模糊查询、范围查询等) | ||||||
|      */ |      */ | ||||||
|     Type type() default Type.EQUAL; |     QueryTypeEnum type() default QueryTypeEnum.EQUAL; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 多属性模糊查询,仅支持 String 类型属性,多个属性之间用逗号分隔 |      * 多属性模糊查询,仅支持 String 类型属性,多个属性之间用逗号分隔 | ||||||
| @@ -47,66 +49,4 @@ public @interface Query { | |||||||
|      * </p> |      * </p> | ||||||
|      */ |      */ | ||||||
|     String blurry() default ""; |     String blurry() default ""; | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 查询类型 |  | ||||||
|      */ |  | ||||||
|     enum Type { |  | ||||||
|         /** |  | ||||||
|          * 等值查询,例如:WHERE `age` = 18 |  | ||||||
|          */ |  | ||||||
|         EQUAL, |  | ||||||
|         /** |  | ||||||
|          * 非等值查询,例如:WHERE `age` != 18 |  | ||||||
|          */ |  | ||||||
|         NOT_EQUAL, |  | ||||||
|         /** |  | ||||||
|          * 大于查询,例如:WHERE `age` > 18 |  | ||||||
|          */ |  | ||||||
|         GREATER_THAN, |  | ||||||
|         /** |  | ||||||
|          * 小于查询,例如:WHERE `age` < 18 |  | ||||||
|          */ |  | ||||||
|         LESS_THAN, |  | ||||||
|         /** |  | ||||||
|          * 大于等于查询,例如:WHERE `age` >= 18 |  | ||||||
|          */ |  | ||||||
|         GREATER_THAN_OR_EQUAL, |  | ||||||
|         /** |  | ||||||
|          * 小于等于查询,例如:WHERE `age` <= 18 |  | ||||||
|          */ |  | ||||||
|         LESS_THAN_OR_EQUAL, |  | ||||||
|         /** |  | ||||||
|          * 范围查询,例如:WHERE `age` BETWEEN 10 AND 18 |  | ||||||
|          */ |  | ||||||
|         BETWEEN, |  | ||||||
|         /** |  | ||||||
|          * 左模糊查询,例如:WHERE `nickname` LIKE '%张' |  | ||||||
|          */ |  | ||||||
|         LEFT_LIKE, |  | ||||||
|         /** |  | ||||||
|          * 中模糊查询,例如:WHERE `nickname` LIKE '%雪%' |  | ||||||
|          */ |  | ||||||
|         INNER_LIKE, |  | ||||||
|         /** |  | ||||||
|          * 右模糊查询,例如:WHERE `nickname` LIKE '雪%' |  | ||||||
|          */ |  | ||||||
|         RIGHT_LIKE, |  | ||||||
|         /** |  | ||||||
|          * 包含查询,例如:WHERE `age` IN (10, 20, 30) |  | ||||||
|          */ |  | ||||||
|         IN, |  | ||||||
|         /** |  | ||||||
|          * 不包含查询,例如:WHERE `age` NOT IN (20, 30) |  | ||||||
|          */ |  | ||||||
|         NOT_IN, |  | ||||||
|         /** |  | ||||||
|          * 空查询,例如:WHERE `email` IS NULL |  | ||||||
|          */ |  | ||||||
|         IS_NULL, |  | ||||||
|         /** |  | ||||||
|          * 非空查询,例如:WHERE `email` IS NOT NULL |  | ||||||
|          */ |  | ||||||
|         IS_NOT_NULL,; |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -35,6 +35,11 @@ public class StringConsts implements StrPool { | |||||||
|      */ |      */ | ||||||
|     public static final String EMPTY = ""; |     public static final String EMPTY = ""; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 空格 | ||||||
|  |      */ | ||||||
|  |     public static final String SPACE = " "; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 分号 |      * 分号 | ||||||
|      */ |      */ | ||||||
|   | |||||||
| @@ -0,0 +1,93 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.common.enums; | ||||||
|  |  | ||||||
|  | import lombok.Getter; | ||||||
|  | import lombok.RequiredArgsConstructor; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.common.base.BaseEnum; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 查询类型枚举 | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/4/12 22:56 | ||||||
|  |  */ | ||||||
|  | @Getter | ||||||
|  | @RequiredArgsConstructor | ||||||
|  | public enum QueryTypeEnum implements BaseEnum<Integer, String> { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 等值查询,例如:WHERE `age` = 18 | ||||||
|  |      */ | ||||||
|  |     EQUAL(1, "="), | ||||||
|  |     /** | ||||||
|  |      * 非等值查询,例如:WHERE `age` != 18 | ||||||
|  |      */ | ||||||
|  |     NOT_EQUAL(2, "!="), | ||||||
|  |     /** | ||||||
|  |      * 大于查询,例如:WHERE `age` > 18 | ||||||
|  |      */ | ||||||
|  |     GREATER_THAN(3, ">"), | ||||||
|  |     /** | ||||||
|  |      * 小于查询,例如:WHERE `age` < 18 | ||||||
|  |      */ | ||||||
|  |     LESS_THAN(4, "<"), | ||||||
|  |     /** | ||||||
|  |      * 大于等于查询,例如:WHERE `age` >= 18 | ||||||
|  |      */ | ||||||
|  |     GREATER_THAN_OR_EQUAL(5, ">="), | ||||||
|  |     /** | ||||||
|  |      * 小于等于查询,例如:WHERE `age` <= 18 | ||||||
|  |      */ | ||||||
|  |     LESS_THAN_OR_EQUAL(6, "<="), | ||||||
|  |     /** | ||||||
|  |      * 范围查询,例如:WHERE `age` BETWEEN 10 AND 18 | ||||||
|  |      */ | ||||||
|  |     BETWEEN(7, "BETWEEN"), | ||||||
|  |     /** | ||||||
|  |      * 左模糊查询,例如:WHERE `nickname` LIKE '%s' | ||||||
|  |      */ | ||||||
|  |     LEFT_LIKE(8, "LIKE '%s'"), | ||||||
|  |     /** | ||||||
|  |      * 中模糊查询,例如:WHERE `nickname` LIKE '%s%' | ||||||
|  |      */ | ||||||
|  |     INNER_LIKE(9, "LIKE '%s%'"), | ||||||
|  |     /** | ||||||
|  |      * 右模糊查询,例如:WHERE `nickname` LIKE 's%' | ||||||
|  |      */ | ||||||
|  |     RIGHT_LIKE(10, "LIKE 's%'"), | ||||||
|  |     /** | ||||||
|  |      * 包含查询,例如:WHERE `age` IN (10, 20, 30) | ||||||
|  |      */ | ||||||
|  |     IN(11, "IN"), | ||||||
|  |     /** | ||||||
|  |      * 不包含查询,例如:WHERE `age` NOT IN (20, 30) | ||||||
|  |      */ | ||||||
|  |     NOT_IN(12, "NOT IN"), | ||||||
|  |     /** | ||||||
|  |      * 空查询,例如:WHERE `email` IS NULL | ||||||
|  |      */ | ||||||
|  |     IS_NULL(13, "IS NULL"), | ||||||
|  |     /** | ||||||
|  |      * 非空查询,例如:WHERE `email` IS NOT NULL | ||||||
|  |      */ | ||||||
|  |     IS_NOT_NULL(14, "IS NOT NULL"),; | ||||||
|  |  | ||||||
|  |     private final Integer value; | ||||||
|  |     private final String description; | ||||||
|  | } | ||||||
| @@ -30,6 +30,7 @@ import cn.hutool.core.util.ObjectUtil; | |||||||
| import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.annotation.Query; | import top.charles7c.cnadmin.common.annotation.Query; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
| import top.charles7c.cnadmin.common.exception.BadRequestException; | import top.charles7c.cnadmin.common.exception.BadRequestException; | ||||||
| import top.charles7c.cnadmin.common.util.ReflectUtils; | import top.charles7c.cnadmin.common.util.ReflectUtils; | ||||||
| import top.charles7c.cnadmin.common.util.validate.ValidationUtils; | import top.charles7c.cnadmin.common.util.validate.ValidationUtils; | ||||||
| @@ -146,7 +147,7 @@ public class QueryHelper { | |||||||
|         // 注意:数据库规范中列采用下划线连接法命名,程序规范中变量采用驼峰法命名 |         // 注意:数据库规范中列采用下划线连接法命名,程序规范中变量采用驼峰法命名 | ||||||
|         String property = queryAnnotation.property(); |         String property = queryAnnotation.property(); | ||||||
|         String columnName = StrUtil.toUnderlineCase(StrUtil.blankToDefault(property, fieldName)); |         String columnName = StrUtil.toUnderlineCase(StrUtil.blankToDefault(property, fieldName)); | ||||||
|         Query.Type queryType = queryAnnotation.type(); |         QueryTypeEnum queryType = queryAnnotation.type(); | ||||||
|         switch (queryType) { |         switch (queryType) { | ||||||
|             case EQUAL: |             case EQUAL: | ||||||
|                 queryWrapper.eq(columnName, fieldValue); |                 queryWrapper.eq(columnName, fieldValue); | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ public class LogProperties { | |||||||
|     private Boolean includeInnerIp; |     private Boolean includeInnerIp; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 哪些请求方式不记录系统日志 |      * 排除请求方式(哪些请求方式不记录系统日志) | ||||||
|      */ |      */ | ||||||
|     private List<String> excludeMethods = new ArrayList<>(); |     private List<String> excludeMethods = new ArrayList<>(); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.annotation.Query; | import top.charles7c.cnadmin.common.annotation.Query; | ||||||
| import top.charles7c.cnadmin.common.constant.StringConsts; | import top.charles7c.cnadmin.common.constant.StringConsts; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 登录日志查询条件 |  * 登录日志查询条件 | ||||||
| @@ -52,7 +53,7 @@ public class LoginLogQuery implements Serializable { | |||||||
|      * 登录时间 |      * 登录时间 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "登录时间") |     @Schema(description = "登录时间") | ||||||
|     @Query(type = Query.Type.BETWEEN) |     @Query(type = QueryTypeEnum.BETWEEN) | ||||||
|     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) |     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) | ||||||
|     private List<Date> createTime; |     private List<Date> createTime; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.annotation.Query; | import top.charles7c.cnadmin.common.annotation.Query; | ||||||
| import top.charles7c.cnadmin.common.constant.StringConsts; | import top.charles7c.cnadmin.common.constant.StringConsts; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 操作日志查询条件 |  * 操作日志查询条件 | ||||||
| @@ -45,7 +46,7 @@ public class OperationLogQuery implements Serializable { | |||||||
|      * 操作内容 |      * 操作内容 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "操作内容") |     @Schema(description = "操作内容") | ||||||
|     @Query(type = Query.Type.INNER_LIKE) |     @Query(type = QueryTypeEnum.INNER_LIKE) | ||||||
|     private String description; |     private String description; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
| @@ -59,7 +60,7 @@ public class OperationLogQuery implements Serializable { | |||||||
|      * 操作时间 |      * 操作时间 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "操作时间") |     @Schema(description = "操作时间") | ||||||
|     @Query(type = Query.Type.BETWEEN) |     @Query(type = QueryTypeEnum.BETWEEN) | ||||||
|     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) |     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) | ||||||
|     private List<Date> createTime; |     private List<Date> createTime; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.annotation.Query; | import top.charles7c.cnadmin.common.annotation.Query; | ||||||
| import top.charles7c.cnadmin.common.constant.StringConsts; | import top.charles7c.cnadmin.common.constant.StringConsts; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 系统日志查询条件 |  * 系统日志查询条件 | ||||||
| @@ -45,7 +46,7 @@ public class SystemLogQuery implements Serializable { | |||||||
|      * 创建时间 |      * 创建时间 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "创建时间") |     @Schema(description = "创建时间") | ||||||
|     @Query(type = Query.Type.BETWEEN) |     @Query(type = QueryTypeEnum.BETWEEN) | ||||||
|     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) |     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) | ||||||
|     private List<Date> createTime; |     private List<Date> createTime; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ import lombok.Data; | |||||||
| import io.swagger.v3.oas.annotations.media.Schema; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.annotation.Query; | import top.charles7c.cnadmin.common.annotation.Query; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 部门查询条件 |  * 部门查询条件 | ||||||
| @@ -40,7 +41,7 @@ public class DeptQuery implements Serializable { | |||||||
|      * 部门名称 |      * 部门名称 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "部门名称") |     @Schema(description = "部门名称") | ||||||
|     @Query(type = Query.Type.INNER_LIKE) |     @Query(type = QueryTypeEnum.INNER_LIKE) | ||||||
|     private String name; |     private String name; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -23,6 +23,7 @@ import lombok.Data; | |||||||
| import io.swagger.v3.oas.annotations.media.Schema; | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.annotation.Query; | import top.charles7c.cnadmin.common.annotation.Query; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 菜单查询条件 |  * 菜单查询条件 | ||||||
| @@ -40,7 +41,7 @@ public class MenuQuery implements Serializable { | |||||||
|      * 菜单标题 |      * 菜单标题 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "菜单标题") |     @Schema(description = "菜单标题") | ||||||
|     @Query(type = Query.Type.INNER_LIKE) |     @Query(type = QueryTypeEnum.INNER_LIKE) | ||||||
|     private String title; |     private String title; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; | |||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.annotation.Query; | import top.charles7c.cnadmin.common.annotation.Query; | ||||||
| import top.charles7c.cnadmin.common.constant.StringConsts; | import top.charles7c.cnadmin.common.constant.StringConsts; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 用户查询条件 |  * 用户查询条件 | ||||||
| @@ -59,7 +60,7 @@ public class UserQuery implements Serializable { | |||||||
|      * 创建时间 |      * 创建时间 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "创建时间") |     @Schema(description = "创建时间") | ||||||
|     @Query(type = Query.Type.BETWEEN) |     @Query(type = QueryTypeEnum.BETWEEN) | ||||||
|     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) |     @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) | ||||||
|     private List<Date> createTime; |     private List<Date> createTime; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -0,0 +1,39 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.tool.config.properties; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import org.springframework.boot.context.properties.ConfigurationProperties; | ||||||
|  | import org.springframework.stereotype.Component; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 代码生成器配置属性 | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/8/5 11:08 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @Component | ||||||
|  | @ConfigurationProperties(prefix = "generator") | ||||||
|  | public class GeneratorProperties { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 排除数据表(哪些数据表不展示在代码生成中) | ||||||
|  |      */ | ||||||
|  |     private String[] excludeTables; | ||||||
|  | } | ||||||
| @@ -0,0 +1,61 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.tool.enums; | ||||||
|  |  | ||||||
|  | import lombok.Getter; | ||||||
|  | import lombok.RequiredArgsConstructor; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.common.base.BaseEnum; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 表单类型枚举 | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/8/6 10:49 | ||||||
|  |  */ | ||||||
|  | @Getter | ||||||
|  | @RequiredArgsConstructor | ||||||
|  | public enum FormTypeEnum implements BaseEnum<Integer, String> { | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 文本框 | ||||||
|  |      */ | ||||||
|  |     TEXT(1, "文本框"), | ||||||
|  |     /** | ||||||
|  |      * 文本域 | ||||||
|  |      */ | ||||||
|  |     TEXT_AREA(2, "文本域"), | ||||||
|  |     /** | ||||||
|  |      * 下拉框 | ||||||
|  |      */ | ||||||
|  |     SELECT(3, "下拉框"), | ||||||
|  |     /** | ||||||
|  |      * 单选框 | ||||||
|  |      */ | ||||||
|  |     RADIO(4, "单选框"), | ||||||
|  |     /** | ||||||
|  |      * 日期框 | ||||||
|  |      */ | ||||||
|  |     DATE(5, "日期框"), | ||||||
|  |     /** | ||||||
|  |      * 日期时间框 | ||||||
|  |      */ | ||||||
|  |     DATE_TIME(6, "日期时间框"),; | ||||||
|  |  | ||||||
|  |     private final Integer value; | ||||||
|  |     private final String description; | ||||||
|  | } | ||||||
| @@ -0,0 +1,28 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.tool.mapper; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.common.base.BaseMapper; | ||||||
|  | import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 列映射 Mapper | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/4/12 23:56 | ||||||
|  |  */ | ||||||
|  | public interface ColumnMappingMapper extends BaseMapper<ColumnMappingDO> {} | ||||||
| @@ -0,0 +1,28 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.tool.mapper; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.common.base.BaseMapper; | ||||||
|  | import top.charles7c.cnadmin.tool.model.entity.GenConfigDO; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 生成配置 Mapper | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/4/12 23:56 | ||||||
|  |  */ | ||||||
|  | public interface GenConfigMapper extends BaseMapper<GenConfigDO> {} | ||||||
| @@ -0,0 +1,170 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.tool.model.entity; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.experimental.Accessors; | ||||||
|  |  | ||||||
|  | import io.swagger.v3.oas.annotations.media.Schema; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.FieldFill; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableField; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.util.StrUtil; | ||||||
|  | import cn.hutool.setting.dialect.Props; | ||||||
|  | import cn.hutool.setting.dialect.PropsUtil; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
|  | import top.charles7c.cnadmin.tool.enums.FormTypeEnum; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 列映射实体 | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/4/12 20:21 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("gen_column_mapping") | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @Schema(description = "列映射信息") | ||||||
|  | public class ColumnMappingDO implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * ID | ||||||
|  |      */ | ||||||
|  |     @TableId | ||||||
|  |     @Schema(description = "ID") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 表名称 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "表名称") | ||||||
|  |     private String tableName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 列名称 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "列名称") | ||||||
|  |     private String columnName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 列类型 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "列类型") | ||||||
|  |     private String columnType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 字段名称 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "字段名称") | ||||||
|  |     private String fieldName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 字段类型 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "字段类型") | ||||||
|  |     private String fieldType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 注释 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "注释") | ||||||
|  |     private String comment; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 排序 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "排序") | ||||||
|  |     private Integer sort; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否必填 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "是否必填") | ||||||
|  |     private Boolean isRequired; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否在列表中显示 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "是否在列表中显示") | ||||||
|  |     private Boolean showInList; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否在新增中显示 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "是否在新增中显示") | ||||||
|  |     private Boolean showInAdd; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否在修改中显示 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "是否在修改中显示") | ||||||
|  |     private Boolean showInUpdate; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否在查询中显示 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "是否在查询中显示") | ||||||
|  |     private Boolean showInQuery; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 表单类型 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "表单类型") | ||||||
|  |     private FormTypeEnum formType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询方式 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "查询方式") | ||||||
|  |     private QueryTypeEnum queryType; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 创建时间 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "创建时间") | ||||||
|  |     @TableField(fill = FieldFill.INSERT) | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改时间 | ||||||
|  |      */ | ||||||
|  |     @Schema(description = "修改时间") | ||||||
|  |     @TableField(fill = FieldFill.INSERT_UPDATE) | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     public ColumnMappingDO setColumnName(String columnName) { | ||||||
|  |         this.columnName = columnName; | ||||||
|  |         this.fieldName = StrUtil.toCamelCase(this.columnName); | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ColumnMappingDO setColumnType(String columnType) { | ||||||
|  |         this.columnType = columnType; | ||||||
|  |         Props generatorProp = PropsUtil.get("generator"); | ||||||
|  |         this.fieldType = generatorProp.getStr(columnType); | ||||||
|  |         return this; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -0,0 +1,98 @@ | |||||||
|  | /* | ||||||
|  |  * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | package top.charles7c.cnadmin.tool.model.entity; | ||||||
|  |  | ||||||
|  | import java.io.Serializable; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.FieldFill; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableField; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 生成配置实体 | ||||||
|  |  * | ||||||
|  |  * @author Charles7c | ||||||
|  |  * @since 2023/4/12 20:21 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @TableName("gen_config") | ||||||
|  | public class GenConfigDO implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID = 1L; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * ID | ||||||
|  |      */ | ||||||
|  |     @TableId | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 表名称 | ||||||
|  |      */ | ||||||
|  |     private String tableName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 模块名称 | ||||||
|  |      */ | ||||||
|  |     private String moduleName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 包名称 | ||||||
|  |      */ | ||||||
|  |     private String packageName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 业务名称 | ||||||
|  |      */ | ||||||
|  |     private String businessName; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 作者 | ||||||
|  |      */ | ||||||
|  |     private String author; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 前端路径 | ||||||
|  |      */ | ||||||
|  |     private String frontendPath; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 表前缀 | ||||||
|  |      */ | ||||||
|  |     private String tablePrefix; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 是否覆盖 | ||||||
|  |      */ | ||||||
|  |     private Boolean isOverride; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 创建时间 | ||||||
|  |      */ | ||||||
|  |     @TableField(fill = FieldFill.INSERT) | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改时间 | ||||||
|  |      */ | ||||||
|  |     @TableField(fill = FieldFill.INSERT_UPDATE) | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  | } | ||||||
| @@ -44,9 +44,9 @@ public class TableVO implements Serializable { | |||||||
|     private String tableName; |     private String tableName; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 注释 |      * 描述 | ||||||
|      */ |      */ | ||||||
|     @Schema(description = "注释") |     @Schema(description = "描述") | ||||||
|     private String comment; |     private String comment; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|   | |||||||
| @@ -17,9 +17,11 @@ | |||||||
| package top.charles7c.cnadmin.tool.service; | package top.charles7c.cnadmin.tool.service; | ||||||
|  |  | ||||||
| import java.sql.SQLException; | import java.sql.SQLException; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.model.query.PageQuery; | import top.charles7c.cnadmin.common.model.query.PageQuery; | ||||||
| import top.charles7c.cnadmin.common.model.vo.PageDataVO; | import top.charles7c.cnadmin.common.model.vo.PageDataVO; | ||||||
|  | import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO; | ||||||
| import top.charles7c.cnadmin.tool.model.query.TableQuery; | import top.charles7c.cnadmin.tool.model.query.TableQuery; | ||||||
| import top.charles7c.cnadmin.tool.model.vo.TableVO; | import top.charles7c.cnadmin.tool.model.vo.TableVO; | ||||||
|  |  | ||||||
| @@ -32,13 +34,22 @@ import top.charles7c.cnadmin.tool.model.vo.TableVO; | |||||||
| public interface GeneratorService { | public interface GeneratorService { | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 分页查询列表 |      * 分页查询表信息列表 | ||||||
|      * |      * | ||||||
|      * @param query |      * @param query | ||||||
|      *            查询条件 |      *            查询条件 | ||||||
|      * @param pageQuery |      * @param pageQuery | ||||||
|      *            分页查询条件 |      *            分页查询条件 | ||||||
|      * @return 分页列表信息 |      * @return 表信息分页列表 | ||||||
|      */ |      */ | ||||||
|     PageDataVO<TableVO> pageTable(TableQuery query, PageQuery pageQuery) throws SQLException; |     PageDataVO<TableVO> pageTable(TableQuery query, PageQuery pageQuery) throws SQLException; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询列映射信息列表 | ||||||
|  |      * | ||||||
|  |      * @param tableName | ||||||
|  |      *            表名称 | ||||||
|  |      * @return 列映射信息列表 | ||||||
|  |      */ | ||||||
|  |     List<ColumnMappingDO> listColumnMapping(String tableName); | ||||||
| } | } | ||||||
|   | |||||||
| @@ -17,6 +17,8 @@ | |||||||
| package top.charles7c.cnadmin.tool.service.impl; | package top.charles7c.cnadmin.tool.service.impl; | ||||||
|  |  | ||||||
| import java.sql.SQLException; | import java.sql.SQLException; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| import javax.sql.DataSource; | import javax.sql.DataSource; | ||||||
| @@ -26,11 +28,21 @@ import lombok.extern.slf4j.Slf4j; | |||||||
|  |  | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
| import cn.hutool.core.bean.BeanUtil; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import cn.hutool.core.util.StrUtil; |  | ||||||
|  |  | ||||||
|  | import cn.hutool.core.bean.BeanUtil; | ||||||
|  | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import cn.hutool.core.util.StrUtil; | ||||||
|  | import cn.hutool.db.meta.Column; | ||||||
|  |  | ||||||
|  | import top.charles7c.cnadmin.common.constant.StringConsts; | ||||||
|  | import top.charles7c.cnadmin.common.enums.QueryTypeEnum; | ||||||
| import top.charles7c.cnadmin.common.model.query.PageQuery; | import top.charles7c.cnadmin.common.model.query.PageQuery; | ||||||
| import top.charles7c.cnadmin.common.model.vo.PageDataVO; | import top.charles7c.cnadmin.common.model.vo.PageDataVO; | ||||||
|  | import top.charles7c.cnadmin.tool.config.properties.GeneratorProperties; | ||||||
|  | import top.charles7c.cnadmin.tool.enums.FormTypeEnum; | ||||||
|  | import top.charles7c.cnadmin.tool.mapper.ColumnMappingMapper; | ||||||
|  | import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO; | ||||||
| import top.charles7c.cnadmin.tool.model.query.TableQuery; | import top.charles7c.cnadmin.tool.model.query.TableQuery; | ||||||
| import top.charles7c.cnadmin.tool.model.vo.TableVO; | import top.charles7c.cnadmin.tool.model.vo.TableVO; | ||||||
| import top.charles7c.cnadmin.tool.service.GeneratorService; | import top.charles7c.cnadmin.tool.service.GeneratorService; | ||||||
| @@ -49,6 +61,8 @@ import top.charles7c.cnadmin.tool.util.Table; | |||||||
| public class GeneratorServiceImpl implements GeneratorService { | public class GeneratorServiceImpl implements GeneratorService { | ||||||
|  |  | ||||||
|     private final DataSource dataSource; |     private final DataSource dataSource; | ||||||
|  |     private final GeneratorProperties generatorProperties; | ||||||
|  |     private final ColumnMappingMapper columnMappingMapper; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public PageDataVO<TableVO> pageTable(TableQuery query, PageQuery pageQuery) throws SQLException { |     public PageDataVO<TableVO> pageTable(TableQuery query, PageQuery pageQuery) throws SQLException { | ||||||
| @@ -57,9 +71,29 @@ public class GeneratorServiceImpl implements GeneratorService { | |||||||
|         if (StrUtil.isNotBlank(tableName)) { |         if (StrUtil.isNotBlank(tableName)) { | ||||||
|             tableList.removeIf(table -> !StrUtil.containsAny(table.getTableName(), tableName)); |             tableList.removeIf(table -> !StrUtil.containsAny(table.getTableName(), tableName)); | ||||||
|         } |         } | ||||||
|         tableList |         tableList.removeIf(table -> StrUtil.equalsAny(table.getTableName(), generatorProperties.getExcludeTables())); | ||||||
|             .removeIf(table -> StrUtil.equalsAny(table.getTableName(), "DATABASECHANGELOG", "DATABASECHANGELOGLOCK")); |  | ||||||
|         List<TableVO> tableVOList = BeanUtil.copyToList(tableList, TableVO.class); |         List<TableVO> tableVOList = BeanUtil.copyToList(tableList, TableVO.class); | ||||||
|         return PageDataVO.build(pageQuery.getPage(), pageQuery.getSize(), tableVOList); |         return PageDataVO.build(pageQuery.getPage(), pageQuery.getSize(), tableVOList); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public List<ColumnMappingDO> listColumnMapping(String tableName) { | ||||||
|  |         List<ColumnMappingDO> columnMappingList = columnMappingMapper | ||||||
|  |             .selectList(Wrappers.lambdaQuery(ColumnMappingDO.class).eq(ColumnMappingDO::getTableName, tableName)); | ||||||
|  |         if (CollUtil.isEmpty(columnMappingList)) { | ||||||
|  |             Collection<Column> columnList = MetaUtils.getColumns(dataSource, tableName); | ||||||
|  |             columnMappingList = new ArrayList<>(columnList.size()); | ||||||
|  |             for (Column column : columnList) { | ||||||
|  |                 String columnType = StrUtil.splitToArray(column.getTypeName(), StringConsts.SPACE)[0]; | ||||||
|  |                 boolean isRequired = !column.isPk() && !column.isNullable(); | ||||||
|  |                 ColumnMappingDO columnMapping = new ColumnMappingDO().setTableName(tableName) | ||||||
|  |                     .setColumnName(column.getName()).setColumnType(columnType.toLowerCase()) | ||||||
|  |                     .setComment(column.getComment()).setIsRequired(isRequired).setShowInList(true) | ||||||
|  |                     .setShowInAdd(isRequired).setShowInUpdate(isRequired).setShowInQuery(isRequired) | ||||||
|  |                     .setFormType(FormTypeEnum.TEXT).setQueryType(QueryTypeEnum.EQUAL); | ||||||
|  |                 columnMappingList.add(columnMapping); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         return columnMappingList; | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ package top.charles7c.cnadmin.tool.util; | |||||||
|  |  | ||||||
| import java.sql.*; | import java.sql.*; | ||||||
| import java.util.ArrayList; | import java.util.ArrayList; | ||||||
|  | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
|  |  | ||||||
| import javax.sql.DataSource; | import javax.sql.DataSource; | ||||||
| @@ -28,6 +29,8 @@ import lombok.NoArgsConstructor; | |||||||
| import cn.hutool.core.date.DateUtil; | import cn.hutool.core.date.DateUtil; | ||||||
| import cn.hutool.db.Db; | import cn.hutool.db.Db; | ||||||
| import cn.hutool.db.Entity; | import cn.hutool.db.Entity; | ||||||
|  | import cn.hutool.db.meta.Column; | ||||||
|  | import cn.hutool.db.meta.MetaUtil; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 数据库元数据信息工具类 |  * 数据库元数据信息工具类 | ||||||
| @@ -59,4 +62,18 @@ public class MetaUtils { | |||||||
|         } |         } | ||||||
|         return tableList; |         return tableList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取所有列信息 | ||||||
|  |      * | ||||||
|  |      * @param dataSource | ||||||
|  |      *            数据源 | ||||||
|  |      * @param tableName | ||||||
|  |      *            表名称 | ||||||
|  |      * @return 列信息列表 | ||||||
|  |      */ | ||||||
|  |     public static Collection<Column> getColumns(DataSource dataSource, String tableName) { | ||||||
|  |         cn.hutool.db.meta.Table table = MetaUtil.getTableMeta(dataSource, tableName); | ||||||
|  |         return table.getColumns(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										27
									
								
								continew-admin-tool/src/main/resources/generator.properties
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								continew-admin-tool/src/main/resources/generator.properties
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | |||||||
|  | # Database type to Java type(ELADMIN) | ||||||
|  | tinyint=Integer | ||||||
|  | smallint=Integer | ||||||
|  | mediumint=Integer | ||||||
|  | int=Integer | ||||||
|  | integer=Integer | ||||||
|  |  | ||||||
|  | bigint=Long | ||||||
|  |  | ||||||
|  | float=Float | ||||||
|  |  | ||||||
|  | double=Double | ||||||
|  |  | ||||||
|  | decimal=BigDecimal | ||||||
|  |  | ||||||
|  | bit=Boolean | ||||||
|  |  | ||||||
|  | char=String | ||||||
|  | varchar=String | ||||||
|  | tinytext=String | ||||||
|  | text=String | ||||||
|  | mediumtext=String | ||||||
|  | longtext=String | ||||||
|  |  | ||||||
|  | date=LocalDate | ||||||
|  | datetime=LocalDateTime | ||||||
|  | timestamp=LocalDateTime | ||||||
| @@ -28,3 +28,41 @@ export function listTable(params: TableParam) { | |||||||
|     }, |     }, | ||||||
|   }); |   }); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | export interface ColumnMappingRecord { | ||||||
|  |   id: string; | ||||||
|  |   tableName: string; | ||||||
|  |   columnName: string; | ||||||
|  |   columnType: string; | ||||||
|  |   fieldName: string; | ||||||
|  |   fieldType: string; | ||||||
|  |   comment: string; | ||||||
|  |   sort: number; | ||||||
|  |   isRequired: boolean; | ||||||
|  |   showInList: boolean; | ||||||
|  |   showInAdd: boolean; | ||||||
|  |   showInUpdate: boolean; | ||||||
|  |   showInQuery: boolean; | ||||||
|  |   formType: string; | ||||||
|  |   queryType: string; | ||||||
|  |   createTime: string; | ||||||
|  |   updateTime: string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export interface GenConfigRecord { | ||||||
|  |   id: string; | ||||||
|  |   tableName: string; | ||||||
|  |   moduleName: string; | ||||||
|  |   packageName: string; | ||||||
|  |   frontendPath: string; | ||||||
|  |   businessName: string; | ||||||
|  |   author: string; | ||||||
|  |   tablePrefix: string; | ||||||
|  |   isOverride: boolean; | ||||||
|  |   createTime: string; | ||||||
|  |   updateTime: string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export function listColumnMapping(tableName: string) { | ||||||
|  |   return axios.get<ColumnMappingRecord[]>(`${BASE_URL}/column/${tableName}`); | ||||||
|  | } | ||||||
| @@ -51,7 +51,9 @@ | |||||||
|       <!-- 列表区域 --> |       <!-- 列表区域 --> | ||||||
|       <a-table |       <a-table | ||||||
|         ref="tableRef" |         ref="tableRef" | ||||||
|  |         row-key="tableName" | ||||||
|         :data="tableList" |         :data="tableList" | ||||||
|  |         :loading="loading" | ||||||
|         :row-selection="{ |         :row-selection="{ | ||||||
|           type: 'checkbox', |           type: 'checkbox', | ||||||
|           showCheckedAll: true, |           showCheckedAll: true, | ||||||
| @@ -63,10 +65,9 @@ | |||||||
|           total: total, |           total: total, | ||||||
|           current: queryParams.page, |           current: queryParams.page, | ||||||
|         }" |         }" | ||||||
|         row-key="tableName" |  | ||||||
|         :bordered="false" |         :bordered="false" | ||||||
|         :stripe="true" |         column-resizable | ||||||
|         :loading="loading" |         stripe | ||||||
|         size="large" |         size="large" | ||||||
|         @page-change="handlePageChange" |         @page-change="handlePageChange" | ||||||
|         @page-size-change="handlePageSizeChange" |         @page-size-change="handlePageSizeChange" | ||||||
| @@ -84,12 +85,20 @@ | |||||||
|             :width="200" |             :width="200" | ||||||
|             tooltip |             tooltip | ||||||
|           /> |           /> | ||||||
|           <a-table-column title="注释" data-index="comment" tooltip /> |           <a-table-column title="描述" data-index="comment" tooltip /> | ||||||
|           <a-table-column title="存储引擎" data-index="engine" align="center" /> |           <a-table-column title="存储引擎" data-index="engine" align="center" /> | ||||||
|           <a-table-column title="字符集" data-index="charset" /> |           <a-table-column title="字符集" data-index="charset" /> | ||||||
|           <a-table-column title="创建时间" data-index="createTime" /> |           <a-table-column title="创建时间" data-index="createTime" /> | ||||||
|           <a-table-column title="操作" align="center"> |           <a-table-column title="操作" align="center"> | ||||||
|             <template #cell="{ record }"> |             <template #cell="{ record }"> | ||||||
|  |               <a-button | ||||||
|  |                 type="text" | ||||||
|  |                 size="small" | ||||||
|  |                 title="配置" | ||||||
|  |                 @click="toConfig(record.tableName)" | ||||||
|  |               > | ||||||
|  |                 <template #icon><icon-settings /></template>配置 | ||||||
|  |               </a-button> | ||||||
|               <a-button |               <a-button | ||||||
|                 type="text" |                 type="text" | ||||||
|                 size="small" |                 size="small" | ||||||
| @@ -102,23 +111,198 @@ | |||||||
|           </a-table-column> |           </a-table-column> | ||||||
|         </template> |         </template> | ||||||
|       </a-table> |       </a-table> | ||||||
|  |  | ||||||
|  |       <!-- 表单区域 --> | ||||||
|  |       <a-drawer | ||||||
|  |         :title="title" | ||||||
|  |         :visible="visible" | ||||||
|  |         :width="1000" | ||||||
|  |         :mask-closable="false" | ||||||
|  |         :esc-to-close="false" | ||||||
|  |         unmount-on-close | ||||||
|  |         render-to-body | ||||||
|  |         @ok="handleOk" | ||||||
|  |         @cancel="handleCancel" | ||||||
|  |       > | ||||||
|  |         <a-card title="字段配置" class="field-config"> | ||||||
|  |           <a-table | ||||||
|  |             ref="columnMappingRef" | ||||||
|  |             :data="columnMappingList" | ||||||
|  |             :loading="columnMappingLoading" | ||||||
|  |             :pagination="false" | ||||||
|  |             :bordered="false" | ||||||
|  |             size="large" | ||||||
|  |             :scroll="{ | ||||||
|  |               y: 400, | ||||||
|  |             }" | ||||||
|  |           > | ||||||
|  |             <template #columns> | ||||||
|  |               <a-table-column | ||||||
|  |                 title="名称" | ||||||
|  |                 data-index="fieldName" | ||||||
|  |                 :width="130" | ||||||
|  |                 ellipsis | ||||||
|  |                 tooltip | ||||||
|  |               /> | ||||||
|  |               <a-table-column | ||||||
|  |                 title="类型" | ||||||
|  |                 data-index="fieldType" | ||||||
|  |                 :width="90" | ||||||
|  |                 ellipsis | ||||||
|  |                 tooltip | ||||||
|  |               /> | ||||||
|  |               <a-table-column title="描述" data-index="comment" :width="170"> | ||||||
|  |                 <template #cell="{ record }"> | ||||||
|  |                   <a-input v-model="record.comment" /> | ||||||
|  |                 </template> | ||||||
|  |               </a-table-column> | ||||||
|  |               <a-table-column | ||||||
|  |                 title="必填" | ||||||
|  |                 data-index="isRequired" | ||||||
|  |                 :width="60" | ||||||
|  |                 align="center" | ||||||
|  |               > | ||||||
|  |                 <template #cell="{ record }"> | ||||||
|  |                   <a-checkbox v-model="record.isRequired" value="true" /> | ||||||
|  |                 </template> | ||||||
|  |               </a-table-column> | ||||||
|  |               <a-table-column | ||||||
|  |                 title="列表" | ||||||
|  |                 data-index="showInList" | ||||||
|  |                 :width="60" | ||||||
|  |                 align="center" | ||||||
|  |               > | ||||||
|  |                 <template #cell="{ record }"> | ||||||
|  |                   <a-checkbox v-model="record.showInList" value="true" /> | ||||||
|  |                 </template> | ||||||
|  |               </a-table-column> | ||||||
|  |               <a-table-column | ||||||
|  |                 title="新增" | ||||||
|  |                 data-index="showInAdd" | ||||||
|  |                 :width="60" | ||||||
|  |                 align="center" | ||||||
|  |               > | ||||||
|  |                 <template #cell="{ record }"> | ||||||
|  |                   <a-checkbox v-model="record.showInAdd" value="true" /> | ||||||
|  |                 </template> | ||||||
|  |               </a-table-column> | ||||||
|  |               <a-table-column | ||||||
|  |                 title="修改" | ||||||
|  |                 data-index="showInUpdate" | ||||||
|  |                 :width="60" | ||||||
|  |                 align="center" | ||||||
|  |               > | ||||||
|  |                 <template #cell="{ record }"> | ||||||
|  |                   <a-checkbox v-model="record.showInUpdate" value="true" /> | ||||||
|  |                 </template> | ||||||
|  |               </a-table-column> | ||||||
|  |               <a-table-column | ||||||
|  |                 title="表单类型" | ||||||
|  |                 data-index="formType" | ||||||
|  |                 :width="150" | ||||||
|  |               > | ||||||
|  |                 <template #cell="{ record }"> | ||||||
|  |                   <a-select | ||||||
|  |                     v-model="record.formType" | ||||||
|  |                     :options="FormTypeEnum" | ||||||
|  |                     placeholder="请选择表单类型" | ||||||
|  |                   /> | ||||||
|  |                 </template> | ||||||
|  |               </a-table-column> | ||||||
|  |               <a-table-column title="查询方式" data-index="queryType"> | ||||||
|  |                 <template #cell="{ record }"> | ||||||
|  |                   <a-select | ||||||
|  |                     v-model="record.queryType" | ||||||
|  |                     :options="QueryTypeEnum" | ||||||
|  |                     placeholder="请选择查询方式" | ||||||
|  |                   /> | ||||||
|  |                 </template> | ||||||
|  |               </a-table-column> | ||||||
|  |             </template> | ||||||
|  |           </a-table> | ||||||
|  |         </a-card> | ||||||
|  |         <a-card title="生成配置" style="margin-top: 10px"> | ||||||
|  |           <a-form | ||||||
|  |             ref="formRef" | ||||||
|  |             :model="form" | ||||||
|  |             :rules="rules" | ||||||
|  |             class="gen-config" | ||||||
|  |             size="large" | ||||||
|  |           > | ||||||
|  |             <a-form-item label="作者名称" field="author"> | ||||||
|  |               <a-input v-model="form.author" placeholder="请输入作者名称" /> | ||||||
|  |             </a-form-item> | ||||||
|  |             <a-form-item label="业务名称" field="businessName"> | ||||||
|  |               <a-input | ||||||
|  |                 v-model="form.businessName" | ||||||
|  |                 placeholder="自定义业务名称,例如:用户" | ||||||
|  |               /> | ||||||
|  |             </a-form-item> | ||||||
|  |             <a-form-item label="所属模块" field="moduleName"> | ||||||
|  |               <a-input | ||||||
|  |                 v-model="form.moduleName" | ||||||
|  |                 placeholder="项目模块名称,例如:continew-admin-system" | ||||||
|  |               /> | ||||||
|  |             </a-form-item> | ||||||
|  |             <a-form-item label="模块包名" field="packageName"> | ||||||
|  |               <a-input | ||||||
|  |                 v-model="form.packageName" | ||||||
|  |                 placeholder="项目模块包名,例如:top.charles7c.cnadmin.system" | ||||||
|  |               /> | ||||||
|  |             </a-form-item> | ||||||
|  |             <a-form-item label="前端路径" field="frontendPath"> | ||||||
|  |               <a-input | ||||||
|  |                 v-model="form.frontendPath" | ||||||
|  |                 placeholder="前端项目 views 目录地址" | ||||||
|  |               /> | ||||||
|  |             </a-form-item> | ||||||
|  |             <a-form-item label="去表前缀" field="tablePrefix"> | ||||||
|  |               <a-input | ||||||
|  |                 v-model="form.tablePrefix" | ||||||
|  |                 placeholder="数据库表前缀,例如:sys_" | ||||||
|  |               /> | ||||||
|  |             </a-form-item> | ||||||
|  |             <a-form-item label="是否覆盖" field="isOverride"> | ||||||
|  |               <a-radio-group v-model="form.isOverride" type="button"> | ||||||
|  |                 <a-radio :value="true">是</a-radio> | ||||||
|  |                 <a-radio :value="false">否</a-radio> | ||||||
|  |               </a-radio-group> | ||||||
|  |             </a-form-item> | ||||||
|  |           </a-form> | ||||||
|  |         </a-card> | ||||||
|  |       </a-drawer> | ||||||
|     </a-card> |     </a-card> | ||||||
|   </div> |   </div> | ||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script lang="ts" setup> | <script lang="ts" setup> | ||||||
|   import { getCurrentInstance, ref, toRefs, reactive } from 'vue'; |   import { getCurrentInstance, ref, toRefs, reactive } from 'vue'; | ||||||
|   import { TableRecord, TableParam, listTable } from '@/api/tool/generator'; |   import { | ||||||
|  |     TableRecord, | ||||||
|  |     TableParam, | ||||||
|  |     ColumnMappingRecord, | ||||||
|  |     GenConfigRecord, | ||||||
|  |     listTable, | ||||||
|  |     listColumnMapping, | ||||||
|  |   } from '@/api/tool/generator'; | ||||||
|  |  | ||||||
|   const { proxy } = getCurrentInstance() as any; |   const { proxy } = getCurrentInstance() as any; | ||||||
|  |   const { FormTypeEnum, QueryTypeEnum } = proxy.useDict( | ||||||
|  |     'FormTypeEnum', | ||||||
|  |     'QueryTypeEnum' | ||||||
|  |   ); | ||||||
|  |  | ||||||
|   const tableList = ref<TableRecord[]>([]); |   const tableList = ref<TableRecord[]>([]); | ||||||
|  |   const columnMappingList = ref<ColumnMappingRecord[]>([]); | ||||||
|   const total = ref(0); |   const total = ref(0); | ||||||
|   const ids = ref<Array<string>>([]); |   const ids = ref<Array<string>>([]); | ||||||
|  |   const title = ref(''); | ||||||
|   const single = ref(true); |   const single = ref(true); | ||||||
|   const multiple = ref(true); |   const multiple = ref(true); | ||||||
|   const showQuery = ref(true); |   const showQuery = ref(true); | ||||||
|   const loading = ref(false); |   const loading = ref(false); | ||||||
|  |   const visible = ref(false); | ||||||
|  |   const columnMappingLoading = ref(false); | ||||||
|  |  | ||||||
|   const data = reactive({ |   const data = reactive({ | ||||||
|     // 查询参数 |     // 查询参数 | ||||||
| @@ -128,8 +312,17 @@ | |||||||
|       size: 10, |       size: 10, | ||||||
|       sort: ['createTime,desc', 'updateTime,desc'], |       sort: ['createTime,desc', 'updateTime,desc'], | ||||||
|     }, |     }, | ||||||
|  |     // 表单数据 | ||||||
|  |     form: {} as GenConfigRecord, | ||||||
|  |     // 表单验证规则 | ||||||
|  |     rules: { | ||||||
|  |       author: [{ required: true, message: '请输入作者名称' }], | ||||||
|  |       moduleName: [{ required: true, message: '请输入模块名称' }], | ||||||
|  |       packageName: [{ required: true, message: '请输入包名称' }], | ||||||
|  |       businessName: [{ required: true, message: '请输入业务名称' }], | ||||||
|  |     }, | ||||||
|   }); |   }); | ||||||
|   const { queryParams } = toRefs(data); |   const { queryParams, form, rules } = toRefs(data); | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 查询列表 |    * 查询列表 | ||||||
| @@ -149,6 +342,41 @@ | |||||||
|   }; |   }; | ||||||
|   getList(); |   getList(); | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 打开配置对话框 | ||||||
|  |    * | ||||||
|  |    * @param tableName 表名称 | ||||||
|  |    */ | ||||||
|  |   const toConfig = (tableName: string) => { | ||||||
|  |     title.value = `${tableName} 配置`; | ||||||
|  |     form.value.isOverride = false; | ||||||
|  |     visible.value = true; | ||||||
|  |     // 查询所有字段信息 | ||||||
|  |     columnMappingLoading.value = true; | ||||||
|  |     listColumnMapping(tableName) | ||||||
|  |       .then((res) => { | ||||||
|  |         columnMappingList.value = res.data; | ||||||
|  |       }) | ||||||
|  |       .finally(() => { | ||||||
|  |         columnMappingLoading.value = false; | ||||||
|  |       }); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 确定 | ||||||
|  |    */ | ||||||
|  |   const handleOk = () => { | ||||||
|  |     visible.value = false; | ||||||
|  |     proxy.$message.info('功能尚在开发中'); | ||||||
|  |   }; | ||||||
|  |  | ||||||
|  |   /** | ||||||
|  |    * 关闭配置 | ||||||
|  |    */ | ||||||
|  |   const handleCancel = () => { | ||||||
|  |     visible.value = false; | ||||||
|  |   }; | ||||||
|  |  | ||||||
|   /** |   /** | ||||||
|    * 代码生成 |    * 代码生成 | ||||||
|    * |    * | ||||||
| @@ -207,8 +435,16 @@ | |||||||
|  |  | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
|   export default { |   export default { | ||||||
|     name: 'Role', |     name: 'Generator', | ||||||
|   }; |   }; | ||||||
| </script> | </script> | ||||||
|  |  | ||||||
| <style scoped lang="less"></style> | <style scoped lang="less"> | ||||||
|  |   .field-config :deep(.arco-card-body) { | ||||||
|  |     padding: 0; | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   :deep(.gen-config.arco-form) { | ||||||
|  |     width: 50%; | ||||||
|  |   } | ||||||
|  | </style> | ||||||
|   | |||||||
| @@ -17,6 +17,7 @@ | |||||||
| package top.charles7c.cnadmin.webapi.controller.tool; | package top.charles7c.cnadmin.webapi.controller.tool; | ||||||
|  |  | ||||||
| import java.sql.SQLException; | import java.sql.SQLException; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
|  |  | ||||||
| @@ -25,12 +26,14 @@ import io.swagger.v3.oas.annotations.tags.Tag; | |||||||
|  |  | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.GetMapping; | import org.springframework.web.bind.annotation.GetMapping; | ||||||
|  | import org.springframework.web.bind.annotation.PathVariable; | ||||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
| import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||||
|  |  | ||||||
| import top.charles7c.cnadmin.common.model.query.PageQuery; | import top.charles7c.cnadmin.common.model.query.PageQuery; | ||||||
| import top.charles7c.cnadmin.common.model.vo.PageDataVO; | import top.charles7c.cnadmin.common.model.vo.PageDataVO; | ||||||
| import top.charles7c.cnadmin.common.model.vo.R; | import top.charles7c.cnadmin.common.model.vo.R; | ||||||
|  | import top.charles7c.cnadmin.tool.model.entity.ColumnMappingDO; | ||||||
| import top.charles7c.cnadmin.tool.model.query.TableQuery; | import top.charles7c.cnadmin.tool.model.query.TableQuery; | ||||||
| import top.charles7c.cnadmin.tool.model.vo.TableVO; | import top.charles7c.cnadmin.tool.model.vo.TableVO; | ||||||
| import top.charles7c.cnadmin.tool.service.GeneratorService; | import top.charles7c.cnadmin.tool.service.GeneratorService; | ||||||
| @@ -55,4 +58,10 @@ public class GeneratorController { | |||||||
|     public R<PageDataVO<TableVO>> pageTable(TableQuery query, @Validated PageQuery pageQuery) throws SQLException { |     public R<PageDataVO<TableVO>> pageTable(TableQuery query, @Validated PageQuery pageQuery) throws SQLException { | ||||||
|         return R.ok(generatorService.pageTable(query, pageQuery)); |         return R.ok(generatorService.pageTable(query, pageQuery)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @Operation(summary = "查询列映射信息列表", description = "查询列映射信息列表") | ||||||
|  |     @GetMapping("/column/{tableName}") | ||||||
|  |     public R<List<ColumnMappingDO>> listColumnMapping(@PathVariable String tableName) { | ||||||
|  |         return R.ok(generatorService.listColumnMapping(tableName)); | ||||||
|  |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -37,7 +37,7 @@ logging: | |||||||
|     enabled: true |     enabled: true | ||||||
|     # 是否记录内网 IP 操作 |     # 是否记录内网 IP 操作 | ||||||
|     includeInnerIp: true |     includeInnerIp: true | ||||||
|     # 哪些请求方式不记录系统日志 |     # 排除请求方式 | ||||||
|     #excludeMethods: |     #excludeMethods: | ||||||
|     #  - GET |     #  - GET | ||||||
|     # 脱敏字段 |     # 脱敏字段 | ||||||
| @@ -45,6 +45,15 @@ logging: | |||||||
|       - password |       - password | ||||||
|       - Authorization |       - Authorization | ||||||
|  |  | ||||||
|  | --- ### 代码生成器配置 | ||||||
|  | generator: | ||||||
|  |   # 排除数据表 | ||||||
|  |   excludeTables: | ||||||
|  |     - DATABASECHANGELOG | ||||||
|  |     - DATABASECHANGELOGLOCK | ||||||
|  |     - gen_config | ||||||
|  |     - gen_column_mapping | ||||||
|  |  | ||||||
| --- ### 接口文档配置 | --- ### 接口文档配置 | ||||||
| springdoc: | springdoc: | ||||||
|   # 设置对象型参数的展示形式(设为 true 表示将对象型参数平展开,即对象内的属性直接作为参数展示而不是嵌套在对象内,默认为 false) |   # 设置对象型参数的展示形式(设为 true 表示将对象型参数平展开,即对象内的属性直接作为参数展示而不是嵌套在对象内,默认为 false) | ||||||
|   | |||||||
| @@ -1,2 +1,40 @@ | |||||||
| -- liquibase formatted sql | -- liquibase formatted sql | ||||||
|  |  | ||||||
|  | -- changeset Charles7c:1 | ||||||
|  | CREATE TABLE IF NOT EXISTS `gen_config` ( | ||||||
|  |     `id` bigint(20) UNSIGNED AUTO_INCREMENT COMMENT 'ID', | ||||||
|  |     `table_name` varchar(100) NOT NULL COMMENT '表名称', | ||||||
|  |     `module_name` varchar(50) NOT NULL COMMENT '模块名称', | ||||||
|  |     `package_name` varchar(50) NOT NULL COMMENT '包名称', | ||||||
|  |     `frontend_path` varchar(255) NOT NULL COMMENT '前端路径', | ||||||
|  |     `business_name` varchar(50) NOT NULL COMMENT '业务名称', | ||||||
|  |     `author` varchar(100) NOT NULL COMMENT '作者', | ||||||
|  |     `table_prefix` varchar(20) DEFAULT NULL COMMENT '表前缀', | ||||||
|  |     `is_override` bit(1) DEFAULT b'0' COMMENT '是否覆盖', | ||||||
|  |     `create_time` datetime NOT NULL COMMENT '创建时间', | ||||||
|  |     `update_time` datetime NOT NULL COMMENT '修改时间', | ||||||
|  |     PRIMARY KEY (`id`) USING BTREE, | ||||||
|  |     UNIQUE INDEX `uk_table_name`(`table_name`) USING BTREE | ||||||
|  | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='生成配置表'; | ||||||
|  |  | ||||||
|  | CREATE TABLE IF NOT EXISTS `gen_column_mapping` ( | ||||||
|  |     `id` bigint(20) UNSIGNED AUTO_INCREMENT COMMENT 'ID', | ||||||
|  |     `table_name` varchar(100) NOT NULL COMMENT '表名称', | ||||||
|  |     `column_name` varchar(50) NOT NULL COMMENT '列名称', | ||||||
|  |     `column_type` varchar(25) NOT NULL COMMENT '列类型', | ||||||
|  |     `field_name` varchar(50) NOT NULL COMMENT '字段名称', | ||||||
|  |     `field_type` varchar(25) NOT NULL COMMENT '字段类型', | ||||||
|  |     `comment` varchar(512) DEFAULT NULL COMMENT '注释', | ||||||
|  |     `sort` int(11) UNSIGNED DEFAULT 999 COMMENT '排序', | ||||||
|  |     `is_required` bit(1) DEFAULT b'1' COMMENT '是否必填', | ||||||
|  |     `show_in_list` bit(1) DEFAULT b'1' COMMENT '是否在列表中显示', | ||||||
|  |     `show_in_add` bit(1) DEFAULT b'1' COMMENT '是否在新增中显示', | ||||||
|  |     `show_in_update` bit(1) DEFAULT b'1' COMMENT '是否在修改中显示', | ||||||
|  |     `show_in_query` bit(1) DEFAULT b'1' COMMENT '是否在查询中显示', | ||||||
|  |     `form_type` tinyint(1) UNSIGNED DEFAULT NULL COMMENT '表单类型', | ||||||
|  |     `query_type` tinyint(1) UNSIGNED DEFAULT NULL COMMENT '查询方式', | ||||||
|  |     `create_time` datetime NOT NULL COMMENT '创建时间', | ||||||
|  |     `update_time` datetime NOT NULL COMMENT '修改时间', | ||||||
|  |     PRIMARY KEY (`id`) USING BTREE, | ||||||
|  |     INDEX `idx_table_name`(`table_name`) USING BTREE | ||||||
|  | ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='列映射表'; | ||||||
		Reference in New Issue
	
	Block a user