mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	代码生成器的编辑界面~
This commit is contained in:
		@@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.ToString;
 | 
			
		||||
import org.springframework.format.annotation.DateTimeFormat;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
@@ -14,6 +15,7 @@ import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOU
 | 
			
		||||
@ApiModel("参数配置分页 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@ToString(callSuper = true)
 | 
			
		||||
public class InfConfigPageReqVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "参数名称", example = "模糊匹配")
 | 
			
		||||
 
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodeGenTablePageItemRespVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService;
 | 
			
		||||
import io.swagger.annotations.ApiOperation;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
 | 
			
		||||
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/tool/codegen")
 | 
			
		||||
public class ToolCodeGenController {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private ToolCodegenService codegenService;
 | 
			
		||||
 | 
			
		||||
    @GetMapping("/table/page")
 | 
			
		||||
    public CommonResult<PageResult<ToolCodeGenTablePageItemRespVO>> getCodeGenTablePage() {
 | 
			
		||||
        return success(null);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation("基于数据库的表结构,创建代码生成器的表定义")
 | 
			
		||||
    @PostMapping("/table/create")
 | 
			
		||||
    // TODO 权限
 | 
			
		||||
    public CommonResult<Long> createCodeGenTable(@RequestParam("tableName") String tableName) {
 | 
			
		||||
        return success(codegenService.createCodegenTable(tableName));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,57 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.CommonResult;
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenTablePageReqVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenTableRespVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.service.codegen.ToolCodegenService;
 | 
			
		||||
import io.swagger.annotations.Api;
 | 
			
		||||
import io.swagger.annotations.ApiOperation;
 | 
			
		||||
import org.springframework.validation.annotation.Validated;
 | 
			
		||||
import org.springframework.web.bind.annotation.*;
 | 
			
		||||
 | 
			
		||||
import javax.annotation.Resource;
 | 
			
		||||
import javax.validation.Valid;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
 | 
			
		||||
 | 
			
		||||
@Api(tags = "代码生成器 API")
 | 
			
		||||
@RestController
 | 
			
		||||
@RequestMapping("/tool/codegen")
 | 
			
		||||
@Validated
 | 
			
		||||
public class ToolCodegenController {
 | 
			
		||||
 | 
			
		||||
    @Resource
 | 
			
		||||
    private ToolCodegenService codegenService;
 | 
			
		||||
 | 
			
		||||
    @ApiOperation("获得表定义分页")
 | 
			
		||||
    @GetMapping("/page")
 | 
			
		||||
    // TODO 权限 @PreAuthorize("@ss.hasPermi('tool:gen:list')")
 | 
			
		||||
    public CommonResult<PageResult<ToolCodegenTableRespVO>> getCodeGenTablePage(@Valid ToolCodegenTablePageReqVO pageReqVO) {
 | 
			
		||||
        PageResult<ToolCodegenTableDO> pageResult = codegenService.getCodeGenTablePage(pageReqVO);
 | 
			
		||||
        return success(ToolCodegenConvert.INSTANCE.convertPage(pageResult));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation("获得表和字段的明细")
 | 
			
		||||
    @GetMapping("/detail")
 | 
			
		||||
//   todo @PreAuthorize("@ss.hasPermi('tool:gen:query')")
 | 
			
		||||
    public CommonResult<ToolCodegenDetailRespVO> getCodeGenDetail(@RequestParam("tableId") Long tableId) {
 | 
			
		||||
        ToolCodegenTableDO table = codegenService.getCodeGenTablePage(tableId);
 | 
			
		||||
        List<ToolCodegenColumnDO> columns = codegenService.getCodegenColumnListByTableId(tableId);
 | 
			
		||||
        // 拼装返回
 | 
			
		||||
        return success(ToolCodegenConvert.INSTANCE.convert(table, columns));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @ApiOperation("基于数据库的表结构,创建代码生成器的表定义")
 | 
			
		||||
    @PostMapping("/create")
 | 
			
		||||
    // TODO 权限
 | 
			
		||||
    public CommonResult<Long> createCodeGenTable(@RequestParam("tableName") String tableName) {
 | 
			
		||||
        return success(codegenService.createCodegenTable(tableName));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +0,0 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
public class ToolCodeGenTableBaseRespVO {
 | 
			
		||||
}
 | 
			
		||||
@@ -1,7 +0,0 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
public class ToolCodeGenTablePageItemRespVO extends ToolCodeGenTableBaseRespVO {
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,85 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* 代码生成字段定义 Base VO,提供给添加、修改、详细的子 VO 使用
 | 
			
		||||
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
 | 
			
		||||
*/
 | 
			
		||||
@Data
 | 
			
		||||
public class ToolCodegenColumnBaseVO {
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "表编号", required = true, example = "1")
 | 
			
		||||
    @NotNull(message = "表编号不能为空")
 | 
			
		||||
    private Long tableId;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "字段名", required = true, example = "user_age")
 | 
			
		||||
    @NotNull(message = "字段名不能为空")
 | 
			
		||||
    private String columnName;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "字段类型", required = true, example = "int(11)")
 | 
			
		||||
    @NotNull(message = "字段类型不能为空")
 | 
			
		||||
    private String columnType;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "字段描述", required = true, example = "年龄")
 | 
			
		||||
    @NotNull(message = "字段描述不能为空")
 | 
			
		||||
    private String columnComment;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "是否允许为空", required = true, example = "true")
 | 
			
		||||
    @NotNull(message = "是否允许为空不能为空")
 | 
			
		||||
    private Boolean nullable;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "是否主键", required = true, example = "false")
 | 
			
		||||
    @NotNull(message = "是否主键不能为空")
 | 
			
		||||
    private Boolean primaryKey;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "是否自增", required = true, example = "true")
 | 
			
		||||
    @NotNull(message = "是否自增不能为空")
 | 
			
		||||
    private String autoIncrement;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "排序", required = true, example = "10")
 | 
			
