Commit 13f37ce0cc4915433b051ea52da940217af88472
1 parent
18b6dfa0
分页 request vo 的编写
增加 example 字段,用于生成 swagger 示例
Showing
9 changed files
with
137 additions
and
20 deletions
src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigExportReqVO.java
| ... | ... | @@ -22,11 +22,11 @@ public class InfConfigExportReqVO { |
| 22 | 22 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") |
| 23 | 23 | private Integer type; |
| 24 | 24 | |
| 25 | - @ApiModelProperty(value = "开始时间", example = "2020-10-24") | |
| 25 | + @ApiModelProperty(value = "开始时间", example = "2020-10-24 00:00:00") | |
| 26 | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | 27 | private Date beginTime; |
| 28 | 28 | |
| 29 | - @ApiModelProperty(value = "结束时间", example = "2020-10-24") | |
| 29 | + @ApiModelProperty(value = "结束时间", example = "2020-10-24 23:59:59") | |
| 30 | 30 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 31 | 31 | private Date endTime; |
| 32 | 32 | ... | ... |
src/main/java/cn/iocoder/dashboard/modules/infra/controller/config/vo/InfConfigPageReqVO.java
| ... | ... | @@ -25,11 +25,11 @@ public class InfConfigPageReqVO extends PageParam { |
| 25 | 25 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") |
| 26 | 26 | private Integer type; |
| 27 | 27 | |
| 28 | - @ApiModelProperty(value = "开始时间", example = "2020-10-24") | |
| 28 | + @ApiModelProperty(value = "开始时间", example = "2020-10-24 00:00:00") | |
| 29 | 29 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 30 | 30 | private Date beginTime; |
| 31 | 31 | |
| 32 | - @ApiModelProperty(value = "结束时间", example = "2020-10-24") | |
| 32 | + @ApiModelProperty(value = "结束时间", example = "2020-10-24 23:59:59") | |
| 33 | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 34 | 34 | private Date endTime; |
| 35 | 35 | ... | ... |
src/main/java/cn/iocoder/dashboard/modules/tool/dal/mysql/dataobject/codegen/ToolCodegenColumnDO.java
| ... | ... | @@ -83,6 +83,10 @@ public class ToolCodegenColumnDO extends BaseDO { |
| 83 | 83 | * 关联 {@link SysDictTypeDO#getType()} |
| 84 | 84 | */ |
| 85 | 85 | private String dictType; |
| 86 | + /** | |
| 87 | + * 数据示例,主要用于生成 Swagger 注解的 example 字段 | |
| 88 | + */ | |
| 89 | + private String example; | |
| 86 | 90 | |
| 87 | 91 | // ========== CRUD 相关字段 ========== |
| 88 | 92 | ... | ... |
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenBuilder.java
| ... | ... | @@ -48,6 +48,8 @@ public class ToolCodegenBuilder { |
| 48 | 48 | .put("image", ToolCodegenColumnHtmlTypeEnum.UPLOAD_IMAGE) |
| 49 | 49 | .put("file", ToolCodegenColumnHtmlTypeEnum.UPLOAD_FILE) |
| 50 | 50 | .put("content", ToolCodegenColumnHtmlTypeEnum.EDITOR) |
| 51 | + .put("time", ToolCodegenColumnHtmlTypeEnum.DATETIME) | |
| 52 | + .put("date", ToolCodegenColumnHtmlTypeEnum.DATETIME) | |
| 51 | 53 | .build(); |
| 52 | 54 | |
| 53 | 55 | /** | ... | ... |
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java
| ... | ... | @@ -3,12 +3,13 @@ package cn.iocoder.dashboard.modules.tool.service.codegen.impl; |
| 3 | 3 | import cn.hutool.extra.template.TemplateConfig; |
| 4 | 4 | import cn.hutool.extra.template.TemplateEngine; |
| 5 | 5 | import cn.hutool.extra.template.TemplateUtil; |
| 6 | +import cn.iocoder.dashboard.common.pojo.PageParam; | |
| 6 | 7 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 7 | 8 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 9 | +import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX; | |
| 8 | 10 | import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; |
| 9 | 11 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO; |
| 10 | 12 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO; |
| 11 | -import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
| 12 | 13 | import org.springframework.stereotype.Component; |
| 13 | 14 | |
| 14 | 15 | import java.util.HashMap; |
| ... | ... | @@ -49,11 +50,13 @@ public class ToolCodegenEngine { |
| 49 | 50 | globalBindingMap.put("basePackage", "cn.iocoder.dashboard.modules"); // TODO 基础包 |
| 50 | 51 | // 全局 Java Bean |
| 51 | 52 | globalBindingMap.put("pageResultClassName", PageResult.class.getName()); |
| 53 | + // VO 类,独有字段 | |
| 54 | + globalBindingMap.put("pageParamClassName", PageParam.class.getName()); | |
| 52 | 55 | // DO 类,独有字段 |
| 53 | 56 | globalBindingMap.put("baseDOFields", ToolCodegenBuilder.BASE_DO_FIELDS); |
| 54 | 57 | globalBindingMap.put("baseDOClassName", BaseDO.class.getName()); |
| 55 | 58 | globalBindingMap.put("QueryWrapperClassName", QueryWrapperX.class.getName()); |
| 56 | - globalBindingMap.put("BaseMapperClassName", BaseMapper.class.getName()); | |
| 59 | + globalBindingMap.put("BaseMapperClassName", BaseMapperX.class.getName()); | |
| 57 | 60 | } |
| 58 | 61 | |
| 59 | 62 | public void execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) { |
| ... | ... | @@ -64,7 +67,8 @@ public class ToolCodegenEngine { |
| 64 | 67 | bindingMap.putAll(globalBindingMap); |
| 65 | 68 | // 执行生成 |
| 66 | 69 | // String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); |
| 67 | - String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap); | |
| 70 | +// String result = templateEngine.getTemplate("codegen/dal/mapper.vm").render(bindingMap); | |
| 71 | + String result = templateEngine.getTemplate("codegen/controller/vo/pageReqVO.vm").render(bindingMap); | |
| 68 | 72 | System.out.println(result); |
| 69 | 73 | } |
| 70 | 74 | ... | ... |
src/main/resources/codegen/controller/controller.vm
0 → 100644
| 1 | +import org.springframework.web.bind.annotation.*; | |
| 2 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 3 | +import io.swagger.annotations.*; | |
| 4 | +import javax.validation.constraints.*; | |
| 5 | +import javax.validation.*; | |
| 6 | +import java.util.*; | |
| 7 | + | |
| 8 | +import org.springframework.validation.annotation.Validated; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * ${class.description} Controller | |
| 12 | + */ | |
| 13 | +@RestController | |
| 14 | +@RequestMapping("/${class.classNameLowerUnderscore}") | |
| 15 | +@Api(tags = "${class.description}") | |
| 16 | +@Validated | |
| 17 | +public class ${class.className}Controller { | |
| 18 | + | |
| 19 | + @Autowired | |
| 20 | + private ${class.className}Service ${class.classNameVar}Service; | |
| 21 | + | |
| 22 | + @PostMapping("/create") | |
| 23 | + @ApiOperation("创建${class.description}") | |
| 24 | + public CommonResult<Integer> create${class.className}(@Valid ${class.className}CreateReqVO createVO) { | |
| 25 | + return success(${class.classNameVar}Service.create${class.className}(createVO)); | |
| 26 | + } | |
| 27 | + | |
| 28 | + @PostMapping("/update") | |
| 29 | + @ApiOperation("更新${class.description}") | |
| 30 | + public CommonResult<Boolean> update${class.className}(@Valid ${class.className}UpdateReqVO updateVO) { | |
| 31 | + ${class.classNameVar}Service.update${class.className}(updateVO); | |
| 32 | + return success(true); | |
| 33 | + } | |
| 34 | + | |
| 35 | + @PostMapping("/delete") | |
| 36 | + @ApiOperation("删除${class.description}") | |
| 37 | + @ApiImplicitParam(name = "${class.classNameVar}Id", value = "${class.description}编号", required = true) | |
| 38 | + public CommonResult<Boolean> delete${class.className}(@RequestParam("${class.classNameVar}Id") Integer ${class.classNameVar}Id) { | |
| 39 | + ${class.classNameVar}Service.delete${class.className}(${class.classNameVar}Id); | |
| 40 | + return success(true); | |
| 41 | + } | |
| 42 | + | |
| 43 | + @GetMapping("/get") | |
| 44 | + @ApiOperation("获得${class.description}") | |
| 45 | + @ApiImplicitParam(name = "${class.classNameVar}Id", value = "${class.description}编号", required = true) | |
| 46 | + public CommonResult<${class.className}RespVO> get${class.className}(@RequestParam("${class.classNameVar}Id") Integer ${class.classNameVar}Id) { | |
| 47 | + return success(${class.classNameVar}Service.get${class.className}(${class.classNameVar}Id)); | |
| 48 | + } | |
| 49 | + | |
| 50 | + @GetMapping("/list") | |
| 51 | + @ApiOperation("获得${class.description}列表") | |
| 52 | + @ApiImplicitParam(name = "${class.classNameVar}Ids", value = "${class.description}编号列表", required = true) | |
| 53 | + public CommonResult<List<${class.className}RespVO>> list${class.className}s(@RequestParam("${class.classNameVar}Ids") List<Integer> ${class.classNameVar}Ids) { | |
| 54 | + return success(${class.classNameVar}Service.list${class.className}s(${class.classNameVar}Ids)); | |
| 55 | + } | |
| 56 | + | |
| 57 | + @GetMapping("/page") | |
| 58 | + @ApiOperation("获得${class.description}分页") | |
| 59 | + public CommonResult<PageResult<${class.className}RespVO>> page${class.className}(${class.className}PageReqVO pageVO) { | |
| 60 | + return success(${class.classNameVar}Service.page${class.className}(pageVO)); | |
| 61 | + } | |
| 62 | + | |
| 63 | +} | ... | ... |
src/main/resources/codegen/controller/vo/pageReqVO.vm
0 → 100644
| 1 | +package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | |
| 2 | + | |
| 3 | +import lombok.*; | |
| 4 | +import java.util.*; | |
| 5 | +import javax.validation.constraints.*; | |
| 6 | +import io.swagger.annotations.*; | |
| 7 | +import ${pageParamClassName}; | |
| 8 | + | |
| 9 | +@ApiModel("${table.classComment}分页 Request VO") | |
| 10 | +@Data | |
| 11 | +@EqualsAndHashCode(callSuper = true) | |
| 12 | +@ToString(callSuper = true) | |
| 13 | +@Builder | |
| 14 | +@NoArgsConstructor | |
| 15 | +@AllArgsConstructor | |
| 16 | +public class ${table.className}PageReqVO extends PageParam { | |
| 17 | + | |
| 18 | +#foreach ($column in $columns) | |
| 19 | +#set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | |
| 20 | +#if (${column.listOperation})##查询操作 | |
| 21 | +#if (${column.listOperationCondition} == "BETWEEN")## Between 的时候 | |
| 22 | + @ApiModelProperty(value = "开始${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) | |
| 23 | +#if (${column.javaType} == "Date")## 时间类型 | |
| 24 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 25 | +#end | |
| 26 | + private ${column.javaType} begin${JavaField}; | |
| 27 | + | |
| 28 | + @ApiModelProperty(value = "结束${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) | |
| 29 | +#if (${column.javaType} == "Date")## 时间类型 | |
| 30 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 31 | +#end | |
| 32 | + private ${column.javaType} end${JavaField}; | |
| 33 | +#else | |
| 34 | +#if (${column.javaType} == "Date")## 时间类型 | |
| 35 | + @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | |
| 36 | +#end | |
| 37 | + @ApiModelProperty(value = "${column.columnComment}"#if ("$!column.example" != ""), example = "${column.example}"#end) | |
| 38 | + private ${column.javaType} ${column.javaField}; | |
| 39 | +#end | |
| 40 | + | |
| 41 | +#end | |
| 42 | +#end | |
| 43 | +} | ... | ... |
src/main/resources/codegen/dal/do.vm
| 1 | 1 | package ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}; |
| 2 | 2 | |
| 3 | -import com.baomidou.mybatisplus.annotation.*; | |
| 4 | -import ${baseDOClassName}; | |
| 5 | 3 | import lombok.*; |
| 6 | 4 | import java.util.*; |
| 5 | +import com.baomidou.mybatisplus.annotation.*; | |
| 6 | +import ${baseDOClassName}; | |
| 7 | 7 | |
| 8 | 8 | /** |
| 9 | 9 | * ${table.classComment} DO |
| ... | ... | @@ -24,7 +24,7 @@ public class ${table.className}DO extends BaseDO { |
| 24 | 24 | /** |
| 25 | 25 | * ${column.columnComment} |
| 26 | 26 | */ |
| 27 | -#if ($column.dictType != "")##处理枚举值 | |
| 27 | +#if ("$!column.dictType" != "")##处理枚举值 | |
| 28 | 28 | // TODO 枚举 ${column.dictType} |
| 29 | 29 | #end |
| 30 | 30 | #if (${column.primaryKey} && ${column.javaType} != 'String')##处理主键 + 非 String 的情况 | ... | ... |
src/main/resources/codegen/dal/mapper.vm
| 1 | 1 | package ${basePackage}.${table.moduleName}.dal.mysql.dao.${table.businessName}; |
| 2 | 2 | |
| 3 | -import com.baomidou.mybatisplus.core.mapper.BaseMapper; | |
| 4 | - | |
| 5 | 3 | import ${pageResultClassName}; |
| 6 | 4 | import ${QueryWrapperClassName}; |
| 7 | 5 | import ${BaseMapperClassName}; |
| 8 | -import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}DO; | |
| 6 | +import ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}.${table.className}DO; | |
| 9 | 7 | import org.apache.ibatis.annotations.Mapper; |
| 10 | 8 | |
| 11 | 9 | @Mapper |
| ... | ... | @@ -17,22 +15,25 @@ public interface ${table.className}Mapper extends BaseMapperX<${table.className} |
| 17 | 15 | #if (${column.listOperation}) |
| 18 | 16 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 |
| 19 | 17 | #if (${column.listOperationCondition} == "=")##情况一,= 的时候 |
| 20 | - .eqIfPresent("${column.column_name}", reqVO.get${JavaField}()) | |
| 18 | + .eqIfPresent("${column.columnName}", reqVO.get${JavaField}()) | |
| 21 | 19 | #end |
| 22 | 20 | #if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 |
| 23 | - .neIfPresent("${column.column_name}", reqVO.get${JavaField}()) | |
| 21 | + .neIfPresent("${column.columnName}", reqVO.get${JavaField}()) | |
| 24 | 22 | #end |
| 25 | 23 | #if (${column.listOperationCondition} == ">")##情况三,> 的时候 |
| 26 | - .gtIfPresent("${column.column_name}", reqVO.get${JavaField}()) | |
| 24 | + .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) | |
| 27 | 25 | #end |
| 28 | 26 | #if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 |
| 29 | - .geIfPresent("${column.column_name}", reqVO.get${JavaField}()) | |
| 27 | + .geIfPresent("${column.columnName}", reqVO.get${JavaField}()) | |
| 30 | 28 | #end |
| 31 | 29 | #if (${column.listOperationCondition} == "<")##情况五,< 的时候 |
| 32 | - .gtIfPresent("${column.column_name}", reqVO.get${JavaField}()) | |
| 30 | + .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) | |
| 31 | +#end | |
| 32 | +#if (${column.listOperationCondition} == "LIKE")##情况七,Like 的时候 | |
| 33 | + .likeIfPresent("${column.columnName}", reqVO.get${JavaField}()) | |
| 33 | 34 | #end |
| 34 | -#if (${column.listOperationCondition} == "<=")##情况六,<= 的时候 | |
| 35 | - .geIfPresent("${column.column_name}", reqVO.get${JavaField}()) | |
| 35 | +#if (${column.listOperationCondition} == "BETWEEN")##情况八,Between 的时候 | |
| 36 | + .betweenIfPresent("${column.columnName}", reqVO.getBegin${JavaField}(), reqVO.getEnd${JavaField}()) | |
| 36 | 37 | #end |
| 37 | 38 | #end |
| 38 | 39 | #end | ... | ... |