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,11 +22,11 @@ public class InfConfigExportReqVO { | ||
| 22 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") | 22 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") |
| 23 | private Integer type; | 23 | private Integer type; |
| 24 | 24 | ||
| 25 | - @ApiModelProperty(value = "开始时间", example = "2020-10-24") | 25 | + @ApiModelProperty(value = "开始时间", example = "2020-10-24 00:00:00") |
| 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 26 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 27 | private Date beginTime; | 27 | private Date beginTime; |
| 28 | 28 | ||
| 29 | - @ApiModelProperty(value = "结束时间", example = "2020-10-24") | 29 | + @ApiModelProperty(value = "结束时间", example = "2020-10-24 23:59:59") |
| 30 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 30 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 31 | private Date endTime; | 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,11 +25,11 @@ public class InfConfigPageReqVO extends PageParam { | ||
| 25 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") | 25 | @ApiModelProperty(value = "参数类型", example = "1", notes = "参见 SysConfigTypeEnum 枚举") |
| 26 | private Integer type; | 26 | private Integer type; |
| 27 | 27 | ||
| 28 | - @ApiModelProperty(value = "开始时间", example = "2020-10-24") | 28 | + @ApiModelProperty(value = "开始时间", example = "2020-10-24 00:00:00") |
| 29 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 29 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 30 | private Date beginTime; | 30 | private Date beginTime; |
| 31 | 31 | ||
| 32 | - @ApiModelProperty(value = "结束时间", example = "2020-10-24") | 32 | + @ApiModelProperty(value = "结束时间", example = "2020-10-24 23:59:59") |
| 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) | 33 | @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) |
| 34 | private Date endTime; | 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,6 +83,10 @@ public class ToolCodegenColumnDO extends BaseDO { | ||
| 83 | * 关联 {@link SysDictTypeDO#getType()} | 83 | * 关联 {@link SysDictTypeDO#getType()} |
| 84 | */ | 84 | */ |
| 85 | private String dictType; | 85 | private String dictType; |
| 86 | + /** | ||
| 87 | + * 数据示例,主要用于生成 Swagger 注解的 example 字段 | ||
| 88 | + */ | ||
| 89 | + private String example; | ||
| 86 | 90 | ||
| 87 | // ========== CRUD 相关字段 ========== | 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,6 +48,8 @@ public class ToolCodegenBuilder { | ||
| 48 | .put("image", ToolCodegenColumnHtmlTypeEnum.UPLOAD_IMAGE) | 48 | .put("image", ToolCodegenColumnHtmlTypeEnum.UPLOAD_IMAGE) |
| 49 | .put("file", ToolCodegenColumnHtmlTypeEnum.UPLOAD_FILE) | 49 | .put("file", ToolCodegenColumnHtmlTypeEnum.UPLOAD_FILE) |
| 50 | .put("content", ToolCodegenColumnHtmlTypeEnum.EDITOR) | 50 | .put("content", ToolCodegenColumnHtmlTypeEnum.EDITOR) |
| 51 | + .put("time", ToolCodegenColumnHtmlTypeEnum.DATETIME) | ||
| 52 | + .put("date", ToolCodegenColumnHtmlTypeEnum.DATETIME) | ||
| 51 | .build(); | 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,12 +3,13 @@ package cn.iocoder.dashboard.modules.tool.service.codegen.impl; | ||
| 3 | import cn.hutool.extra.template.TemplateConfig; | 3 | import cn.hutool.extra.template.TemplateConfig; |
| 4 | import cn.hutool.extra.template.TemplateEngine; | 4 | import cn.hutool.extra.template.TemplateEngine; |
| 5 | import cn.hutool.extra.template.TemplateUtil; | 5 | import cn.hutool.extra.template.TemplateUtil; |
| 6 | +import cn.iocoder.dashboard.common.pojo.PageParam; | ||
| 6 | import cn.iocoder.dashboard.common.pojo.PageResult; | 7 | import cn.iocoder.dashboard.common.pojo.PageResult; |
| 7 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; | 8 | import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; |
| 9 | +import cn.iocoder.dashboard.framework.mybatis.core.mapper.BaseMapperX; | ||
| 8 | import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; | 10 | import cn.iocoder.dashboard.framework.mybatis.core.query.QueryWrapperX; |
| 9 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO; | 11 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenColumnDO; |
| 10 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO; | 12 | import cn.iocoder.dashboard.modules.tool.dal.mysql.dataobject.codegen.ToolCodegenTableDO; |
| 11 | -import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
| 12 | import org.springframework.stereotype.Component; | 13 | import org.springframework.stereotype.Component; |
| 13 | 14 | ||
| 14 | import java.util.HashMap; | 15 | import java.util.HashMap; |
| @@ -49,11 +50,13 @@ public class ToolCodegenEngine { | @@ -49,11 +50,13 @@ public class ToolCodegenEngine { | ||
| 49 | globalBindingMap.put("basePackage", "cn.iocoder.dashboard.modules"); // TODO 基础包 | 50 | globalBindingMap.put("basePackage", "cn.iocoder.dashboard.modules"); // TODO 基础包 |
| 50 | // 全局 Java Bean | 51 | // 全局 Java Bean |
| 51 | globalBindingMap.put("pageResultClassName", PageResult.class.getName()); | 52 | globalBindingMap.put("pageResultClassName", PageResult.class.getName()); |
| 53 | + // VO 类,独有字段 | ||
| 54 | + globalBindingMap.put("pageParamClassName", PageParam.class.getName()); | ||
| 52 | // DO 类,独有字段 | 55 | // DO 类,独有字段 |
| 53 | globalBindingMap.put("baseDOFields", ToolCodegenBuilder.BASE_DO_FIELDS); | 56 | globalBindingMap.put("baseDOFields", ToolCodegenBuilder.BASE_DO_FIELDS); |
| 54 | globalBindingMap.put("baseDOClassName", BaseDO.class.getName()); | 57 | globalBindingMap.put("baseDOClassName", BaseDO.class.getName()); |
| 55 | globalBindingMap.put("QueryWrapperClassName", QueryWrapperX.class.getName()); | 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 | public void execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) { | 62 | public void execute(ToolCodegenTableDO table, List<ToolCodegenColumnDO> columns) { |
| @@ -64,7 +67,8 @@ public class ToolCodegenEngine { | @@ -64,7 +67,8 @@ public class ToolCodegenEngine { | ||
| 64 | bindingMap.putAll(globalBindingMap); | 67 | bindingMap.putAll(globalBindingMap); |
| 65 | // 执行生成 | 68 | // 执行生成 |
| 66 | // String result = templateEngine.getTemplate("codegen/dal/do.vm").render(bindingMap); | 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 | System.out.println(result); | 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 | package ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}; | 1 | package ${basePackage}.${table.moduleName}.dal.mysql.dataobject.${table.businessName}; |
| 2 | 2 | ||
| 3 | -import com.baomidou.mybatisplus.annotation.*; | ||
| 4 | -import ${baseDOClassName}; | ||
| 5 | import lombok.*; | 3 | import lombok.*; |
| 6 | import java.util.*; | 4 | import java.util.*; |
| 5 | +import com.baomidou.mybatisplus.annotation.*; | ||
| 6 | +import ${baseDOClassName}; | ||
| 7 | 7 | ||
| 8 | /** | 8 | /** |
| 9 | * ${table.classComment} DO | 9 | * ${table.classComment} DO |
| @@ -24,7 +24,7 @@ public class ${table.className}DO extends BaseDO { | @@ -24,7 +24,7 @@ public class ${table.className}DO extends BaseDO { | ||
| 24 | /** | 24 | /** |
| 25 | * ${column.columnComment} | 25 | * ${column.columnComment} |
| 26 | */ | 26 | */ |
| 27 | -#if ($column.dictType != "")##处理枚举值 | 27 | +#if ("$!column.dictType" != "")##处理枚举值 |
| 28 | // TODO 枚举 ${column.dictType} | 28 | // TODO 枚举 ${column.dictType} |
| 29 | #end | 29 | #end |
| 30 | #if (${column.primaryKey} && ${column.javaType} != 'String')##处理主键 + 非 String 的情况 | 30 | #if (${column.primaryKey} && ${column.javaType} != 'String')##处理主键 + 非 String 的情况 |
src/main/resources/codegen/dal/mapper.vm
| 1 | package ${basePackage}.${table.moduleName}.dal.mysql.dao.${table.businessName}; | 1 | package ${basePackage}.${table.moduleName}.dal.mysql.dao.${table.businessName}; |
| 2 | 2 | ||
| 3 | -import com.baomidou.mybatisplus.core.mapper.BaseMapper; | ||
| 4 | - | ||
| 5 | import ${pageResultClassName}; | 3 | import ${pageResultClassName}; |
| 6 | import ${QueryWrapperClassName}; | 4 | import ${QueryWrapperClassName}; |
| 7 | import ${BaseMapperClassName}; | 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 | import org.apache.ibatis.annotations.Mapper; | 7 | import org.apache.ibatis.annotations.Mapper; |
| 10 | 8 | ||
| 11 | @Mapper | 9 | @Mapper |
| @@ -17,22 +15,25 @@ public interface ${table.className}Mapper extends BaseMapperX<${table.className} | @@ -17,22 +15,25 @@ public interface ${table.className}Mapper extends BaseMapperX<${table.className} | ||
| 17 | #if (${column.listOperation}) | 15 | #if (${column.listOperation}) |
| 18 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 | 16 | #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写 |
| 19 | #if (${column.listOperationCondition} == "=")##情况一,= 的时候 | 17 | #if (${column.listOperationCondition} == "=")##情况一,= 的时候 |
| 20 | - .eqIfPresent("${column.column_name}", reqVO.get${JavaField}()) | 18 | + .eqIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 21 | #end | 19 | #end |
| 22 | #if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 | 20 | #if (${column.listOperationCondition} == "!=")##情况二,!= 的时候 |
| 23 | - .neIfPresent("${column.column_name}", reqVO.get${JavaField}()) | 21 | + .neIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 24 | #end | 22 | #end |
| 25 | #if (${column.listOperationCondition} == ">")##情况三,> 的时候 | 23 | #if (${column.listOperationCondition} == ">")##情况三,> 的时候 |
| 26 | - .gtIfPresent("${column.column_name}", reqVO.get${JavaField}()) | 24 | + .gtIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 27 | #end | 25 | #end |
| 28 | #if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 | 26 | #if (${column.listOperationCondition} == ">=")##情况四,>= 的时候 |
| 29 | - .geIfPresent("${column.column_name}", reqVO.get${JavaField}()) | 27 | + .geIfPresent("${column.columnName}", reqVO.get${JavaField}()) |
| 30 | #end | 28 | #end |
| 31 | #if (${column.listOperationCondition} == "<")##情况五,< 的时候 | 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 | #end | 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 | #end | 37 | #end |
| 37 | #end | 38 | #end |
| 38 | #end | 39 | #end |