		||||
    @NotNull(message = "排序不能为空")
 | 
			
		||||
    private Integer ordinalPosition;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "Java 属性类型", required = true, example = "userAge")
 | 
			
		||||
    @NotNull(message = "Java 属性类型不能为空")
 | 
			
		||||
    private String javaType;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "Java 属性名", required = true, example = "Integer")
 | 
			
		||||
    @NotNull(message = "Java 属性名不能为空")
 | 
			
		||||
    private String javaField;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "字典类型", example = "sys_gender")
 | 
			
		||||
    private String dictType;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "数据示例", example = "1024")
 | 
			
		||||
    private String example;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "是否为 Create 创建操作的字段", required = true, example = "true")
 | 
			
		||||
    @NotNull(message = "是否为 Create 创建操作的字段不能为空")
 | 
			
		||||
    private Boolean createOperation;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "是否为 Update 更新操作的字段", required = true, example = "false")
 | 
			
		||||
    @NotNull(message = "是否为 Update 更新操作的字段不能为空")
 | 
			
		||||
    private Boolean updateOperation;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "是否为 List 查询操作的字段", required = true, example = "true")
 | 
			
		||||
    @NotNull(message = "是否为 List 查询操作的字段不能为空")
 | 
			
		||||
    private Boolean listOperation;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "List 查询操作的条件类型", required = true, example = "LIKE", notes = "参见 ToolCodegenColumnListConditionEnum 枚举")
 | 
			
		||||
    @NotNull(message = "List 查询操作的条件类型不能为空")
 | 
			
		||||
    private String listOperationCondition;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "是否为 List 查询操作的返回字段", required = true, example = "true")
 | 
			
		||||
    @NotNull(message = "是否为 List 查询操作的返回字段不能为空")
 | 
			
		||||
    private Boolean listOperationResult;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "显示类型", required = true, example = "input")
 | 
			
		||||
    @NotNull(message = "显示类型不能为空")
 | 
			
		||||
    private String htmlType;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,23 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.ToString;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@ApiModel("代码生成字段定义 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@ToString(callSuper = true)
 | 
			
		||||
public class ToolCodegenColumnRespVO extends ToolCodegenColumnBaseVO {
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "编号", required = true, example = "1")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "创建时间", required = true)
 | 
			
		||||
    private Date createTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@ApiModel("代码生成表和字段的明细 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
public class ToolCodegenDetailRespVO {
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty("表定义")
 | 
			
		||||
    private ToolCodegenTableRespVO table;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty("字段定义")
 | 
			
		||||
    private List<ToolCodegenColumnRespVO> columns;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,50 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import javax.validation.constraints.NotNull;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
* 代码生成 Base VO,提供给添加、修改、详细的子 VO 使用
 | 
			
		||||
* 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
 | 
			
		||||
*/
 | 
			
		||||
@Data
 | 
			
		||||
public class ToolCodegenTableBaseVO {
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "表名称", required = true, example = "yudao")
 | 
			
		||||
    @NotNull(message = "表名称不能为空")
 | 
			
		||||
    private String tableName;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "表描述", required = true, example = "芋道")
 | 
			
		||||
    @NotNull(message = "表描述不能为空")
 | 
			
		||||
    private String tableComment;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "备注", example = "我是备注")
 | 
			
		||||
    private String remark;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "模块名", required = true, example = "system")
 | 
			
		||||
    @NotNull(message = "模块名不能为空")
 | 
			
		||||
    private String moduleName;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "业务名", required = true, example = "codegen")
 | 
			
		||||
    @NotNull(message = "业务名不能为空")
 | 
			
		||||
    private String businessName;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "类名称", required = true, example = "ToolCodegenTable")
 | 
			
		||||
    @NotNull(message = "类名称不能为空")
 | 
			
		||||
    private String className;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "类描述", required = true, example = "代码生成器的表定义")
 | 
			
		||||
    @NotNull(message = "类描述不能为空")
 | 
			
		||||
    private String classComment;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "作者", required = true, example = "芋道源码")
 | 
			
		||||
    @NotNull(message = "作者不能为空")
 | 
			
		||||
    private String author;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "模板类型", required = true, example = "1", notes = "参见 ToolCodegenTemplateTypeEnum 枚举")
 | 
			
		||||
    @NotNull(message = "模板类型不能为空")
 | 
			
		||||
    private Integer templateType;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,35 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.PageParam;
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.ToString;
 | 
			
		||||
