feat: 代码生成,支持 springdoc

This commit is contained in:
dgmico 2023-07-23 16:44:58 +08:00
parent 2b6b0e3198
commit 4feeb5071d
5 changed files with 96 additions and 18 deletions

View File

@ -61,6 +61,25 @@ public class EntityConfig {
*/
private boolean withSwagger;
/**
* Swagger 版本
*/
private SwaggerVersion swaggerVersion;
public enum SwaggerVersion {
FOX("FOX"),
DOC("DOC");
private final String name;
SwaggerVersion(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
}
/**
* 实体类数据源
*/
@ -168,6 +187,23 @@ public class EntityConfig {
*/
public EntityConfig setWithSwagger(boolean withSwagger) {
this.withSwagger = withSwagger;
this.swaggerVersion = SwaggerVersion.FOX;
return this;
}
/**
* Swagger 版本
*/
public SwaggerVersion getSwaggerVersion() {
return swaggerVersion;
}
/**
* 设置 Swagger 版本
*/
public EntityConfig setSwaggerVersion(SwaggerVersion swaggerVersion) {
this.swaggerVersion = swaggerVersion;
this.withSwagger = swaggerVersion != null;
return this;
}

View File

@ -898,6 +898,13 @@ public class GlobalConfig {
return getEntityConfig().isWithSwagger();
}
/**
* @see EntityConfig#getSwaggerVersion()
*/
public EntityConfig.SwaggerVersion getSwaggerVersion() {
return getEntityConfig().getSwaggerVersion();
}
/**
* @see EntityConfig#setWithSwagger(boolean)
*/

View File

@ -70,6 +70,7 @@ public class ControllerGenerator implements IGenerator {
params.put("controllerConfig", controllerConfig);
params.put("javadocConfig", globalConfig.getJavadocConfig());
params.put("withSwagger", globalConfig.isEntityWithSwagger());
params.put("swaggerVersion", globalConfig.getSwaggerVersion());
globalConfig.getTemplateConfig().getTemplate().generate(params, templatePath, controllerJavaFile);

View File

@ -23,12 +23,16 @@ import org.springframework.stereotype.Controller;
#if(controllerConfig.superClass != null)
import #(controllerConfig.buildSuperClassImport());
#end
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
#end
#if(withSwagger && swaggerVersion.getName() == "DOC")
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
#end
import java.io.Serializable;
import java.util.List;
@ -43,9 +47,12 @@ import java.util.List;
#else
@Controller
#end
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@Api("#(tableComment)接口")
#end
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Tag(name = "#(tableComment)接口")
#end
@RequestMapping("/#(firstCharToLowerCase(entityClassName))")
public class #(table.buildControllerClassName()) #if(controllerConfig.superClass)extends #(controllerConfig.buildSuperClassName()) #end {
@ -59,10 +66,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass
* @return {@code true} 添加成功,{@code false} 添加失败
*/
@PostMapping("save")
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiOperation("保存#(tableComment)")
#end
public boolean save(@RequestBody #if(withSwagger)@ApiParam("#(tableComment)") #end #(entityClassName) #(entityVarName)) {
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Operation(description="保存#(tableComment)")
#end
public boolean save(@RequestBody #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)")#end #(entityClassName) #(entityVarName)) {
return #(serviceVarName).save(#(entityVarName));
}
@ -73,10 +83,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass
* @return {@code true} 删除成功,{@code false} 删除失败
*/
@DeleteMapping("remove/{id}")
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiOperation("根据主键#(tableComment)")
#end
public boolean remove(@PathVariable #if(withSwagger)@ApiParam("#(tableComment)主键") #end Serializable id) {
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Operation(description="根据主键#(tableComment)")
#end
public boolean remove(@PathVariable #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)主键") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)主键")#end Serializable id) {
return #(serviceVarName).removeById(id);
}
@ -87,10 +100,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass
* @return {@code true} 更新成功,{@code false} 更新失败
*/
@PutMapping("update")
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiOperation("根据主键更新#(tableComment)")
#end
public boolean update(@RequestBody #if(withSwagger)@ApiParam("#(tableComment)主键") #end #(entityClassName) #(entityVarName)) {
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Operation(description="根据主键更新#(tableComment)")
#end
public boolean update(@RequestBody #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)主键") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)主键")#end#(entityClassName) #(entityVarName)) {
return #(serviceVarName).updateById(#(entityVarName));
}
@ -100,9 +116,12 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass
* @return 所有数据
*/
@GetMapping("list")
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiOperation("查询所有#(tableComment)")
#end
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Operation(description="查询所有#(tableComment)")
#end
public List<#(entityClassName)> list() {
return #(serviceVarName).list();
}
@ -114,10 +133,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass
* @return #(tableComment)详情
*/
@GetMapping("getInfo/{id}")
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiOperation("根据主键获取#(tableComment)")
#end
public #(entityClassName) getInfo(@PathVariable #if(withSwagger)@ApiParam("#(tableComment)主键") #end Serializable id) {
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Operation(description="根据主键获取#(tableComment)")
#end
public #(entityClassName) getInfo(@PathVariable #if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("#(tableComment)主键") #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="#(tableComment)主键")#end#end Serializable id) {
return #(serviceVarName).getById(id);
}
@ -128,10 +150,13 @@ public class #(table.buildControllerClassName()) #if(controllerConfig.superClass
* @return 分页对象
*/
@GetMapping("page")
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiOperation("分页查询#(tableComment)")
#end
public Page<#(entityClassName)> page(#if(withSwagger)@ApiParam("分页信息") #end Page<#(entityClassName)> page) {
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Operation(description="分页查询#(tableComment)")
#end
public Page<#(entityClassName)> page(#if(withSwagger && swaggerVersion.getName() == "FOX")@ApiParam("分页信息") #end #if(withSwagger && swaggerVersion.getName() == "DOC")@Parameter(description="分页信息")#end Page<#(entityClassName)> page) {
return #(serviceVarName).page(page);
}

View File

@ -1,14 +1,18 @@
#set(withLombok = entityConfig.isWithLombok())
#set(withSwagger = entityConfig.isWithSwagger())
#set(swaggerVersion = entityConfig.getSwaggerVersion())
package #(packageConfig.entityPackage);
#for(importClass : table.buildImports())
import #(importClass);
#end
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
#end
#if(withSwagger && swaggerVersion.getName() == "DOC")
import io.swagger.v3.oas.annotations.media.Schema;
#end
#if(withLombok)
import lombok.AllArgsConstructor;
import lombok.Builder;
@ -28,13 +32,15 @@ import lombok.NoArgsConstructor;
@NoArgsConstructor
@AllArgsConstructor
#end
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiModel("#(table.getComment())")
#end
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Schema(description = "#(table.getComment())")
#end
#(table.buildTableAnnotation())
public class #(table.buildEntityClassName())#(table.buildExtends())#(table.buildImplements()) {
#for(column : table.columns)
#set(comment = javadocConfig.formatColumnComment(column.comment))
#if(isNotBlank(comment))
/**
@ -45,9 +51,12 @@ public class #(table.buildEntityClassName())#(table.buildExtends())#(table.build
#if(isNotBlank(annotations))
#(annotations)
#end
#if(withSwagger)
#if(withSwagger && swaggerVersion.getName() == "FOX")
@ApiModelProperty("#(column.comment)")
#end
#if(withSwagger && swaggerVersion.getName() == "DOC")
@Schema(description = "#(column.comment)")
#end
private #(column.propertySimpleType) #(column.property);
#end