diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/annotation/Query.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/annotation/Query.java index c9c38a6b..1a1e3623 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/annotation/Query.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/annotation/Query.java @@ -18,6 +18,8 @@ package top.charles7c.cnadmin.common.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 类型属性,多个属性之间用逗号分隔 @@ -47,66 +49,4 @@ public @interface Query { *

*/ 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,; - } } diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java index 506e8fb0..7f84c4b4 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/constant/StringConsts.java @@ -35,6 +35,11 @@ public class StringConsts implements StrPool { */ public static final String EMPTY = ""; + /** + * 空格 + */ + public static final String SPACE = " "; + /** * 分号 */ diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/enums/QueryTypeEnum.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/enums/QueryTypeEnum.java new file mode 100644 index 00000000..03048843 --- /dev/null +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/enums/QueryTypeEnum.java @@ -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 { + + /** + * 等值查询,例如: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; +} diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java index bfab8cbb..04720d86 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java @@ -30,6 +30,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; 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.util.ReflectUtils; import top.charles7c.cnadmin.common.util.validate.ValidationUtils; @@ -146,7 +147,7 @@ public class QueryHelper { // 注意:数据库规范中列采用下划线连接法命名,程序规范中变量采用驼峰法命名 String property = queryAnnotation.property(); String columnName = StrUtil.toUnderlineCase(StrUtil.blankToDefault(property, fieldName)); - Query.Type queryType = queryAnnotation.type(); + QueryTypeEnum queryType = queryAnnotation.type(); switch (queryType) { case EQUAL: queryWrapper.eq(columnName, fieldValue); diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/config/properties/LogProperties.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/config/properties/LogProperties.java index 897d9aef..b5232b27 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/config/properties/LogProperties.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/config/properties/LogProperties.java @@ -46,7 +46,7 @@ public class LogProperties { private Boolean includeInnerIp; /** - * 哪些请求方式不记录系统日志 + * 排除请求方式(哪些请求方式不记录系统日志) */ private List excludeMethods = new ArrayList<>(); diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java index 008a6c6a..b047d218 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/LoginLogQuery.java @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; 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 = "登录时间") - @Query(type = Query.Type.BETWEEN) + @Query(type = QueryTypeEnum.BETWEEN) @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; } diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java index ba3c28e0..03470c9a 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/OperationLogQuery.java @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; 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 = "操作内容") - @Query(type = Query.Type.INNER_LIKE) + @Query(type = QueryTypeEnum.INNER_LIKE) private String description; /** @@ -59,7 +60,7 @@ public class OperationLogQuery implements Serializable { * 操作时间 */ @Schema(description = "操作时间") - @Query(type = Query.Type.BETWEEN) + @Query(type = QueryTypeEnum.BETWEEN) @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; diff --git a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java index d6930483..4a4895f2 100644 --- a/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java +++ b/continew-admin-monitor/src/main/java/top/charles7c/cnadmin/monitor/model/query/SystemLogQuery.java @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; 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 = "创建时间") - @Query(type = Query.Type.BETWEEN) + @Query(type = QueryTypeEnum.BETWEEN) @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; } diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/DeptQuery.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/DeptQuery.java index db21b369..b6fd5cc3 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/DeptQuery.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/DeptQuery.java @@ -23,6 +23,7 @@ import lombok.Data; import io.swagger.v3.oas.annotations.media.Schema; 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 = "部门名称") - @Query(type = Query.Type.INNER_LIKE) + @Query(type = QueryTypeEnum.INNER_LIKE) private String name; /** diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/MenuQuery.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/MenuQuery.java index b324c4f4..64d2d77d 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/MenuQuery.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/MenuQuery.java @@ -23,6 +23,7 @@ import lombok.Data; import io.swagger.v3.oas.annotations.media.Schema; 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 = "菜单标题") - @Query(type = Query.Type.INNER_LIKE) + @Query(type = QueryTypeEnum.INNER_LIKE) private String title; /** diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java index 2f7352eb..3b69f726 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/model/query/UserQuery.java @@ -28,6 +28,7 @@ import org.springframework.format.annotation.DateTimeFormat; import top.charles7c.cnadmin.common.annotation.Query; 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 = "创建时间") - @Query(type = Query.Type.BETWEEN) + @Query(type = QueryTypeEnum.BETWEEN) @DateTimeFormat(pattern = StringConsts.NORM_DATE_TIME_PATTERN) private List createTime; diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/config/properties/GeneratorProperties.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/config/properties/GeneratorProperties.java new file mode 100644 index 00000000..a6a99d6f --- /dev/null +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/config/properties/GeneratorProperties.java @@ -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; +} diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/enums/FormTypeEnum.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/enums/FormTypeEnum.java new file mode 100644 index 00000000..2bf9439b --- /dev/null +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/enums/FormTypeEnum.java @@ -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 { + + /** + * 文本框 + */ + TEXT(1, "文本框"), + /** + * 文本域 + */ + TEXT_AREA(2, "文本域"), + /** + * 下拉框 + */ + SELECT(3, "下拉框"), + /** + * 单选框 + */ + RADIO(4, "单选框"), + /** + * 日期框 + */ + DATE(5, "日期框"), + /** + * 日期时间框 + */ + DATE_TIME(6, "日期时间框"),; + + private final Integer value; + private final String description; +} diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/mapper/ColumnMappingMapper.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/mapper/ColumnMappingMapper.java new file mode 100644 index 00000000..691df2e1 --- /dev/null +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/mapper/ColumnMappingMapper.java @@ -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 {} diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/mapper/GenConfigMapper.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/mapper/GenConfigMapper.java new file mode 100644 index 00000000..26de0c06 --- /dev/null +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/mapper/GenConfigMapper.java @@ -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 {} diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/ColumnMappingDO.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/ColumnMappingDO.java new file mode 100644 index 00000000..53c0b8bd --- /dev/null +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/ColumnMappingDO.java @@ -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; + } +} diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/GenConfigDO.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/GenConfigDO.java new file mode 100644 index 00000000..85f1202c --- /dev/null +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/entity/GenConfigDO.java @@ -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; +} diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/vo/TableVO.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/vo/TableVO.java index a4e3d57b..01302930 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/vo/TableVO.java +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/model/vo/TableVO.java @@ -44,9 +44,9 @@ public class TableVO implements Serializable { private String tableName; /** - * 注释 + * 描述 */ - @Schema(description = "注释") + @Schema(description = "描述") private String comment; /** diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/GeneratorService.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/GeneratorService.java index ff6cd6a3..f297d235 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/GeneratorService.java +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/GeneratorService.java @@ -17,9 +17,11 @@ package top.charles7c.cnadmin.tool.service; import java.sql.SQLException; +import java.util.List; import top.charles7c.cnadmin.common.model.query.PageQuery; 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.vo.TableVO; @@ -32,13 +34,22 @@ import top.charles7c.cnadmin.tool.model.vo.TableVO; public interface GeneratorService { /** - * 分页查询列表 + * 分页查询表信息列表 * * @param query * 查询条件 * @param pageQuery * 分页查询条件 - * @return 分页列表信息 + * @return 表信息分页列表 */ PageDataVO pageTable(TableQuery query, PageQuery pageQuery) throws SQLException; + + /** + * 查询列映射信息列表 + * + * @param tableName + * 表名称 + * @return 列映射信息列表 + */ + List listColumnMapping(String tableName); } diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java index 9ba4ffdf..2fee7d78 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/service/impl/GeneratorServiceImpl.java @@ -17,6 +17,8 @@ package top.charles7c.cnadmin.tool.service.impl; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.sql.DataSource; @@ -26,11 +28,21 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import cn.hutool.core.bean.BeanUtil; -import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +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.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.vo.TableVO; import top.charles7c.cnadmin.tool.service.GeneratorService; @@ -49,6 +61,8 @@ import top.charles7c.cnadmin.tool.util.Table; public class GeneratorServiceImpl implements GeneratorService { private final DataSource dataSource; + private final GeneratorProperties generatorProperties; + private final ColumnMappingMapper columnMappingMapper; @Override public PageDataVO pageTable(TableQuery query, PageQuery pageQuery) throws SQLException { @@ -57,9 +71,29 @@ public class GeneratorServiceImpl implements GeneratorService { if (StrUtil.isNotBlank(tableName)) { tableList.removeIf(table -> !StrUtil.containsAny(table.getTableName(), tableName)); } - tableList - .removeIf(table -> StrUtil.equalsAny(table.getTableName(), "DATABASECHANGELOG", "DATABASECHANGELOGLOCK")); + tableList.removeIf(table -> StrUtil.equalsAny(table.getTableName(), generatorProperties.getExcludeTables())); List tableVOList = BeanUtil.copyToList(tableList, TableVO.class); return PageDataVO.build(pageQuery.getPage(), pageQuery.getSize(), tableVOList); } + + @Override + public List listColumnMapping(String tableName) { + List columnMappingList = columnMappingMapper + .selectList(Wrappers.lambdaQuery(ColumnMappingDO.class).eq(ColumnMappingDO::getTableName, tableName)); + if (CollUtil.isEmpty(columnMappingList)) { + Collection 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; + } } diff --git a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/util/MetaUtils.java b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/util/MetaUtils.java index 6a712a88..5aaba0e6 100644 --- a/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/util/MetaUtils.java +++ b/continew-admin-tool/src/main/java/top/charles7c/cnadmin/tool/util/MetaUtils.java @@ -18,6 +18,7 @@ package top.charles7c.cnadmin.tool.util; import java.sql.*; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import javax.sql.DataSource; @@ -28,6 +29,8 @@ import lombok.NoArgsConstructor; import cn.hutool.core.date.DateUtil; import cn.hutool.db.Db; 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; } + + /** + * 获取所有列信息 + * + * @param dataSource + * 数据源 + * @param tableName + * 表名称 + * @return 列信息列表 + */ + public static Collection getColumns(DataSource dataSource, String tableName) { + cn.hutool.db.meta.Table table = MetaUtil.getTableMeta(dataSource, tableName); + return table.getColumns(); + } } diff --git a/continew-admin-tool/src/main/resources/generator.properties b/continew-admin-tool/src/main/resources/generator.properties new file mode 100644 index 00000000..81b7c395 --- /dev/null +++ b/continew-admin-tool/src/main/resources/generator.properties @@ -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 \ No newline at end of file diff --git a/continew-admin-ui/src/api/tool/generator.ts b/continew-admin-ui/src/api/tool/generator.ts index a091b9eb..8be9b30f 100644 --- a/continew-admin-ui/src/api/tool/generator.ts +++ b/continew-admin-ui/src/api/tool/generator.ts @@ -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(`${BASE_URL}/column/${tableName}`); +} \ No newline at end of file diff --git a/continew-admin-ui/src/views/tool/generator/index.vue b/continew-admin-ui/src/views/tool/generator/index.vue index 69df076c..ed58f0a6 100644 --- a/continew-admin-ui/src/views/tool/generator/index.vue +++ b/continew-admin-ui/src/views/tool/generator/index.vue @@ -51,7 +51,9 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/tool/GeneratorController.java b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/tool/GeneratorController.java index 5a42162b..b195d218 100644 --- a/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/tool/GeneratorController.java +++ b/continew-admin-webapi/src/main/java/top/charles7c/cnadmin/webapi/controller/tool/GeneratorController.java @@ -17,6 +17,7 @@ package top.charles7c.cnadmin.webapi.controller.tool; import java.sql.SQLException; +import java.util.List; import lombok.RequiredArgsConstructor; @@ -25,12 +26,14 @@ import io.swagger.v3.oas.annotations.tags.Tag; import org.springframework.validation.annotation.Validated; 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.RestController; import top.charles7c.cnadmin.common.model.query.PageQuery; import top.charles7c.cnadmin.common.model.vo.PageDataVO; 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.vo.TableVO; import top.charles7c.cnadmin.tool.service.GeneratorService; @@ -55,4 +58,10 @@ public class GeneratorController { public R> pageTable(TableQuery query, @Validated PageQuery pageQuery) throws SQLException { return R.ok(generatorService.pageTable(query, pageQuery)); } + + @Operation(summary = "查询列映射信息列表", description = "查询列映射信息列表") + @GetMapping("/column/{tableName}") + public R> listColumnMapping(@PathVariable String tableName) { + return R.ok(generatorService.listColumnMapping(tableName)); + } } diff --git a/continew-admin-webapi/src/main/resources/application.yml b/continew-admin-webapi/src/main/resources/application.yml index 49a1fdc2..6c074993 100644 --- a/continew-admin-webapi/src/main/resources/application.yml +++ b/continew-admin-webapi/src/main/resources/application.yml @@ -37,7 +37,7 @@ logging: enabled: true # 是否记录内网 IP 操作 includeInnerIp: true - # 哪些请求方式不记录系统日志 + # 排除请求方式 #excludeMethods: # - GET # 脱敏字段 @@ -45,6 +45,15 @@ logging: - password - Authorization +--- ### 代码生成器配置 +generator: + # 排除数据表 + excludeTables: + - DATABASECHANGELOG + - DATABASECHANGELOGLOCK + - gen_config + - gen_column_mapping + --- ### 接口文档配置 springdoc: # 设置对象型参数的展示形式(设为 true 表示将对象型参数平展开,即对象内的属性直接作为参数展示而不是嵌套在对象内,默认为 false) diff --git a/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql b/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql index 874085b8..c656a0e9 100644 --- a/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql +++ b/continew-admin-webapi/src/main/resources/db/changelog/v1.1.0/continew-admin_table.sql @@ -1,2 +1,40 @@ -- 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='列映射表'; \ No newline at end of file