import org.springframework.format.annotation.DateTimeFormat;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
 | 
			
		||||
 | 
			
		||||
@ApiModel("表定义分页 Request VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@ToString(callSuper = true)
 | 
			
		||||
public class ToolCodegenTablePageReqVO extends PageParam {
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "表名称", example = "yudao", notes = "模糊匹配")
 | 
			
		||||
    private String tableName;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "表描述", example = "芋道", notes = "模糊匹配")
 | 
			
		||||
    private String tableComment;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "开始创建时间", example = "2020-10-24 00:00:00")
 | 
			
		||||
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
 | 
			
		||||
    private Date beginCreateTime;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "结束创建时间", example = "2020-10-24 23:59:59")
 | 
			
		||||
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
 | 
			
		||||
    private Date endCreateTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,26 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
 | 
			
		||||
import io.swagger.annotations.ApiModel;
 | 
			
		||||
import io.swagger.annotations.ApiModelProperty;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
import lombok.EqualsAndHashCode;
 | 
			
		||||
import lombok.ToString;
 | 
			
		||||
 | 
			
		||||
import java.util.Date;
 | 
			
		||||
 | 
			
		||||
@ApiModel("代码生成表定义 Response VO")
 | 
			
		||||
@Data
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@ToString(callSuper = true)
 | 
			
		||||
public class ToolCodegenTableRespVO extends ToolCodegenTableBaseVO {
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "编号", required = true, example = "1")
 | 
			
		||||
    private Long id;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "创建时间", required = true)
 | 
			
		||||
    private Date createTime;
 | 
			
		||||
 | 
			
		||||
    @ApiModelProperty(value = "更新时间", required = true)
 | 
			
		||||
    private Date updateTime;
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -1 +0,0 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.controller.codegen.vo;
 | 
			
		||||
