Commit 13f37ce0cc4915433b051ea52da940217af88472

Authored by YunaiV
1 parent 18b6dfa0

分页 request vo 的编写

增加 example 字段,用于生成 swagger 示例
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&lt;${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
... ...