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