先看效果
之前版本http://localhost:8082/swagger-ui.html
新版本 访问地址 http://localhost:8082/doc.html
1: 通过idea创建springBoot项目 此处只记录下springBoot项目整合swagger 通过idea创建springBoot项目 暂不演示
2:在pom.xml 中添加swagger依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.7.0</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>swagger-bootstrap-ui</artifactId>
<version>1.8.9</version>
</dependency>
3.创建Swagger2配置类
package com.chinacoal.microservice.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private ApiInfo apiInfo(String name, String description, String version) {
return new ApiInfoBuilder().title(name).description(description).version(version).build();
}
//指定controller位置
@Bean
public Docket attachment() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo("admin-api", "系统管理员", "1.0"))
.select()
.apis(RequestHandlerSelectors.basePackage("com.chinacoal.microservice.impl.controller"))
.paths(PathSelectors.any())
.build()
.groupName("附件管理")
.pathMapping("/");
}
}
4.Swagger使用的注解及其说明:
package com.chinacoal.microservice.api;
import com.chinacoal.microservice.model.attachment.CcmsAttList;
import com.chinacoal.microservice.util.result.Result;
import com.primeton.ptp.tarest.core.api.annotation.TarestOperation;
import com.primeton.ptp.tarest.core.api.annotation.TarestService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.validation.Valid;
import java.io.IOException;
/**
* @author sc
* @createTime 2019/8/12 14:37
* @description
*/
@RequestMapping("/attachManage")
@Api(tags={"附件管理操作接口"})
@TarestService(group="com.chinacoal.microservice.attachment",version="v1",name="CcmsAttListClient")
public interface CcmsAttListClient {
/**
* 根据系统ID查询大类信息
* @param domainId
* @return
*/
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "domainId", value = "系统id", required = true, dataType = "String")
})
@GetMapping("/findBigCat/{domainId}")
@ApiOperation(value = "根据系统ID查询附件大类信息")
@TarestOperation(name="findBigCat", desc="根据系统ID查询附件大类信息", displayName="根据系统ID查询附件大类信息", checkPermission=false)
public Result<Object> findBigCat(@PathVariable("domainId") String domainId);
/**
* 根据大类id查询小类信息
* @param bigCatId
* @return
*/
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "bigCatId", value = "大类id", required = true, dataType = "String")
})
@GetMapping("/findSmallCat/{bigCatId}")
@ApiOperation(value = "根据大类id查询小类信息")
@TarestOperation(name="findSmallCat", desc="根据大类id查询小类信息", displayName="根据大类id查询小类信息", checkPermission=false)
public Result<Object> findSmallCat(@PathVariable("bigCatId") String bigCatId);
/**
* 附件查询列表
* @param page
* @param size
* @return
*/
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "page", value = "页码", required = true, dataType = "int"),
@ApiImplicitParam(paramType="path", name = "size", value = "显示的条数", required = true, dataType = "int"),
})
@PostMapping("/findAttchList/{page}/{size}")
@ApiOperation(value = "附件查询列表 ")
@TarestOperation(name="findAttchList", desc="附件查询列表", displayName=" 附件查询列表", checkPermission=false)
public Result<Object> findAttchList(@PathVariable("page") int page, @PathVariable("size") int size, @RequestBody CcmsAttList ccmsAttList);
/**
* 新增系统大类
* @param ccmsAttList
* @return
*/
@TarestOperation(name="新增系统附件大类", desc="新增系统附件大类,满足同一个系统下大类名称唯一", displayName="新增系统附件大类", checkPermission=false)
@ApiOperation(value = "新增系统附件大类")
@PostMapping("/insertBigCat")
public Result<Object> insertBigCat(@Valid @RequestBody CcmsAttList ccmsAttList);
/**
* 修改系统大类
* @param ccmsAttList
* @return
*/
@TarestOperation(name="修改系统附件大类", desc="修改系统附件大类,满足同一个系统下大类名称唯一", displayName="修改系统附件大类", checkPermission=false)
@ApiOperation(value = "修改系统附件大类")
@PostMapping("/updateBigCat")
public Result<Object> updateBigCat(@Valid @RequestBody CcmsAttList ccmsAttList);
/**
* 新增系统附件小类
* @param ccmsAttList
* @return
*/
@ApiOperation(value = "新增系统附件小类")
@TarestOperation(name="insertSmallCat", desc="新增系统附件小类,满足同一个系统同一大类下小类名称唯一", displayName="新增系统附件小类", checkPermission=false)
@PostMapping("/insertSmallCat")
public Result<Object> insertSmallCat(@Valid @RequestBody CcmsAttList ccmsAttList);
/**
* 修改系统附件小类
* @param ccmsAttList
* @return
*/
@ApiOperation(value = "修改系统附件小类")
@TarestOperation(name="updateSmallCat", desc="修改系统附件小类,满足同一个系统同一大类下小类名称唯一", displayName="修改系统附件小类", checkPermission=false)
@PostMapping("/updateSmallCat")
public Result<Object> updateSmallCat(@Valid @RequestBody CcmsAttList ccmsAttList);
/**
* 删除附件大类
* @param attId
* @return
*/
@ApiOperation(value = "删除附件大类")
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "attId", value = "附件id", required = true, dataType = "String")
})
@TarestOperation(name="deleteBigCat", desc="删除附件大类", displayName="删除附件大类", checkPermission=false)
@DeleteMapping("/deleteBigCat/{attId}")
public Result<Object> deleteBigCat(@PathVariable("attId") String attId);
/**
* 删除附件小类
* @param attId
* @return
*/
@DeleteMapping("/deleteSmallCat/{attId}")
@ApiOperation(value = "删除附件小类")
@TarestOperation(name="deleteSmallCat", desc="删除附件小类", displayName="删除附件小类", checkPermission=false)
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "attId", value = "附件id", required = true, dataType = "String")
})
public Result<Object> deleteSmallCat(@PathVariable("attId") String attId);
/**
* 新增附件 接受文件集合
* @param ccmsAttList
* @return @RequestBody
*/
//
@ApiOperation(value = "新增附件 接受文件集合")
@ApiImplicitParams({
@ApiImplicitParam(paramType="query", name = "file", value = "文件", required = true, dataType = "MultipartFile []")
})
@TarestOperation(name="upload", desc="新增附件", displayName="新增附件", checkPermission=false)
@PostMapping("/upload")
public Result<Object> upload( @RequestParam("file") MultipartFile[] file, CcmsAttList ccmsAttList);
/**
* 根据附件ID下载附件
* @param attId
* @return
*/
@ApiOperation(value = "根据附件ID下载附件")
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "attId", value = "附件ID", required = true, dataType = "String")
})
@TarestOperation(name="download", desc="根据附件ID下载附件", displayName="根据附件ID下载附件", checkPermission=false)
@GetMapping(value = "/download/{attId}")
public ResponseEntity<byte[]> download( @PathVariable("attId") String attId) throws IOException;
/**
* 根据附件ID删除附件
* @param attId
* @return
*/
@ApiOperation(value = "根据附件ID删除附件")
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "attId", value = "附件ID", required = true, dataType = "String")
})
@TarestOperation(name="delete", desc="根据附件ID删除附件", displayName="根据附件ID删除附件", checkPermission=false)
@DeleteMapping("/delete/{attId}")
public Result<Object> delete(@PathVariable("attId") String attId);
/**
* 根据业务ID批量下载附件 下载某一系统下此业务id下的所有附件
* @param domainId
* @param bizId
* @return
*/
@ApiOperation(value = "根据业务ID批量下载附件")
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "domainId", value = "系统id", required = true, dataType = "String"),
@ApiImplicitParam(paramType="path", name = "bizId", value = "业务ID", required = true, dataType = "String")
})
@TarestOperation(name="batchDown4Biz", desc="根据业务ID下载附件", displayName="根据业务ID下载附件", checkPermission=false)
@GetMapping("/batchDown4Biz/{domainId}/{bizId}")
public ResponseEntity<byte[]> batchDown4Biz( @PathVariable("domainId") String domainId , @PathVariable("bizId") String bizId )throws IOException;
/**
* 根据业务ID删除附件附件 删除某一系统下此业务id下的所有附件
* @param domainId
* @param bizId
* @return
*/
@ApiOperation(value = "根据业务ID删除附件")
@ApiImplicitParams({
@ApiImplicitParam(paramType="path", name = "domainId", value = "系统id", required = true, dataType = "String"),
@ApiImplicitParam(paramType="path", name = "bizId", value = "业务ID", required = true, dataType = "String")
})
@TarestOperation(name="batchDel4Biz", desc="根据业务ID删除附件", displayName="根据业务ID删除附件", checkPermission=false)
@DeleteMapping("/batchDel4Biz/{domainId}/{bizId}")
public Result<Object> batchDel4Biz(@PathVariable("domainId") String domainId , @PathVariable("bizId") String bizId );
}
4.实体加相应注解
@ApiModel @ApiModelProperty(notes="附件ID",example="1",required = false)
package com.chinacoal.microservice.model.attachment;
import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.chinacoal.microservice.util.DateConverter;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import org.hibernate.validator.constraints.NotBlank;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
/**
* <p>
* 附件管理列表
* </p>
*
* @author sc
* @since 2019-08-12
*/
@Data
@Accessors(chain = true)
@TableName("ccms_att_list")
@ApiModel(value="附件管理",description="附件管理实体对象")
public class CcmsAttList extends Model<CcmsAttList> {
private static final long serialVersionUID = 1L;
/**
* 附件ID
*/
@TableId("att_id")
@ApiModelProperty(notes="附件ID",example="1",required = false)
private String attId;
/**
* 归属系统ID
*/
@TableField("domain_id")
@ApiModelProperty(notes="域id",example="1",required = true)
@NotBlank(message = "系统id不能为空")
private String domainId;
/**
* 大类ID
*/
@TableField("big_cat_id")
@ApiModelProperty(notes="大类ID",example="1",required = false)
private String bigCatId;
/**
* 小类ID
*/
@TableField("small_cat_id")
@ApiModelProperty(notes="小类ID",example="1",required = false)
private String smallCatId;
/**
* 上级ID
*/
@TableField("up_att_id")
@ApiModelProperty(notes="上级ID",example="1",required = false)
private String upAttId;
/**
* 分类:big-大类,small-小类,att-附件
*/
@TableField("att_type")
@ApiModelProperty(notes="类型",example="big",required = true)
private String attType;
/**
* 大类名/小类名/文件名
*/
@TableField("att_full_name")
@ApiModelProperty(notes="大类名/小类名/文件名",example="1",required = true)
@NotBlank(message = "名称不能为空")
private String attFullName;
/**
* 文件后缀
*/
@TableField("att_file_suffix")
@ApiModelProperty(notes="文件后缀",example="1",required = false)
private String attFileSuffix;
/**
* 文件大小,单位(KB)
*/
@TableField("att_file_size")
@ApiModelProperty(notes="文件大小",example="1",required = false)
private BigDecimal attFileSize;
/**
* 业务ID
*/
@TableField("business_id")
@ApiModelProperty(notes="业务ID",example="1",required = false)
private String businessId;
/**
* 业务编码
*/
@TableField("business_code")
@ApiModelProperty(notes="业务编码",example="1",required = false)
private String businessCode;
/**
* 业务描述
*/
@TableField("business_desc")
@ApiModelProperty(notes="业务描述",example="1",required = false)
private String businessDesc;
/**
* 附件在服务器上的标识ID
*/
@TableField("att_ref_id")
@ApiModelProperty(notes="附件在服务器上的标识ID",example="1",required = false)
private String attRefId;
/**
* 创建人ID
*/
@TableField("created_by")
@ApiModelProperty(notes="创建人ID",example="1",required = false)
private Integer createdBy;
/**
* 创建时间
*/
@TableField("creation_date")
@ApiModelProperty(notes="创建时间 格式:2019-01-01 00:00:00",example="2019-01-01 00:00:00",required = false)
private Date creationDate;
/**
* 最后更新时间
*/
@TableField("last_update_date")
@ApiModelProperty(notes="最后更新时间 格式:2019-01-01 00:00:00",example="2019-01-01 00:00:00",required = false)
private Date lastUpdateDate;
/**
* 最后更新人ID
*/
@TableField("last_updated_by")
@ApiModelProperty(notes="最后更新人ID",example="1",required = false)
private Integer lastUpdatedBy;
/**
* 创建人
*/
@TableField("created_by_name")
@ApiModelProperty(notes="创建人",example="1",required = false)
private String createdByName;
/**
* 租户ID
*/
@TableField("tenant_id")
@ApiModelProperty(notes="租户ID",required = false)
private String tenantId;
/**
* 大类下面是否有小类
*/
@TableField(exist = false)
@ApiModelProperty(notes="大类下面是否有小类",required = false)
private String hasSmall;
/**
* 大类名
*/
@TableField(exist = false)
@ApiModelProperty(notes="大类名",required = false)
private String bigCatName ;
/**
* 小类名
*/
@TableField(exist = false)
@ApiModelProperty(notes="小类名",required = false)
private String smallCatName ;
@Override
protected Serializable pkVal() {
return this.attId;
}
public void setCreationDate(String creationDate) {
this.creationDate = DateConverter.convert(creationDate);
}
public void setLastUpdateDate(String lastUpdateDate) {
this.lastUpdateDate = DateConverter.convert(lastUpdateDate);
}
}