代码优化

This commit is contained in:
马超 2020-12-24 16:49:14 +08:00
parent b608c35d78
commit 83e3c37707
26 changed files with 273 additions and 176 deletions

View File

@ -1,12 +1,7 @@
package com.qiwenshare.file.api;
import com.qiwenshare.common.cbb.RestResult;
import com.qiwenshare.file.domain.FileBean;
import com.qiwenshare.file.domain.StorageBean;
import com.qiwenshare.file.domain.UserBean;
import com.qiwenshare.file.dto.UploadFileDto;
import java.util.List;
import com.qiwenshare.file.dto.UploadFileDTO;
import javax.servlet.http.HttpServletRequest;
@ -21,7 +16,7 @@ public interface IFiletransferService {
* @param request 请求
* @param UploadFileDto 文件信息
*/
void uploadFile(HttpServletRequest request, UploadFileDto UploadFileDto, Long userId);
void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId);
StorageBean selectStorageBean(StorageBean storageBean);

View File

@ -4,7 +4,7 @@ import com.qiwenshare.common.domain.AliyunOSS;
import lombok.Data;
@Data
public class AliyunConfig {
public class AliyunConfig {
private AliyunOSS oss = new AliyunOSS();

View File

@ -14,7 +14,7 @@ public class OpenAPIConfig {
public OpenAPI qiwenFileOpenAPI() {
return new OpenAPI()
.info(new Info().title("qiwen-file API")
.description("desc")
.description("基于springboot + vue 框架开发的Web文件系统旨在为用户提供一个简单、方便的文件存储方案能够以完善的目录结构体系对文件进行管理 。")
.version("v0.0.1")
.license(new License().name("MIT").url("http://springdoc.org")))
.externalDocs(new ExternalDocumentation()

View File

@ -32,7 +32,7 @@ import java.util.concurrent.Executors;
import static com.qiwenshare.common.util.FileUtil.getFileExtendsByType;
@Tag(name = "文件接口", description = "进行文件的基本操作")
@Tag(name = "file", description = "该接口为文件接口,主要用来做一些文件的基本操作,如创建目录,删除,移动,复制等。")
@RestController
@Slf4j
@RequestMapping("/file")
@ -54,10 +54,10 @@ public class FileController {
public static long treeid = 0;
@Operation(summary = "创建文件")
@Operation(summary = "创建文件", description = "目录(文件夹)的创建", tags = {"file"})
@RequestMapping(value = "/createfile", method = RequestMethod.POST)
@ResponseBody
public RestResult<String> createFile(@RequestBody CreateFileDto createFileDto, @RequestHeader("token") String token) {
public RestResult<String> createFile(@RequestBody CreateFileDTO createFileDto, @RequestHeader("token") String token) {
RestResult<String> restResult = new RestResult<>();
if (!operationCheck(token).isSuccess()){
return operationCheck(token);
@ -86,10 +86,10 @@ public class FileController {
return restResult;
}
@Operation(summary = "文件重命名")
@Operation(summary = "文件重命名", description = "文件重命名", tags = {"file"})
@RequestMapping(value = "/renamefile", method = RequestMethod.POST)
@ResponseBody
public RestResult<String> renameFile(@RequestBody RenameFileDto renameFileDto, @RequestHeader("token") String token) {
public RestResult<String> renameFile(@RequestBody RenameFileDTO renameFileDto, @RequestHeader("token") String token) {
RestResult<String> restResult = new RestResult<>();
if (!operationCheck(token).isSuccess()){
return operationCheck(token);
@ -162,10 +162,10 @@ public class FileController {
// return null;
// }
@Operation(summary = "获取文件列表")
@Operation(summary = "获取文件列表", description = "用来做前台列表展示", tags = {"file"})
@RequestMapping(value = "/getfilelist", method = RequestMethod.GET)
@ResponseBody
public RestResult<List<Map<String, Object>>> getFileList(FileListDto fileListDto, @RequestHeader("token") String token){
public RestResult<List<Map<String, Object>>> getFileList(FileListDTO fileListDto, @RequestHeader("token") String token){
RestResult<List<Map<String, Object>>> restResult = new RestResult<>();
UserFile userFile = new UserFile();
if(qiwenFileConfig.isShareMode()){
@ -195,7 +195,7 @@ public class FileController {
return restResult;
}
@Operation(summary = "批量删除文件")
@Operation(summary = "批量删除文件", description = "批量删除文件", tags = {"file"})
@RequestMapping(value = "/batchdeletefile", method = RequestMethod.POST)
@ResponseBody
public RestResult<String> deleteImageByIds(@RequestBody BatchDeleteFileDTO batchDeleteFileDto, @RequestHeader("token") String token) {
@ -215,10 +215,10 @@ public class FileController {
return result;
}
@Operation(summary = "删除文件")
@Operation(summary = "删除文件", description = "可以删除文件或者目录", tags = {"file"})
@RequestMapping(value = "/deletefile", method = RequestMethod.POST)
@ResponseBody
public String deleteFile(@RequestBody DeleteFileDto deleteFileDto, @RequestHeader("token") String token) {
public String deleteFile(@RequestBody DeleteFileDTO deleteFileDto, @RequestHeader("token") String token) {
RestResult<String> result = new RestResult<String>();
if (!operationCheck(token).isSuccess()){
return JSON.toJSONString(operationCheck(token));
@ -234,10 +234,10 @@ public class FileController {
return resultJson;
}
@Operation(summary = "解压文件")
@Operation(summary = "解压文件", description = "压缩功能为体验功能,目前持续优化中。", tags = {"file"})
@RequestMapping(value = "/unzipfile", method = RequestMethod.POST)
@ResponseBody
public RestResult<String> unzipFile(@RequestBody UnzipFileDto unzipFileDto, @RequestHeader("token") String token) {
public RestResult<String> unzipFile(@RequestBody UnzipFileDTO unzipFileDto, @RequestHeader("token") String token) {
RestResult<String> result = new RestResult<String>();
if (!operationCheck(token).isSuccess()){
return operationCheck(token);
@ -321,10 +321,10 @@ public class FileController {
}
@Operation(summary = "文件移动")
@Operation(summary = "文件移动", description = "可以移动文件或者目录", tags = {"file"})
@RequestMapping(value = "/movefile", method = RequestMethod.POST)
@ResponseBody
public RestResult<String> moveFile(@RequestBody MoveFileDto moveFileDto, @RequestHeader("token") String token) {
public RestResult<String> moveFile(@RequestBody MoveFileDTO moveFileDto, @RequestHeader("token") String token) {
RestResult<String> result = new RestResult<String>();
if (!operationCheck(token).isSuccess()){
return operationCheck(token);
@ -339,10 +339,10 @@ public class FileController {
return result;
}
@Operation(summary = "批量移动文件")
@Operation(summary = "批量移动文件", description = "可以同时选择移动多个文件或者目录", tags = {"file"})
@RequestMapping(value = "/batchmovefile", method = RequestMethod.POST)
@ResponseBody
public RestResult<String> batchMoveFile(@RequestBody BatchMoveFileDto batchMoveFileDto, @RequestHeader("token") String token) {
public RestResult<String> batchMoveFile(@RequestBody BatchMoveFileDTO batchMoveFileDto, @RequestHeader("token") String token) {
RestResult<String> result = new RestResult<String>();
if (!operationCheck(token).isSuccess()) {
@ -382,7 +382,7 @@ public class FileController {
return result;
}
@Operation(summary = "通过文件类型选择文件")
@Operation(summary = "通过文件类型选择文件", description = "该接口可以实现文件格式分类查看", tags = {"file"})
@RequestMapping(value = "/selectfilebyfiletype", method = RequestMethod.GET)
@ResponseBody
public RestResult<List<Map<String, Object>>> selectFileByFileType(int fileType, @RequestHeader("token") String token) {
@ -409,7 +409,7 @@ public class FileController {
return result;
}
@Operation(summary = "获取文件树")
@Operation(summary = "获取文件树", description = "文件移动的时候需要用到该接口,用来展示目录树,展示机制为饱汉模式", tags = {"file"})
@RequestMapping(value = "/getfiletree", method = RequestMethod.GET)
@ResponseBody
public RestResult<TreeNode> getFileTree(@RequestHeader("token") String token){

View File

@ -1,14 +1,7 @@
package com.qiwenshare.file.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.aliyun.oss.OSS;
import com.aliyun.oss.model.OSSObject;
import com.qiwenshare.common.cbb.DateUtil;
import com.qiwenshare.common.operation.FileOperation;
import com.qiwenshare.common.oss.AliyunOSSDownload;
import com.qiwenshare.common.util.FileUtil;
import com.qiwenshare.common.util.PathUtil;
import com.qiwenshare.common.cbb.RestResult;
import com.qiwenshare.file.api.IFileService;
import com.qiwenshare.file.api.IFiletransferService;
@ -19,7 +12,7 @@ import com.qiwenshare.file.domain.FileBean;
import com.qiwenshare.file.domain.StorageBean;
import com.qiwenshare.file.domain.UserBean;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.dto.UploadFileDto;
import com.qiwenshare.file.dto.UploadFileDTO;
import com.qiwenshare.file.vo.file.UploadFileVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
@ -28,13 +21,11 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Tag(name = "文件传输", description = "进行文件的上传和下载")
@Tag(name = "filetransfer", description = "该接口为文件传输接口,主要用来做文件的上传和下载")
@RestController
@RequestMapping("/filetransfer")
public class FiletransferController {
@ -54,10 +45,10 @@ public class FiletransferController {
@Resource
IUserFileService userFileService;
@Operation(summary = "极速上传")
@Operation(summary = "极速上传", description = "校验文件MD5判断文件是否存在如果存在直接上传成功并返回skipUpload=true如果不存在返回skipUpload=false需要再次调用该接口的POST方法", tags = {"filetransfer"})
@RequestMapping(value = "/uploadfile", method = RequestMethod.GET)
@ResponseBody
public RestResult<UploadFileVo> uploadFileSpeed(HttpServletRequest request, UploadFileDto uploadFileDto, @RequestHeader("token") String token) {
public RestResult<UploadFileVo> uploadFileSpeed(HttpServletRequest request, UploadFileDTO uploadFileDto, @RequestHeader("token") String token) {
RestResult<UploadFileVo> restResult = new RestResult<UploadFileVo>();
UserBean sessionUserBean = userService.getUserBeanByToken(token);
if (sessionUserBean == null){
@ -110,10 +101,10 @@ public class FiletransferController {
* @param request
* @return
*/
@Operation(summary = "上传文件")
@Operation(summary = "上传文件", description = "真正的上次文件接口", tags = {"filetransfer"})
@RequestMapping(value = "/uploadfile", method = RequestMethod.POST)
@ResponseBody
public RestResult<UploadFileVo> uploadFile(HttpServletRequest request, UploadFileDto uploadFileDto, @RequestHeader("token") String token) {
public RestResult<UploadFileVo> uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDto, @RequestHeader("token") String token) {
RestResult<UploadFileVo> restResult = new RestResult<>();
UserBean sessionUserBean = userService.getUserBeanByToken(token);
if (sessionUserBean == null){
@ -135,7 +126,7 @@ public class FiletransferController {
return restResult;
}
@Operation(summary = "获取存储信息")
@Operation(summary = "获取存储信息", description = "获取存储信息", tags = {"filetransfer"})
@RequestMapping(value = "/getstorage", method = RequestMethod.GET)
@ResponseBody
public RestResult<StorageBean> getStorage(@RequestHeader("token") String token) {

View File

@ -8,6 +8,7 @@ import com.qiwenshare.common.util.JjwtUtil;
import com.qiwenshare.file.api.IUserService;
import com.qiwenshare.file.config.QiwenFileConfig;
import com.qiwenshare.file.domain.UserBean;
import com.qiwenshare.file.dto.RegisterDTO;
import com.qiwenshare.file.vo.user.UserLoginVo;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
@ -28,7 +29,7 @@ import java.util.Map;
*
* @author ma116
*/
@Tag(name = "user", description = "进行用户的基本操作")
@Tag(name = "user", description = "该接口为用户接口主要做用户登录注册和校验token")
@RestController
@Slf4j
@RequestMapping("/user")
@ -50,12 +51,13 @@ public class UserController {
*/
public static final String CURRENT_MODULE = "用户管理";
@Operation(summary = "用户注册")
@Operation(summary = "用户注册", description = "注册账号", tags = {"user"})
@PostMapping(value = "/adduser")
@ResponseBody
public RestResult<String> addUser(@RequestBody UserBean userBean) {
public RestResult<String> addUser(@RequestBody RegisterDTO registerDTO) {
RestResult<String> restResult = null;
UserBean userBean = new UserBean();
BeanUtil.copyProperties(registerDTO, userBean);
restResult = userService.registerUser(userBean);
return restResult;
@ -96,7 +98,7 @@ public class UserController {
return restResult;
}
@Operation(summary = "检查用户登录信息", description = "", tags = {"user"})
@Operation(summary = "检查用户登录信息", description = "验证token的有效性", tags = {"user"})
@GetMapping("/checkuserlogininfo")
@ResponseBody
public RestResult<UserBean> checkUserLoginInfo(@RequestHeader("token") String token) {
@ -121,23 +123,23 @@ public class UserController {
return restResult;
}
@Operation(summary = "得到用户信息通过id", description = "", tags = {"user"})
@GetMapping("/getuserinfobyid")
@ResponseBody
public String getUserInfoById(int userId) {
RestResult<UserBean> restResult = new RestResult<UserBean>();
UserBean userBean = userService.getById(userId);
if (userBean == null) {
restResult.setSuccess(false);
restResult.setErrorCode("100001");
restResult.setErrorMessage("用户不存在!");
} else {
restResult.setSuccess(true);
restResult.setData(userBean);
}
String resultJson = JSON.toJSONString(restResult);
return resultJson;
}
// @Operation(summary = "得到用户信息通过id", description = "", tags = {"user"})
// @GetMapping("/getuserinfobyid")
// @ResponseBody
// public String getUserInfoById(int userId) {
// RestResult<UserBean> restResult = new RestResult<UserBean>();
//
// UserBean userBean = userService.getById(userId);
// if (userBean == null) {
// restResult.setSuccess(false);
// restResult.setErrorCode("100001");
// restResult.setErrorMessage("用户不存在!");
// } else {
// restResult.setSuccess(true);
// restResult.setData(userBean);
// }
// String resultJson = JSON.toJSONString(restResult);
// return resultJson;
// }
}

View File

@ -1,10 +1,12 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "批量删除文件DTO",required = true)
public class BatchDeleteFileDTO {
@Schema(description="文件集合")
private String files;

View File

@ -0,0 +1,15 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "批量移动文件DTO",required = true)
public class BatchMoveFileDTO {
@Schema(description="文件集合")
private String files;
@Schema(description="文件路径")
private String filePath;
}

View File

@ -1,12 +0,0 @@
package com.qiwenshare.file.dto;
import lombok.Data;
@Data
public class BatchMoveFileDto {
private String files;
private String filePath;
}

View File

@ -0,0 +1,13 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "创建文件DTO",required = true)
public class CreateFileDTO {
@Schema(description="文件名")
private String fileName;
@Schema(description="文件路径")
private String filePath;
}

View File

@ -1,9 +0,0 @@
package com.qiwenshare.file.dto;
import lombok.Data;
@Data
public class CreateFileDto {
private String fileName;
private String filePath;
}

View File

@ -0,0 +1,17 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "删除文件DTO",required = true)
public class DeleteFileDTO {
@Schema(description = "用户文件id")
private Long userFileId;
@Schema(description = "文件路径")
private String filePath;
@Schema(description = "文件名")
private String fileName;
@Schema(description = "是否是目录")
private Integer isDir;
}

View File

@ -1,11 +0,0 @@
package com.qiwenshare.file.dto;
import lombok.Data;
@Data
public class DeleteFileDto {
private Long userFileId;
private String filePath;
private String fileName;
private Integer isDir;
}

View File

@ -0,0 +1,15 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "文件列表DTO",required = true)
public class FileListDTO {
@Schema(description = "文件路径")
private String filePath;
@Schema(description = "当前页码")
private Long currentPage;
@Schema(description = "一页显示数量")
private Long pageCount;
}

View File

@ -1,11 +0,0 @@
package com.qiwenshare.file.dto;
import lombok.Data;
@Data
public class FileListDto {
private String filePath;
private Long currentPage;
private Long pageCount;
}

View File

@ -0,0 +1,27 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "移动文件DTO",required = true)
public class MoveFileDTO {
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String filePath;
/**
* 文件名
*/
@Schema(description = "文件名")
private String fileName;
@Schema(description = "旧文件名")
private String oldFilePath;
@Schema(description = "扩展名")
private String extendName;
}

View File

@ -1,20 +0,0 @@
package com.qiwenshare.file.dto;
import lombok.Data;
@Data
public class MoveFileDto {
/**
* 文件路径
*/
private String filePath;
/**
* 文件名
*/
private String fileName;
private String oldFilePath;
private String extendName;
}

View File

@ -0,0 +1,15 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "用户注册DTO",required = true)
public class RegisterDTO {
@Schema(description = "用户名")
private String username;
@Schema(description = "手机号")
private String telephone;
@Schema(description = "密码")
private String password;
}

View File

@ -0,0 +1,27 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "重命名文件DTO",required = true)
public class RenameFileDTO {
private Long userFileId;
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String filePath;
/**
* 文件名
*/
@Schema(description = "文件名")
private String fileName;
@Schema(description = "是否是目录")
private Integer isDir;
@Schema(description = "旧文件名")
private String oldFileName;
@Schema(description = "是否是OSS")
private Integer isOSS;
}

View File

@ -1,22 +0,0 @@
package com.qiwenshare.file.dto;
import lombok.Data;
@Data
public class RenameFileDto {
private Long userFileId;
/**
* 文件路径
*/
private String filePath;
/**
* 文件名
*/
private String fileName;
private Integer isDir;
private String oldFileName;
private Integer isOSS;
}

View File

@ -0,0 +1,13 @@
package com.qiwenshare.file.dto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@Data
@Schema(name = "解压缩文件DTO",required = true)
public class UnzipFileDTO {
@Schema(description = "文件url")
private String fileUrl;
@Schema(description = "文件路径")
private String filePath;
}

View File

@ -1,9 +0,0 @@
package com.qiwenshare.file.dto;
import lombok.Data;
@Data
public class UnzipFileDto {
private String fileUrl;
private String filePath;
}

View File

@ -11,43 +11,46 @@ import javax.persistence.*;
@Data
@Schema(name = "上传文件DTO",required = true)
public class UploadFileDto {
public class UploadFileDTO {
/**
* 文件路径
*/
@Schema(description = "文件路径")
private String filePath;
/**
* 上传时间
*/
@Schema(description = "上传时间")
private String uploadTime;
/**
* 扩展名
*/
@Schema(description = "扩展名")
private String extendName;
/**
* 文件名
*/
@Schema(description = "文件名")
private String filename;
/**
* 文件大小
*/
@Schema(description = "文件大小")
private Long fileSize;
@Schema(description = "切片数量")
private int chunkNumber;
@Schema(description = "切片大小")
private long chunkSize;
@Schema(description = "所有切片")
private int totalChunks;
@Schema(description = "总大小")
private long totalSize;
@Schema(description = "当前切片大小")
private long currentChunkSize;
@Schema(description = "md5码")
private String identifier;
}

View File

@ -0,0 +1,57 @@
//package com.qiwenshare.file.interceptor;
//
//import com.qiwenshare.file.api.IUserService;
//import com.qiwenshare.file.domain.UserBean;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.http.HttpHeaders;
//import org.springframework.web.servlet.HandlerInterceptor;
//import org.springframework.web.servlet.ModelAndView;
//
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
///**
// * token验证拦截
// */
//@Slf4j
//public class AuthenticationInterceptor implements HandlerInterceptor {
// @Autowired
// private IUserService userService;
// @Override
// public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
// throws Exception {
// log.info("---------------------------------------------------------");
// // 取得token
// String tokenHeader = request.getHeader(HttpHeaders.AUTHORIZATION);
// if (tokenHeader == null || "".equals(tokenHeader)) {
// throw new Exception("token不存在");
// }
// if (!tokenHeader.startsWith("Bearer")) {
// throw new Exception("token格式错误");
// }
// String token = tokenHeader.replace("Bearer", "");
// UserBean userBean = userService.getUserBeanByToken(token);
// if (userBean == null) {
// return false;
// }
//
// return true;
// }
//
// @Override
// public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
// ModelAndView modelAndView) throws Exception {
// // TODO Auto-generated method stub
//
// }
//
// @Override
// public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
// throws Exception {
// // TODO Auto-generated method stub
//
// }
//
//}
//

View File

@ -18,11 +18,10 @@ import com.qiwenshare.file.api.IFiletransferService;
import com.qiwenshare.common.domain.AliyunOSS;
import com.qiwenshare.file.config.QiwenFileConfig;
import com.qiwenshare.file.domain.UserFile;
import com.qiwenshare.file.dto.UploadFileDto;
import com.qiwenshare.file.dto.UploadFileDTO;
import com.qiwenshare.file.mapper.FileMapper;
import com.qiwenshare.file.domain.FileBean;
import com.qiwenshare.file.domain.StorageBean;
import com.qiwenshare.file.domain.UserBean;
import com.qiwenshare.file.mapper.StorageMapper;
import com.qiwenshare.file.mapper.UserFileMapper;
import org.springframework.stereotype.Service;
@ -44,7 +43,7 @@ public class FiletransferService implements IFiletransferService {
@Override
public void uploadFile(HttpServletRequest request, UploadFileDto UploadFileDto, Long userId) {
public void uploadFile(HttpServletRequest request, UploadFileDTO UploadFileDto, Long userId) {
AliyunOSS oss = qiwenFileConfig.getAliyun().getOss();
request.setAttribute("oss", oss);
Uploader uploader;

View File

@ -27,12 +27,12 @@
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.3.9</version>
<version>1.5.2</version>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-springdoc-ui</artifactId>
<version>2.0.3</version>
<version>3.0.2</version>
</dependency>
<!--Swagger End-->
<dependency>