feat: 新增查询列映射信息列表接口
提取 QueryTypeEnum 枚举
This commit is contained in:
parent
1b06a96cfb
commit
f4c6d83ff5
@ -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 {
|
||||
* </p>
|
||||
*/
|
||||
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 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 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);
|
||||
|
@ -46,7 +46,7 @@ public class LogProperties {
|
||||
private Boolean includeInnerIp;
|
||||
|
||||
/**
|
||||
* 哪些请求方式不记录系统日志
|
||||
* 排除请求方式(哪些请求方式不记录系统日志)
|
||||
*/
|
||||
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.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<Date> createTime;
|
||||
}
|
||||
|
@ -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<Date> createTime;
|
||||
|
||||
|
@ -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<Date> createTime;
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
|
@ -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<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;
|
||||
|
||||
/**
|
||||
* 注释
|
||||
* 描述
|
||||
*/
|
||||
@Schema(description = "注释")
|
||||
@Schema(description = "描述")
|
||||
private String comment;
|
||||
|
||||
/**
|
||||
|
@ -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<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;
|
||||
|
||||
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<TableVO> 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<TableVO> tableVOList = BeanUtil.copyToList(tableList, TableVO.class);
|
||||
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.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<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
|
||||
ref="tableRef"
|
||||
row-key="tableName"
|
||||
:data="tableList"
|
||||
:loading="loading"
|
||||
:row-selection="{
|
||||
type: 'checkbox',
|
||||
showCheckedAll: true,
|
||||
@ -63,10 +65,9 @@
|
||||
total: total,
|
||||
current: queryParams.page,
|
||||
}"
|
||||
row-key="tableName"
|
||||
:bordered="false"
|
||||
:stripe="true"
|
||||
:loading="loading"
|
||||
column-resizable
|
||||
stripe
|
||||
size="large"
|
||||
@page-change="handlePageChange"
|
||||
@page-size-change="handlePageSizeChange"
|
||||
@ -84,12 +85,20 @@
|
||||
:width="200"
|
||||
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="charset" />
|
||||
<a-table-column title="创建时间" data-index="createTime" />
|
||||
<a-table-column title="操作" align="center">
|
||||
<template #cell="{ record }">
|
||||
<a-button
|
||||
type="text"
|
||||
size="small"
|
||||
title="配置"
|
||||
@click="toConfig(record.tableName)"
|
||||
>
|
||||
<template #icon><icon-settings /></template>配置
|
||||
</a-button>
|
||||
<a-button
|
||||
type="text"
|
||||
size="small"
|
||||
@ -102,23 +111,198 @@
|
||||
</a-table-column>
|
||||
</template>
|
||||
</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>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
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 { FormTypeEnum, QueryTypeEnum } = proxy.useDict(
|
||||
'FormTypeEnum',
|
||||
'QueryTypeEnum'
|
||||
);
|
||||
|
||||
const tableList = ref<TableRecord[]>([]);
|
||||
const columnMappingList = ref<ColumnMappingRecord[]>([]);
|
||||
const total = ref(0);
|
||||
const ids = ref<Array<string>>([]);
|
||||
const title = ref('');
|
||||
const single = ref(true);
|
||||
const multiple = ref(true);
|
||||
const showQuery = ref(true);
|
||||
const loading = ref(false);
|
||||
const visible = ref(false);
|
||||
const columnMappingLoading = ref(false);
|
||||
|
||||
const data = reactive({
|
||||
// 查询参数
|
||||
@ -128,8 +312,17 @@
|
||||
size: 10,
|
||||
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();
|
||||
|
||||
/**
|
||||
* 打开配置对话框
|
||||
*
|
||||
* @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">
|
||||
export default {
|
||||
name: 'Role',
|
||||
name: 'Generator',
|
||||
};
|
||||
</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;
|
||||
|
||||
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<PageDataVO<TableVO>> pageTable(TableQuery query, @Validated PageQuery pageQuery) throws SQLException {
|
||||
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
|
||||
# 是否记录内网 IP 操作
|
||||
includeInnerIp: true
|
||||
# 哪些请求方式不记录系统日志
|
||||
# 排除请求方式
|
||||
#excludeMethods:
|
||||
# - GET
|
||||
# 脱敏字段
|
||||
@ -45,6 +45,15 @@ logging:
|
||||
- password
|
||||
- Authorization
|
||||
|
||||
--- ### 代码生成器配置
|
||||
generator:
|
||||
# 排除数据表
|
||||
excludeTables:
|
||||
- DATABASECHANGELOG
|
||||
- DATABASECHANGELOGLOCK
|
||||
- gen_config
|
||||
- gen_column_mapping
|
||||
|
||||
--- ### 接口文档配置
|
||||
springdoc:
|
||||
# 设置对象型参数的展示形式(设为 true 表示将对象型参数平展开,即对象内的属性直接作为参数展示而不是嵌套在对象内,默认为 false)
|
||||
|
@ -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='列映射表';
|
Loading…
Reference in New Issue
Block a user