@@ -1,21 +0,0 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.convert.codegen;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolInformationSchemaColumnDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolInformationSchemaTableDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface CodegenConvert {
 | 
			
		||||
 | 
			
		||||
    CodegenConvert INSTANCE = Mappers.getMapper(CodegenConvert.class);
 | 
			
		||||
 | 
			
		||||
    ToolCodegenTableDO convert(ToolInformationSchemaTableDO bean);
 | 
			
		||||
 | 
			
		||||
    List<ToolCodegenColumnDO> convertList(List<ToolInformationSchemaColumnDO> list);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,50 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.convert.codegen;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenColumnRespVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenDetailRespVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenTableRespVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolInformationSchemaColumnDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolInformationSchemaTableDO;
 | 
			
		||||
import org.mapstruct.Mapper;
 | 
			
		||||
import org.mapstruct.factory.Mappers;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface ToolCodegenConvert {
 | 
			
		||||
 | 
			
		||||
    ToolCodegenConvert INSTANCE = Mappers.getMapper(ToolCodegenConvert.class);
 | 
			
		||||
 | 
			
		||||
    // ========== ToolInformationSchemaTableDO 和 ToolInformationSchemaColumnDO 相关 ==========
 | 
			
		||||
 | 
			
		||||
    ToolCodegenTableDO convert(ToolInformationSchemaTableDO bean);
 | 
			
		||||
 | 
			
		||||
    List<ToolCodegenColumnDO> convertList(List<ToolInformationSchemaColumnDO> list);
 | 
			
		||||
 | 
			
		||||
    ToolCodegenTableRespVO convert(ToolInformationSchemaColumnDO bean);
 | 
			
		||||
 | 
			
		||||
    // ========== ToolCodegenTableDO 相关 ==========
 | 
			
		||||
 | 
			
		||||
//    List<ToolCodegenTableRespVO> convertList02(List<ToolCodegenTableDO> list);
 | 
			
		||||
 | 
			
		||||
    ToolCodegenTableRespVO convert(ToolCodegenTableDO bean);
 | 
			
		||||
 | 
			
		||||
    PageResult<ToolCodegenTableRespVO> convertPage(PageResult<ToolCodegenTableDO> page);
 | 
			
		||||
 | 
			
		||||
    // ========== ToolCodegenTableDO 相关 ==========
 | 
			
		||||
 | 
			
		||||
    List<ToolCodegenColumnRespVO> convertList02(List<ToolCodegenColumnDO> list);
 | 
			
		||||
 | 
			
		||||
    // ========== 其它 ==========
 | 
			
		||||
 | 
			
		||||
    default ToolCodegenDetailRespVO convert(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) {
 | 
			
		||||
        ToolCodegenDetailRespVO respVO = new ToolCodegenDetailRespVO();
 | 
			
		||||
        respVO.setTable(convert(table));
 | 
			
		||||
        respVO.setColumns(convertList02(columns));
 | 
			
		||||
        return respVO;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -10,7 +10,7 @@ import java.util.List;
 | 
			
		||||
@Mapper
 | 
			
		||||
public interface ToolCodegenColumnMapper extends BaseMapperX<ToolCodegenColumnDO> {
 | 
			
		||||
 | 
			
		||||
    default List<ToolCodegenColumnDO> selectByTableId(Long tableId) {
 | 
			
		||||
    default List<ToolCodegenColumnDO> selectListByTableId(Long tableId) {
 | 
			
		||||
        return selectList(new QueryWrapper<ToolCodegenColumnDO>()
 | 
			
		||||
                .eq("table_id", tableId)
 | 
			
		||||
                .orderByAsc("ordinal_position"));
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,9 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.dal.mysql.dao.coegen;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX;
 | 
			
		||||
import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenTablePageReqVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
 | 
			
		||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 | 
			
		||||
import org.apache.ibatis.annotations.Mapper;
 | 
			
		||||
@@ -12,4 +15,11 @@ public interface ToolCodegenTableMapper extends BaseMapperX<ToolCodegenTableDO>
 | 
			
		||||
        return selectOne(new QueryWrapper<ToolCodegenTableDO>().eq("table_name", tableName));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    default PageResult<ToolCodegenTableDO> selectPage(ToolCodegenTablePageReqVO pageReqVO) {
 | 
			
		||||
        return selectPage(pageReqVO, new QueryWrapperX<ToolCodegenTableDO>()
 | 
			
		||||
                .likeIfPresent("table_name", pageReqVO.getTableName())
 | 
			
		||||
                .likeIfPresent("table_comment", pageReqVO.getTableComment())
 | 
			
		||||
                .betweenIfPresent("create_time", pageReqVO.getBeginCreateTime(), pageReqVO.getEndCreateTime()));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -15,7 +15,7 @@ import lombok.EqualsAndHashCode;
 | 
			
		||||
 *
 | 
			
		||||
 * @author 芋道源码
 | 
			
		||||
 */
 | 
			
		||||
@TableName(value = "tool_codegen_table_column", autoResultMap = true)
 | 
			
		||||
@TableName(value = "tool_codegen_column", autoResultMap = true)
 | 
			
		||||
@Data
 | 
			
		||||
@Builder
 | 
			
		||||
@EqualsAndHashCode(callSuper = true)
 | 
			
		||||
@@ -60,7 +60,7 @@ public class ToolCodegenColumnDO extends BaseDO {
 | 
			
		||||
     */
 | 
			
		||||
    private Boolean autoIncrement;
 | 
			
		||||
    /**
 | 
			
		||||
     * 排序字段
 | 
			
		||||
     * 排序
 | 
			
		||||
     */
 | 
			
		||||
    private Integer ordinalPosition;
 | 
			
		||||
 | 
			
		||||
@@ -122,5 +122,4 @@ public class ToolCodegenColumnDO extends BaseDO {
 | 
			
		||||
     */
 | 
			
		||||
    private String htmlType;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,12 +28,10 @@ public class ToolCodegenTableDO extends BaseDO {
 | 
			
		||||
    /**
 | 
			
		||||
     * 表名称
 | 
			
		||||
     */
 | 
			
		||||
//    @NotBlank(message = "表名称不能为空")
 | 
			
		||||
    private String tableName;
 | 
			
		||||
    /**
 | 
			
		||||
     * 表描述
 | 
			
		||||
     */
 | 
			
		||||
//    @NotBlank(message = "表描述不能为空")
 | 
			
		||||
    private String tableComment;
 | 
			
		||||
    /**
 | 
			
		||||
     * 备注
 | 
			
		||||
@@ -47,31 +45,26 @@ public class ToolCodegenTableDO extends BaseDO {
 | 
			
		||||
     *
 | 
			
		||||
     * 例如说,infra、system、tool 等等
 | 
			
		||||
     */
 | 
			
		||||
//    @NotBlank(message = "模块名不能为空")
 | 
			
		||||
    private String moduleName;
 | 
			
		||||
    /**
 | 
			
		||||
     * 业务名,即二级目录
 | 
			
		||||
     *
 | 
			
		||||
     * 例如说,user、permission、dict 等等
 | 
			
		||||
     */
 | 
			
		||||
//    @NotBlank(message = "生成业务名不能为空")
 | 
			
		||||
    private String businessName;
 | 
			
		||||
    /**
 | 
			
		||||
     * 类名称(首字母大写)
 | 
			
		||||
     *
 | 
			
		||||
     * 例如说,SysUser、SysMenu、SysDictData 等等
 | 
			
		||||
     */
 | 
			
		||||
//    @NotBlank(message = "实体类名称不能为空")
 | 
			
		||||
    private String className;
 | 
			
		||||
    /**
 | 
			
		||||
     * 类描述
 | 
			
		||||
     */
 | 
			
		||||
//    @NotBlank(message = "生成功能名不能为空")
 | 
			
		||||
    private String classComment;
 | 
			
		||||
    /**
 | 
			
		||||
     * 作者
 | 
			
		||||
     */
 | 
			
		||||
//    @NotBlank(message = "作者不能为空")
 | 
			
		||||
    private String author;
 | 
			
		||||
 | 
			
		||||
    // ========== 生成相关字段 ==========
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,8 @@ public enum ToolCodegenTemplateTypeEnum {
 | 
			
		||||
 | 
			
		||||
    CRUD(1), // 基础 CRUD
 | 
			
		||||
    TREE(2), // 树形 CRUD
 | 
			
		||||
    SUB(3) // 子表 CRUD
 | 
			
		||||
    // TODO 主子表,暂时不考虑支持。原因是较为灵活,形态较多,很难评估。
 | 
			
		||||
    SUB(3) // 主子表 CRUD
 | 
			
		||||
    ;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
 
 | 
			
		||||
@@ -1,5 +1,12 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.service.codegen;
 | 
			
		||||
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenTablePageReqVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 代码生成 Service 接口
 | 
			
		||||
 *
 | 
			
		||||
@@ -15,4 +22,28 @@ public interface ToolCodegenService {
 | 
			
		||||
     */
 | 
			
		||||
    Long createCodegenTable(String tableName);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得表定义分页
 | 
			
		||||
     *
 | 
			
		||||
     * @param pageReqVO 分页条件
 | 
			
		||||
     * @return 表定义分页
 | 
			
		||||
     */
 | 
			
		||||
    PageResult<ToolCodegenTableDO> getCodeGenTablePage(ToolCodegenTablePageReqVO pageReqVO);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得表定义
 | 
			
		||||
     *
 | 
			
		||||
     * @param id 表编号
 | 
			
		||||
     * @return 表定义
 | 
			
		||||
     */
 | 
			
		||||
    ToolCodegenTableDO getCodeGenTablePage(Long id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 获得指定表的字段定义数组
 | 
			
		||||
     *
 | 
			
		||||
     * @param tableId 表编号
 | 
			
		||||
     * @return 字段定义数组
 | 
			
		||||
     */
 | 
			
		||||
    List<ToolCodegenColumnDO> getCodegenColumnListByTableId(Long tableId);
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package cn.iocoder.dashboard.modules.tool.service.codegen.impl;
 | 
			
		||||
import cn.hutool.core.map.MapUtil;
 | 
			
		||||
import cn.hutool.core.util.StrUtil;
 | 
			
		||||
import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.convert.codegen.CodegenConvert;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.convert.codegen.ToolCodegenConvert;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolInformationSchemaColumnDO;
 | 
			
		||||
@@ -113,7 +113,7 @@ public class ToolCodegenBuilder {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public ToolCodegenTableDO buildTable(ToolInformationSchemaTableDO schemaTable) {
 | 
			
		||||
        ToolCodegenTableDO table = CodegenConvert.INSTANCE.convert(schemaTable);
 | 
			
		||||
        ToolCodegenTableDO table = ToolCodegenConvert.INSTANCE.convert(schemaTable);
 | 
			
		||||
        initTableDefault(table);
 | 
			
		||||
        return table;
 | 
			
		||||
    }
 | 
			
		||||
@@ -136,7 +136,7 @@ public class ToolCodegenBuilder {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public List<ToolCodegenColumnDO> buildColumns(List<ToolInformationSchemaColumnDO> schemaColumns) {
 | 
			
		||||
        List<ToolCodegenColumnDO> columns = CodegenConvert.INSTANCE.convertList(schemaColumns);
 | 
			
		||||
        List<ToolCodegenColumnDO> columns = ToolCodegenConvert.INSTANCE.convertList(schemaColumns);
 | 
			
		||||
        columns.forEach(this::initColumnDefault);
 | 
			
		||||
        return columns;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -95,12 +95,12 @@ public class ToolCodegenEngine {
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/controller/vo/baseVO.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/controller/vo/createReqVO.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/controller/vo/updateReqVO.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/controller/vo/respVO.vm").render(bindingMap);
 | 
			
		||||
        String result = templateEngine.getTemplate("codegen/controller/vo/respVO.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/convert/convert.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/enums/errorcode.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/service/service.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/service/serviceImpl.vm").render(bindingMap);
 | 
			
		||||
        String result = templateEngine.getTemplate("codegen/controller/controller.vm").render(bindingMap);
 | 
			
		||||
//        String result = templateEngine.getTemplate("codegen/controller/controller.vm").render(bindingMap);
 | 
			
		||||
        System.out.println(result);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,8 @@
 | 
			
		||||
package cn.iocoder.dashboard.modules.tool.service.codegen.impl;
 | 
			
		||||
 | 
			
		||||
import cn.hutool.core.collection.CollUtil;
 | 
			
		||||
import cn.iocoder.dashboard.common.pojo.PageResult;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.controller.codegen.vo.ToolCodegenTablePageReqVO;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dao.coegen.ToolCodegenColumnMapper;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dao.coegen.ToolCodegenTableMapper;
 | 
			
		||||
import cn.iocoder.dashboard.modules.tool.dal.mysql.dao.coegen.ToolInformationSchemaColumnMapper;
 | 
			
		||||
@@ -67,4 +69,19 @@ public class ToolCodegenServiceImpl implements ToolCodegenService {
 | 
			
		||||
        return table.getId();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public PageResult<ToolCodegenTableDO> getCodeGenTablePage(ToolCodegenTablePageReqVO pageReqVO) {
 | 
			
		||||
        return codegenTableMapper.selectPage(pageReqVO);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public ToolCodegenTableDO getCodeGenTablePage(Long id) {
 | 
			
		||||
        return codegenTableMapper.selectById(id);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public List<ToolCodegenColumnDO> getCodegenColumnListByTableId(Long tableId) {
 | 
			
		||||
        return codegenColumnMapper.selectListByTableId(tableId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user