diff --git a/src/main/java/com/youlai/system/common/base/BaseEntity.java b/src/main/java/com/youlai/system/common/base/BaseEntity.java index 3e71a021..d6a89e8d 100644 --- a/src/main/java/com/youlai/system/common/base/BaseEntity.java +++ b/src/main/java/com/youlai/system/common/base/BaseEntity.java @@ -1,6 +1,8 @@ package com.youlai.system.common.base; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableLogic; import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonInclude; import lombok.Data; @@ -12,7 +14,7 @@ import java.time.LocalDateTime; /** * 基础实体类 * - *

实体类的基类,包含了实体类的公共属性,如创建时间、更新时间

+ *

实体类的基类,包含了实体类的公共属性,如创建时间、更新时间、逻辑删除标识等

* * @author Ray * @since 2024/6/23 @@ -23,13 +25,6 @@ public class BaseEntity implements Serializable { @Serial private static final long serialVersionUID = 1L; - /** - * 主键ID - */ - @TableId(type = IdType.AUTO) - private Long id; - - /** * 创建时间 */ @@ -46,5 +41,9 @@ public class BaseEntity implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; - + /** + * 逻辑删除标识 (0-未删除 1-已删除) + */ + @TableLogic(value = "0", delval = "1") + private Integer isDeleted; } diff --git a/src/main/java/com/youlai/system/config/property/GeneratorProperties.java b/src/main/java/com/youlai/system/config/property/GeneratorProperties.java index 126680b8..b9124b6a 100644 --- a/src/main/java/com/youlai/system/config/property/GeneratorProperties.java +++ b/src/main/java/com/youlai/system/config/property/GeneratorProperties.java @@ -1,6 +1,5 @@ package com.youlai.system.config.property; -import cn.hutool.core.io.file.FileNameUtil; import cn.hutool.core.map.MapUtil; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -31,11 +30,6 @@ public class GeneratorProperties { private String packageName; - /** - * 文件扩展名,如 .java - */ - private String extension= FileNameUtil.EXT_JAVA; - } diff --git a/src/main/java/com/youlai/system/controller/GeneratorController.java b/src/main/java/com/youlai/system/controller/GeneratorController.java index de3db805..de378db5 100644 --- a/src/main/java/com/youlai/system/controller/GeneratorController.java +++ b/src/main/java/com/youlai/system/controller/GeneratorController.java @@ -3,15 +3,19 @@ package com.youlai.system.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.youlai.system.common.result.PageResult; import com.youlai.system.common.result.Result; -import com.youlai.system.model.form.GenConfigForm; import com.youlai.system.model.query.TablePageQuery; -import com.youlai.system.model.vo.GeneratorPreviewVO; +import com.youlai.system.model.vo.TableColumnVO; +import com.youlai.system.model.vo.TableGeneratePreviewVO; import com.youlai.system.model.vo.TablePageVO; import com.youlai.system.service.GeneratorService; import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.springframework.web.bind.annotation.*; +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 java.util.List; @@ -32,26 +36,21 @@ public class GeneratorController { return PageResult.success(result); } - @Operation(summary = "获取预览生成代码") - @GetMapping("/{tableName}/preview") - public Result> getTablePreviewData(@PathVariable String tableName) { - List list = generatorService.getTablePreviewData(tableName); + @Operation(summary = "获取数据表字段列表") + @GetMapping("/table/{tableName}/columns") + public Result> getTableColumns( + @Parameter(description = "表名", example = "sys_user") @PathVariable String tableName + ) { + List list = generatorService.getTableColumns(tableName); return Result.success(list); } - @Operation(summary = "获取代码生成配置") - @GetMapping("/{tableName}/config") - public Result getGenConfig(@PathVariable String tableName) { - GenConfigForm formData = generatorService.getGenConfig(tableName); - return Result.success(formData); - } - - @Operation(summary = "保存代码生成配置") - @PostMapping("/{tableName}/config") - public Result saveGenCodeConfig(@RequestBody GenConfigForm formData) { - boolean result = generatorService.saveGenCodeConfig(formData); - return Result.judge(result); + @Operation(summary = "获取预览生成代码") + @GetMapping("/table/{tableName}/preview") + public Result> getTablePreviewData(@PathVariable String tableName) { + List list = generatorService.getTablePreviewData(tableName); + return Result.success(list); } } diff --git a/src/main/java/com/youlai/system/converter/DeptConverter.java b/src/main/java/com/youlai/system/converter/DeptConverter.java index 83feca8c..bf165616 100644 --- a/src/main/java/com/youlai/system/converter/DeptConverter.java +++ b/src/main/java/com/youlai/system/converter/DeptConverter.java @@ -16,7 +16,7 @@ public interface DeptConverter { DeptForm toForm(SysDept entity); - DeptVO toVo(SysDept entity); + DeptVO convertToVo(SysDept entity); SysDept toEntity(DeptForm deptForm); diff --git a/src/main/java/com/youlai/system/converter/DictConverter.java b/src/main/java/com/youlai/system/converter/DictConverter.java index 43949ffa..94bbc246 100644 --- a/src/main/java/com/youlai/system/converter/DictConverter.java +++ b/src/main/java/com/youlai/system/converter/DictConverter.java @@ -7,7 +7,7 @@ import com.youlai.system.model.vo.DictPageVO; import org.mapstruct.Mapper; /** - * 字典对象转换器 + * 字典 对象转换器 * * @author Ray Hao * @since 2022/6/8 @@ -15,7 +15,7 @@ import org.mapstruct.Mapper; @Mapper(componentModel = "spring") public interface DictConverter { - Page toPageVo(Page page); + Page convertToPageVo(Page page); DictForm toForm(SysDict entity); diff --git a/src/main/java/com/youlai/system/converter/GenConfigConverter.java b/src/main/java/com/youlai/system/converter/GenConfigConverter.java deleted file mode 100644 index 738c103e..00000000 --- a/src/main/java/com/youlai/system/converter/GenConfigConverter.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.youlai.system.converter; - -import com.youlai.system.model.entity.GenConfig; -import com.youlai.system.model.entity.GenFieldConfig; -import com.youlai.system.model.form.GenConfigForm; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -import java.util.List; - -/** - * 代码生成配置转换器 - * - * @author Ray - * @since 2.10.0 - */ -@Mapper(componentModel = "spring") -public interface GenConfigConverter { - - @Mapping(source = "genConfig.tableName", target = "tableName") - @Mapping(source = "genConfig.comment", target = "comment") - @Mapping(source = "genConfig.moduleName", target = "moduleName") - @Mapping(source = "genConfig.packageName", target = "packageName") - @Mapping(source = "genConfig.entityName", target = "entityName") - @Mapping(source = "genConfig.author", target = "author") - @Mapping(source = "fieldConfigs", target = "fieldConfigs") - GenConfigForm toGenConfigForm(GenConfig genConfig, List fieldConfigs); - - List toFieldConfigList(List fieldConfigs); - - @Mapping(source = "configId", target = "configId") - @Mapping(source = "columnName", target = "columnName") - @Mapping(source = "columnType", target = "columnType") - @Mapping(source = "fieldName", target = "fieldName") - @Mapping(source = "fieldType", target = "fieldType") - @Mapping(source = "comment", target = "comment") - @Mapping(source = "formType", target = "formType") - @Mapping(source = "queryType", target = "queryType") - @Mapping(source = "isShowInList", target = "isShowInList") - @Mapping(source = "isShowInForm", target = "isShowInForm") - @Mapping(source = "isShowInQuery", target = "isShowInQuery") - @Mapping(source = "isRequired", target = "isRequired") - GenConfigForm.FieldConfig toFieldConfig(GenFieldConfig genFieldConfig); - -} \ No newline at end of file diff --git a/src/main/java/com/youlai/system/enums/FormTypeEnum.java b/src/main/java/com/youlai/system/enums/FormTypeEnum.java deleted file mode 100644 index 8a0aa8b8..00000000 --- a/src/main/java/com/youlai/system/enums/FormTypeEnum.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.youlai.system.enums; - -import com.baomidou.mybatisplus.annotation.EnumValue; -import com.youlai.system.common.base.IBaseEnum; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -/** - * 表单类型枚举 - * - * @author Ray - * @since 2.10.0 - */ -@Getter -@RequiredArgsConstructor -public enum FormTypeEnum implements IBaseEnum { - - /** - * 输入框 - */ - INPUT(1, "输入框"), - - /** - * 下拉框 - */ - SELECT(2, "下拉框"), - - /** - * 单选框 - */ - RADIO(3, "单选框"), - - /** - * 数字输入框 - */ - INPUT_NUMBER(4, "数字输入框"), - - /** - * 开关 - */ - SWITCH(5, "开关"), - - /** - * 复选框 - */ - CHECK_BOX(6, "复选框"), - - /** - * 文本域 - */ - TEXT_AREA(7, "文本域"), - - /** - * 日期时间框 - */ - DATE_TIME(8, "日期时间框"), - - /** - * 日期框 - */ - DATE(9, "日期框"),; - - - // Mybatis-Plus 提供注解表示插入数据库时插入该值 - @EnumValue - private final Integer value; - - // @JsonValue // 表示对枚举序列化时返回此字段 - private final String label; -} diff --git a/src/main/java/com/youlai/system/enums/QueryTypeEnum.java b/src/main/java/com/youlai/system/enums/QueryTypeEnum.java deleted file mode 100644 index 53bae2c7..00000000 --- a/src/main/java/com/youlai/system/enums/QueryTypeEnum.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.youlai.system.enums; - -import com.baomidou.mybatisplus.annotation.EnumValue; -import com.youlai.system.common.base.IBaseEnum; -import lombok.Getter; -import lombok.RequiredArgsConstructor; - -/** - * 查询类型枚举 - * - * @author Ray - * @since 2.10.0 - */ -@Getter -@RequiredArgsConstructor -public enum QueryTypeEnum implements IBaseEnum { - - - EQ(1, "="), - - - NE(2, "!="), - - - GT(3, ">"), - - - GE(4, ">="), - - LT(5, "<"), - - LE(6, "<="), - - BETWEEN(7, "BETWEEN"), - - LIKE(8, "LIKE '%s%'"), - - LIKE_LEFT(9, "LIKE '%s'"), - - LIKE_RIGHT(10, "LIKE 's%'"), - - IN(11, "IN"), - - NOT_IN(12, "NOT IN"), - - IS_NULL(13, "IS NULL"), - - IS_NOT_NULL(14, "IS NOT NULL") - ; - - // Mybatis-Plus 提供注解表示插入数据库时插入该值 - @EnumValue - private final Integer value; - - // @JsonValue // 表示对枚举序列化时返回此字段 - private final String label; - -} diff --git a/src/main/java/com/youlai/system/mapper/DatabaseMapper.java b/src/main/java/com/youlai/system/mapper/DatabaseMapper.java index abc91f4a..c478a817 100644 --- a/src/main/java/com/youlai/system/mapper/DatabaseMapper.java +++ b/src/main/java/com/youlai/system/mapper/DatabaseMapper.java @@ -11,12 +11,6 @@ import org.apache.ibatis.annotations.Mapper; import java.util.List; -/** - * 数据库 Mapper 接口 - * - * @author ray - * @since 2.10.0 - */ @Mapper public interface DatabaseMapper extends BaseMapper { diff --git a/src/main/java/com/youlai/system/mapper/GenConfigMapper.java b/src/main/java/com/youlai/system/mapper/GenConfigMapper.java deleted file mode 100644 index b0e8bd49..00000000 --- a/src/main/java/com/youlai/system/mapper/GenConfigMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.youlai.system.mapper; - -import com.youlai.system.model.entity.GenConfig; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * 代码生成基础配置访问层 - * - * @author Ray - * @since 2.10.0 - */ -@Mapper -public interface GenConfigMapper extends BaseMapper { - -} - - - - diff --git a/src/main/java/com/youlai/system/mapper/GenFieldConfigMapper.java b/src/main/java/com/youlai/system/mapper/GenFieldConfigMapper.java deleted file mode 100644 index 389a7f1c..00000000 --- a/src/main/java/com/youlai/system/mapper/GenFieldConfigMapper.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.youlai.system.mapper; - -import com.youlai.system.model.entity.GenFieldConfig; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import org.apache.ibatis.annotations.Mapper; - -/** - * 代码生成字段配置访问层 - * - * @author Ray - * @since 2.10.0 - */ -@Mapper -public interface GenFieldConfigMapper extends BaseMapper { - -} - - - - diff --git a/src/main/java/com/youlai/system/model/entity/GenConfig.java b/src/main/java/com/youlai/system/model/entity/GenConfig.java deleted file mode 100644 index 90a2f844..00000000 --- a/src/main/java/com/youlai/system/model/entity/GenConfig.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.youlai.system.model.entity; - -import com.baomidou.mybatisplus.annotation.*; - -import com.youlai.system.common.base.BaseEntity; -import lombok.Data; - -/** - * 代码生成基础配置 - */ -@TableName(value ="gen_config") -@Data -public class GenConfig extends BaseEntity { - - /** - * 表名 - */ - private String tableName; - - /** - * 包名 - */ - private String packageName; - - /** - * 模块名 - */ - private String moduleName; - - /** - * 实体名 - */ - private String entityName; - - /** - * 类描述 - */ - private String comment; - - /** - * 上级菜单ID - */ - private Long parentMenuId; - - /** - * 作者 - */ - private String author; - - - @TableLogic - private Integer isDeleted; -} \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/entity/GenFieldConfig.java b/src/main/java/com/youlai/system/model/entity/GenFieldConfig.java deleted file mode 100644 index 9c789670..00000000 --- a/src/main/java/com/youlai/system/model/entity/GenFieldConfig.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.youlai.system.model.entity; - -import com.baomidou.mybatisplus.annotation.TableName; - -import com.youlai.system.common.base.BaseEntity; -import com.youlai.system.enums.FormTypeEnum; -import com.youlai.system.enums.QueryTypeEnum; -import lombok.Getter; -import lombok.Setter; - -/** - * 字段生成配置实体 - * - * @author Ray - * @since 2.10.0 - */ -@TableName(value = "gen_field_config") -@Getter -@Setter -public class GenFieldConfig extends BaseEntity { - - /** - * 关联的配置ID - */ - private Long configId; - - /** - * 列名 - */ - private String columnName; - - /** - * 列类型 - */ - private String columnType; - - /** - * 字段长度 - */ - private String columnLength; - - /** - * 字段名称 - */ - private String fieldName; - - /** - * 字段类型 - */ - private String fieldType; - - /** - * 字段描述 - */ - private String comment; - - /** - * 表单类型 - */ - private FormTypeEnum formType; - - /** - * 查询方式 - */ - private QueryTypeEnum queryType; - - /** - * 是否在列表显示 - */ - private Integer isShowInList; - - /** - * 是否在表单显示 - */ - private Integer isShowInForm; - - /** - * 是否在查询条件显示 - */ - private Integer isShowInQuery; - - /** - * 是否必填 - */ - private Integer isRequired; - - -} \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/entity/SysDept.java b/src/main/java/com/youlai/system/model/entity/SysDept.java index 37ec95d0..79be15ff 100644 --- a/src/main/java/com/youlai/system/model/entity/SysDept.java +++ b/src/main/java/com/youlai/system/model/entity/SysDept.java @@ -3,7 +3,6 @@ package com.youlai.system.model.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; import com.youlai.system.common.base.BaseEntity; import lombok.Getter; import lombok.Setter; @@ -17,6 +16,11 @@ import lombok.Setter; @Getter @Setter public class SysDept extends BaseEntity { + /** + * 主键 + */ + @TableId(type = IdType.AUTO) + private Long id; /** * 部门名称 @@ -58,10 +62,4 @@ public class SysDept extends BaseEntity { */ private Long updateBy; - /** - * 逻辑删除标识 (0-未删除 1-已删除) - */ - @TableLogic - private Boolean isDeleted; - } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/entity/SysDict.java b/src/main/java/com/youlai/system/model/entity/SysDict.java index 655a246a..be28b821 100644 --- a/src/main/java/com/youlai/system/model/entity/SysDict.java +++ b/src/main/java/com/youlai/system/model/entity/SysDict.java @@ -2,7 +2,6 @@ package com.youlai.system.model.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; import com.youlai.system.common.base.BaseEntity; import lombok.Data; @@ -14,6 +13,11 @@ import lombok.Data; */ @Data public class SysDict extends BaseEntity { + /** + * 主键 + */ + @TableId(type = IdType.AUTO) + private Long id; /** * 类型名称 @@ -35,10 +39,4 @@ public class SysDict extends BaseEntity { */ private String remark; - /** - * 逻辑删除标识 (0-未删除 1-已删除) - */ - @TableLogic(value = "0", delval = "1") - private Integer isDeleted; - } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/entity/SysRole.java b/src/main/java/com/youlai/system/model/entity/SysRole.java index 2c8469b6..5f485a0f 100644 --- a/src/main/java/com/youlai/system/model/entity/SysRole.java +++ b/src/main/java/com/youlai/system/model/entity/SysRole.java @@ -2,7 +2,6 @@ package com.youlai.system.model.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; import com.youlai.system.common.base.BaseEntity; import lombok.Getter; import lombok.Setter; @@ -56,10 +55,4 @@ public class SysRole extends BaseEntity { * 更新人 ID */ private Long updateBy; - - /** - * 逻辑删除标识 (0-未删除 1-已删除) - */ - @TableLogic(value = "0", delval = "1") - private Boolean isDeleted; } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/entity/SysUser.java b/src/main/java/com/youlai/system/model/entity/SysUser.java index 54fa7ae1..3375558f 100644 --- a/src/main/java/com/youlai/system/model/entity/SysUser.java +++ b/src/main/java/com/youlai/system/model/entity/SysUser.java @@ -2,7 +2,6 @@ package com.youlai.system.model.entity; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; -import com.baomidou.mybatisplus.annotation.TableLogic; import com.youlai.system.common.base.BaseEntity; import lombok.Getter; import lombok.Setter; @@ -73,10 +72,4 @@ public class SysUser extends BaseEntity { * 更新人 ID */ private Long updateBy; - - /** - * 逻辑删除标识 (0-未删除 1-已删除) - */ - @TableLogic(value = "0", delval = "1") - private Integer isDeleted; } \ No newline at end of file diff --git a/src/main/java/com/youlai/system/model/form/GenConfigForm.java b/src/main/java/com/youlai/system/model/form/GeneratorConfigForm.java similarity index 51% rename from src/main/java/com/youlai/system/model/form/GenConfigForm.java rename to src/main/java/com/youlai/system/model/form/GeneratorConfigForm.java index b37f1261..aa91d12d 100644 --- a/src/main/java/com/youlai/system/model/form/GenConfigForm.java +++ b/src/main/java/com/youlai/system/model/form/GeneratorConfigForm.java @@ -1,7 +1,5 @@ package com.youlai.system.model.form; -import com.youlai.system.enums.FormTypeEnum; -import com.youlai.system.enums.QueryTypeEnum; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -9,67 +7,53 @@ import java.util.List; @Schema(description = "代码生成配置表单") @Data -public class GenConfigForm { +public class GeneratorConfigForm { @Schema(description = "表名") private String tableName; - @Schema(description = "类描述") - private String comment; - - @Schema(description = "模块名") - private String moduleName; + @Schema(description = "实体名") + private String entityName; @Schema(description = "包名") private String packageName; - @Schema(description = "实体名") - private String entityName; + @Schema(description = "模块名") + private String moduleName; @Schema(description = "作者") private String author; - @Schema(description = "字段配置列表") + @Schema(description = "字段配置") private List fieldConfigs; @Schema(description = "字段配置") @Data public static class FieldConfig { - @Schema(description = "ID") - private Long configId; - @Schema(description = "列名") - private String columnName; - - @Schema(description = "列类型") - private String columnType; - - @Schema(description = "字段名") - private String fieldName; + @Schema(description = "字段名称") + private String name; @Schema(description = "字段类型") - private String fieldType; + private String type; @Schema(description = "字段描述") - private String comment; + private String description; @Schema(description = "是否在列表显示") - private Integer isShowInList; + private Boolean showInList; @Schema(description = "是否在表单显示") - private Integer isShowInForm; + private Boolean showInForm; @Schema(description = "是否在查询条件显示") - private Integer isShowInQuery; - - @Schema(description = "是否必填") - private Integer isRequired; + private Boolean showInQuery; @Schema(description = "表单类型") - private FormTypeEnum formType; + private String formType; - @Schema(description = "查询类型") - private QueryTypeEnum queryType; + @Schema(description = "查询方式") + private String queryMethod; } } diff --git a/src/main/java/com/youlai/system/model/vo/GeneratorPreviewVO.java b/src/main/java/com/youlai/system/model/vo/TableGeneratePreviewVO.java similarity index 91% rename from src/main/java/com/youlai/system/model/vo/GeneratorPreviewVO.java rename to src/main/java/com/youlai/system/model/vo/TableGeneratePreviewVO.java index 5fcdef89..6f0c62c8 100644 --- a/src/main/java/com/youlai/system/model/vo/GeneratorPreviewVO.java +++ b/src/main/java/com/youlai/system/model/vo/TableGeneratePreviewVO.java @@ -5,7 +5,7 @@ import lombok.Data; @Schema(description = "表生成代码预览VO") @Data -public class GeneratorPreviewVO { +public class TableGeneratePreviewVO { @Schema(description = "生成文件路径") private String path; diff --git a/src/main/java/com/youlai/system/service/GeneratorService.java b/src/main/java/com/youlai/system/service/GeneratorService.java index d009587f..6b96933f 100644 --- a/src/main/java/com/youlai/system/service/GeneratorService.java +++ b/src/main/java/com/youlai/system/service/GeneratorService.java @@ -1,16 +1,15 @@ package com.youlai.system.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.youlai.system.model.form.GenConfigForm; import com.youlai.system.model.query.TablePageQuery; import com.youlai.system.model.vo.TableColumnVO; -import com.youlai.system.model.vo.GeneratorPreviewVO; +import com.youlai.system.model.vo.TableGeneratePreviewVO; import com.youlai.system.model.vo.TablePageVO; import java.util.List; /** - * 代码生成业务接口 + * 数据库服务接口 * * @author haoxr * @since 2.11.0 @@ -40,21 +39,5 @@ public interface GeneratorService { * @param tableName 表名 * @return */ - List getTablePreviewData(String tableName); - - /** - * 获取代码生成配置 - * - * @param tableName 表名 - * @return - */ - GenConfigForm getGenConfig(String tableName); - - /** - * 保存代码生成配置 - * - * @param formData 表单数据 - * @return - */ - boolean saveGenCodeConfig(GenConfigForm formData); + List getTablePreviewData(String tableName); } diff --git a/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java b/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java index ecbe40a3..36dfc7e3 100644 --- a/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/GeneratorServiceImpl.java @@ -1,30 +1,18 @@ package com.youlai.system.service.impl; -import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateUtil; -import cn.hutool.core.lang.Assert; -import cn.hutool.core.util.StrUtil; import cn.hutool.extra.template.Template; import cn.hutool.extra.template.TemplateConfig; import cn.hutool.extra.template.TemplateEngine; import cn.hutool.extra.template.TemplateUtil; -import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.youlai.system.config.property.GeneratorProperties; import com.youlai.system.mapper.DatabaseMapper; -import com.youlai.system.mapper.GenConfigMapper; -import com.youlai.system.mapper.GenFieldConfigMapper; -import com.youlai.system.model.entity.GenConfig; -import com.youlai.system.model.entity.GenFieldConfig; -import com.youlai.system.model.form.GenConfigForm; import com.youlai.system.model.query.TablePageQuery; import com.youlai.system.model.vo.TableColumnVO; -import com.youlai.system.model.vo.GeneratorPreviewVO; +import com.youlai.system.model.vo.TableGeneratePreviewVO; import com.youlai.system.model.vo.TablePageVO; import com.youlai.system.service.GeneratorService; import lombok.RequiredArgsConstructor; -import org.apache.logging.log4j.util.Strings; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import cn.hutool.extra.template.TemplateConfig.ResourceMode; @@ -43,15 +31,6 @@ public class GeneratorServiceImpl implements GeneratorService { private final DatabaseMapper databaseMapper; - private final GeneratorProperties generatorProperties; - - private final GenConfigMapper genConfigMapper; - private final GenFieldConfigMapper genFieldConfigMapper; - - // 注入 spring.application.name - @Value("${spring.application.name}") - private String applicationName; - /** * 数据表分页列表 * @@ -74,39 +53,6 @@ public class GeneratorServiceImpl implements GeneratorService { return databaseMapper.getTableColumns(tableName); } - /** - * 获取代码生成配置 - * - * @param tableName 表名 eg: sys_user - * @return 代码生成配置 - */ - @Override - public GenConfigForm getGenConfig(String tableName) { - // 查询表生成配置 - GenConfig genConfig = genConfigMapper.selectOne( - new LambdaQueryWrapper<>(GenConfig.class) - .eq(GenConfig::getTableName, tableName) - .last("LIMIT 1") - ); - - // 查询字段生成配置 - List fieldConfigs = genFieldConfigMapper.selectList( - new LambdaQueryWrapper<>(GenFieldConfig.class) - .eq(GenFieldConfig::getConfigId, genConfig.getId()) - ); - - GenConfigForm genConfigForm = new GenConfigForm(); - - - return null; - } - - @Override - public boolean saveGenCodeConfig(GenConfigForm formData) { - return false; - } - - /** * 获取预览生成代码 * @@ -114,133 +60,49 @@ public class GeneratorServiceImpl implements GeneratorService { * @return 预览数据 */ @Override - public List getTablePreviewData(String tableName) { + public List getTablePreviewData(String tableName) { - List list = new ArrayList<>(); + List list = new ArrayList<>(); - GenConfig genConfig = genConfigMapper.selectOne(new LambdaQueryWrapper() - .eq(GenConfig::getTableName, tableName) - ); - Assert.isTrue(genConfig != null, "未找到表生成配置"); - - List fieldConfigs = genFieldConfigMapper.selectList(new LambdaQueryWrapper() - .eq(GenFieldConfig::getConfigId, genConfig.getId()) - ); - Assert.isTrue(CollectionUtil.isNotEmpty(fieldConfigs), "未找到字段生成配置"); - - // 遍历模板配置 - Map templateConfigs = generatorProperties.getTemplateConfigs(); - for (Map.Entry templateConfigEntry : templateConfigs.entrySet()) { - GeneratorPreviewVO previewVO = new GeneratorPreviewVO(); - - GeneratorProperties.TemplateConfig templateConfig = templateConfigEntry.getValue(); - - /* 1. 生成文件名 UserController */ - // User Role Menu Dept - String entityName = genConfig.getEntityName(); - // Controller Service Mapper Entity - String templateName = templateConfigEntry.getKey(); - // .java .ts .vue - String extension = templateConfig.getExtension(); - - // 文件名 UserController.java - String fileName = getFileName(entityName, templateName, extension); - previewVO.setFileName(fileName); + TemplateConfig templateConfig = new TemplateConfig("templates" , ResourceMode.CLASSPATH); + TemplateEngine templateEngine = TemplateUtil.createEngine(templateConfig); - /* 2. 生成文件路径 */ - // com.youlai.system - String packageName = genConfig.getPackageName(); - // controller - String subPackageName = templateConfig.getPackageName(); - // 文件路径 com.youlai.system.controller - String filePath = getFilePath(templateName, packageName, subPackageName); - previewVO.setPath(filePath); + Map bindingMap = new HashMap<>(); + bindingMap.put("tableName", "sys_user"); + bindingMap.put("author", "Ray"); + bindingMap.put("date", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm")); + bindingMap.put("entityName", "User" ); + bindingMap.put("lowerFirstEntityName", "user"); + bindingMap.put("tableComment", "用户"); - /* 3. 生成文件内容 */ + // 包路径 + bindingMap.put("package", "com.youlai.system"); - // 生成文件内容 - String content = getCodeContent(templateConfig, genConfig, fieldConfigs); - previewVO.setContent(content); + Template template = templateEngine.getTemplate("generator" + File.separator + "controller.java.vm"); + String content = template.render(bindingMap); + TableGeneratePreviewVO controller = new TableGeneratePreviewVO(); + controller.setPath("youlai-boot/controller"); + controller.setContent(content); + controller.setFileName("UserController.java"); + list.add(controller); + + TableGeneratePreviewVO vo = new TableGeneratePreviewVO(); + vo.setPath("youlai-boot/model/vo"); + vo.setContent(content); + vo.setFileName("UserVO.java"); + + list.add(vo); - list.add(previewVO); - } return list; } - private String getFileName(String entityName, String templateName, String extension) { - if (templateName.equals("Entity")) { - return entityName + extension; - } - if (templateName.equals("MapperXml")) { - return entityName + "Mapper" + extension; - } - if (templateName.equals("API") || templateName.equals("VIEW")) { - return StrUtil.toSymbolCase(entityName, '-') + extension; - } - return entityName + templateName + extension; + private String generatePath(){ + } - private String getFilePath(String templateName, String packageName, String subPackageName) { - String path; - if (templateName.equals("MapperXml")) { - path = (applicationName - + File.separator - + "src" + File.separator + "main" + File.separator + "resources" - + File.separator + subPackageName - ).replace(".", File.separator); - } else if (templateName.equals("API") || templateName.equals("VIEW")) { - path = ("vue3-element-admin" - + File.separator - + "src" + File.separator + subPackageName - ).replace(".", File.separator); - } else { - path = (applicationName - + File.separator - + "src" + File.separator + "main" + File.separator + "java" - + File.separator + packageName + File.separator + subPackageName - ).replace(".", File.separator); - } - return path; - } - /** - * 生成代码内容 - * - * @param templateConfig 模板配置 - * @param genConfig 生成配置 - * @param fieldConfigs 字段配置 - * @return 代码内容 - */ - private String getCodeContent(GeneratorProperties.TemplateConfig templateConfig, GenConfig genConfig, List fieldConfigs) { - - Map bindMap = new HashMap<>(); - - String entityName = genConfig.getEntityName(); - - bindMap.put("package", genConfig.getPackageName()); - bindMap.put("subPackage", templateConfig.getPackageName()); - bindMap.put("date", DateUtil.format(new Date(), "yyyy-MM-dd HH:mm")); - bindMap.put("entityName", entityName); - bindMap.put("tableName", genConfig.getTableName()); - bindMap.put("author", genConfig.getAuthor()); - bindMap.put("lowerFirstEntityName", StrUtil.lowerFirst(entityName)); - bindMap.put("tableComment", StrUtil.replace(genConfig.getComment(), "表", Strings.EMPTY)); - bindMap.put("fieldConfigs", fieldConfigs); - - for (GenFieldConfig fieldConfig : fieldConfigs) { - bindMap.put("hasLocalDateTime", "LocalDateTime".equals(fieldConfig.getFieldType())); - bindMap.put("hasBigDecimal", "BigDecimal".equals(fieldConfig.getFieldType())); - bindMap.put("hasRequiredField", Boolean.TRUE.equals(fieldConfig.getIsRequired())); - } - - TemplateEngine templateEngine = TemplateUtil.createEngine(new TemplateConfig("templates", ResourceMode.CLASSPATH)); - Template template = templateEngine.getTemplate(templateConfig.getTemplatePath()); - String content = template.render(bindMap); - - return content; - } } diff --git a/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java index aa7b4ea3..da02e870 100644 --- a/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/SysDeptServiceImpl.java @@ -85,7 +85,7 @@ public class SysDeptServiceImpl extends ServiceImpl impl return deptList.stream() .filter(dept -> dept.getParentId().equals(parentId)) .map(dept -> { - DeptVO deptVO = deptConverter.toVo(dept); + DeptVO deptVO = deptConverter.convertToVo(dept); List children = recurDeptList(dept.getId(), deptList); deptVO.setChildren(children); return deptVO; diff --git a/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java b/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java index a8fca05a..6dddcd9b 100644 --- a/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java +++ b/src/main/java/com/youlai/system/service/impl/SysUserServiceImpl.java @@ -157,7 +157,7 @@ public class SysUserServiceImpl extends ServiceImpl impl * 删除用户 * * @param idsStr 用户ID,多个以英文逗号(,)分割 - * @return + * @return true|false */ @Override public boolean deleteUsers(String idsStr) { @@ -175,7 +175,7 @@ public class SysUserServiceImpl extends ServiceImpl impl * * @param userId 用户ID * @param password 用户密码 - * @return + * @return true|false */ @Override public boolean updatePassword(Long userId, String password) { diff --git a/src/main/resources/application-generator.yml b/src/main/resources/application-generator.yml index 2a7e3996..d3edd2a5 100644 --- a/src/main/resources/application-generator.yml +++ b/src/main/resources/application-generator.yml @@ -3,41 +3,7 @@ generator: ## 模板配置 templateConfigs: Controller: - templatePath: generator/controller.java.vm - packageName: controller - Service: - templatePath: generator/service.java.vm - packageName: service - ServiceImpl: - templatePath: generator/serviceImpl.java.vm - packageName: service.impl - Mapper: - templatePath: generator/mapper.java.vm - packageName: mapper - MapperXml: - templatePath: generator/mapper.xml.vm - packageName: mapper - extension: .xml - Query: - templatePath: generator/query.java.vm - packageName: model.query - Form: - templatePath: generator/form.java.vm - packageName: model.form - VO: - templatePath: generator/vo.java.vm - packageName: model.vo - Entity: - templatePath: generator/entity.java.vm - packageName: model.entity - API: - templatePath: generator/api.ts.vm - packageName: api - extension: .ts - VIEW: - templatePath: generator/index.vue.vm - packageName: views - extension: .vue - - - + ## 模板路径 + templatePath: templates/generator/controller.java.vm + ## 包名 + packageName: controller \ No newline at end of file diff --git a/src/main/resources/mapper/GenConfigMapper.xml b/src/main/resources/mapper/GenConfigMapper.xml deleted file mode 100644 index ba394cd3..00000000 --- a/src/main/resources/mapper/GenConfigMapper.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/src/main/resources/mapper/GenFieldConfigMapper.xml b/src/main/resources/mapper/GenFieldConfigMapper.xml deleted file mode 100644 index 03607e26..00000000 --- a/src/main/resources/mapper/GenFieldConfigMapper.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - id,config_id,name, - type,description,show_in_list, - show_in_form,show_in_query,form_type, - query_method,create_time,update_time - - diff --git a/src/main/resources/templates/generator/api.ts.vm b/src/main/resources/templates/generator/api.ts.vm deleted file mode 100644 index 4fb19ad1..00000000 --- a/src/main/resources/templates/generator/api.ts.vm +++ /dev/null @@ -1,121 +0,0 @@ -import request from "@/utils/request"; - -const ${className.toUpperCase()}_BASE_URL = "/api/v1/${className.toLowerCase()}s"; - -class ${className}API { - /** 获取${className}分页数据 */ - static getPage(queryParams?: ${className}PageQuery) { - return request>({ - url: `${${className.toUpperCase()}_BASE_URL}/page`, - method: "get", - params: queryParams, - }); - } - - /** 获取${className}下拉数据源 */ - static getOptions() { - return request({ - url: `${${className.toUpperCase()}_BASE_URL}/options`, - method: "get", - }); - } - - /** - * 获取${className}的菜单ID集合 - * - * @param ${className.toLowerCase()}Id ${className}ID - * @returns ${className}的菜单ID集合 - */ - static get${className}MenuIds(${className.toLowerCase()}Id: number) { - return request({ - url: `${${className.toUpperCase()}_BASE_URL}/${${className.toLowerCase()}Id}/menuIds`, - method: "get", - }); - } - - /** - * 分配菜单权限 - * - * @param ${className.toLowerCase()}Id ${className}ID - * @param data 菜单ID集合 - */ - static update${className}Menus(${className.toLowerCase()}Id: number, data: number[]) { - return request({ - url: `${${className.toUpperCase()}_BASE_URL}/${${className.toLowerCase()}Id}/menus`, - method: "put", - data: data, - }); - } - - /** - * 获取${className}表单数据 - * - * @param id ${className}ID - * @returns ${className}表单数据 - */ - static getFormData(id: number) { - return request({ - url: `${${className.toUpperCase()}_BASE_URL}/${id}/form`, - method: "get", - }); - } - - /** 添加${className} */ - static add(data: ${className}Form) { - return request({ - url: `${${className.toUpperCase()}_BASE_URL}`, - method: "post", - data: data, - }); - } - - /** - * 更新${className} - * - * @param id ${className}ID - * @param data ${className}表单数据 - */ - static update(id: number, data: ${className}Form) { - return request({ - url: `${${className.toUpperCase()}_BASE_URL}/${id}`, - method: "put", - data: data, - }); - } - - /** - * 批量删除${className},多个以英文逗号(,)分割 - * - * @param ids ${className}ID字符串,多个以英文逗号(,)分割 - */ - static deleteByIds(ids: string) { - return request({ - url: `${${className.toUpperCase()}_BASE_URL}/${ids}`, - method: "delete", - }); - } -} - -export default ${className}API; - -/** ${className}分页查询参数 */ -export interface ${className}PageQuery extends PageQuery { - /** 搜索关键字 */ - keywords?: string; -} - -/** ${className}分页对象 */ -export interface ${className}PageVO { - #foreach($field in $fields) - /** ${field.comment} */ - ${field.name}?: ${field.type}; - #end -} - -/** ${className}表单对象 */ -export interface ${className}Form { - #foreach($field in $fields) - /** ${field.comment} */ - ${field.name}?: ${field.type}; - #end -} diff --git a/src/main/resources/templates/generator/controller.java.vm b/src/main/resources/templates/generator/controller.java.vm index 4b3305be..6cf522ff 100644 --- a/src/main/resources/templates/generator/controller.java.vm +++ b/src/main/resources/templates/generator/controller.java.vm @@ -7,8 +7,8 @@ import ${package}.model.form.${entityName}Form; import ${package}.model.query.${entityName}PageQuery; import ${package}.model.vo.${entityName}PageVO; import com.baomidou.mybatisplus.core.metadata.IPage; -import com.youlai.system.common.result.PageResult; -import com.youlai.system.common.result.Result; +import com.youlai.common.result.PageResult; +import com.youlai.common.result.Result; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.Operation; @@ -17,7 +17,7 @@ import org.springframework.web.bind.annotation.*; import jakarta.validation.Valid; /** - * $!{tableComment}前端控制层 + * $!{tableComment} 前端控制器 * * @author ${author} * @since ${date} @@ -44,7 +44,7 @@ public class ${entityName}Controller { return Result.judge(result); } - @Operation(summary = "获取$!{tableComment}表单数据") + @Operation(summary = "$!{tableComment}表单数据") @GetMapping("/{id}/form") public Result<${entityName}Form> get${entityName}Form( @Parameter(description = "$!{tableComment}ID") @PathVariable Long id diff --git a/src/main/resources/templates/generator/converter.java.vm b/src/main/resources/templates/generator/converter.java.vm index 6907a4d5..45a65a30 100644 --- a/src/main/resources/templates/generator/converter.java.vm +++ b/src/main/resources/templates/generator/converter.java.vm @@ -6,7 +6,7 @@ import ${package}.model.entity.${entityName}; import ${package}.model.form.${entityName}Form; /** - * $!{tableComment}对象转换器 + * $!{tableComment}转换器 * * @author ${author} * @since ${date} diff --git a/src/main/resources/templates/generator/entity.java.vm b/src/main/resources/templates/generator/entity.java.vm index ca994871..dd975f7c 100644 --- a/src/main/resources/templates/generator/entity.java.vm +++ b/src/main/resources/templates/generator/entity.java.vm @@ -23,14 +23,13 @@ import com.youlai.system.common.base.BaseEntity; public class ${entityName} extends BaseEntity { private static final long serialVersionUID = 1L; -#if($fieldConfigs) - #foreach($fieldConfig in ${fieldConfigs}) - #if("$!fieldConfig.fieldComment" != "") + +#foreach($field in ${table.fields}) +#if("$!field.comment" != "") /** - * ${fieldConfig.fieldComment} + * ${field.comment} */ - #end - private ${fieldConfig.fieldType} ${fieldConfig.fieldName}; - #end +#end + private ${field.propertyType} ${field.propertyName}; #end } diff --git a/src/main/resources/templates/generator/form.java.vm b/src/main/resources/templates/generator/form.java.vm index ea493d0f..0ba5d808 100644 --- a/src/main/resources/templates/generator/form.java.vm +++ b/src/main/resources/templates/generator/form.java.vm @@ -1,4 +1,4 @@ -package ${package}.${subPackage}; +package ${package}.model.form; import java.io.Serial; import java.io.Serializable; @@ -11,12 +11,10 @@ import java.time.LocalDateTime; #if(${hasBigDecimal}) import java.math.BigDecimal; #end -#if(${hasRequiredField}) -import jakarta.validation.constraints.*; -#end + /** - * $!{tableComment}表单对象 + * $!{tableComment} 表单对象 * * @author ${author} * @since ${date} @@ -30,22 +28,10 @@ public class ${entityName}Form implements Serializable { private static final long serialVersionUID = 1L; ## ---------- BEGIN 字段循环遍历 ---------- -#if($fieldConfigs) - #foreach($fieldConfig in ${fieldConfigs}) - #if($fieldConfig.showInForm) - #if($fieldConfig.isRequired) - #if($fieldConfig.fieldType == 'String') - @NotBlank(message = "$fieldConfig.fieldComment不能为空") - #else - @NotNull(message = "$fieldConfig.fieldComment不能为空") - #end - #end - #if("$!fieldConfig.fieldComment" != "") - @Schema(description = "${fieldConfig.fieldComment}") - #end - private ${fieldConfig.fieldType} ${fieldConfig.fieldName}; - #end +#foreach($field in ${fields}) + #if("$!field.comment" != "") + @Schema(description = "${field.comment}") #end + private ${field.propertyType} ${field.propertyName}; #end - } diff --git a/src/main/resources/templates/generator/index.vue.vm b/src/main/resources/templates/generator/index.vue.vm deleted file mode 100644 index bdd146fa..00000000 --- a/src/main/resources/templates/generator/index.vue.vm +++ /dev/null @@ -1,178 +0,0 @@ - - -