From 9bdd937864ac1bd87869fa329260093ff0094b49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A9=AC=E8=B6=85?= Date: Tue, 9 Mar 2021 19:17:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- file-common/pom.xml | 2 +- .../com/qiwenshare/common/cbb/DateUtil.java | 17 +----- .../qiwenshare/file/api/IUserFileService.java | 2 +- .../file/config/openapi/OpenAPIConfig.java | 58 ++++++++++++++----- .../controller/FiletransferController.java | 38 +++++------- .../controller/RecoveryFileController.java | 22 +++---- .../file/service/RecoveryFileService.java | 2 +- .../file/service/UserFileService.java | 16 ++--- 8 files changed, 79 insertions(+), 78 deletions(-) diff --git a/file-common/pom.xml b/file-common/pom.xml index 0608dd0..4287ebb 100644 --- a/file-common/pom.xml +++ b/file-common/pom.xml @@ -30,7 +30,7 @@ net.coobird thumbnailator - 0.4.8 + 0.4.13 diff --git a/file-common/src/main/java/com/qiwenshare/common/cbb/DateUtil.java b/file-common/src/main/java/com/qiwenshare/common/cbb/DateUtil.java index 17927dc..1d4bb4c 100644 --- a/file-common/src/main/java/com/qiwenshare/common/cbb/DateUtil.java +++ b/file-common/src/main/java/com/qiwenshare/common/cbb/DateUtil.java @@ -19,30 +19,17 @@ public class DateUtil { } /** - * @param formatString 格式,如"yyyy-MM-dd" * @param stringDate 日期字符串,如"2000-03-19" + * @param formatString 格式,如"yyyy-MM-dd" * @return 日期 * @throws ParseException 解析异常 */ - public static Date getDateByFormatString(String formatString, String stringDate) throws ParseException { + public static Date getDateByFormatString(String stringDate, String formatString) throws ParseException { DateFormat dateFormat = new SimpleDateFormat(formatString); Date date = dateFormat.parse(stringDate); return date; } - /** - * 格式化date - * - * @param formatString 格式,如"yyyy-MM-dd" - * @param stringDate 日期字符串,如"2000-03-19" - * @return SQL日期 - * @throws ParseException 解析异常 - */ - public static java.sql.Date getSqlDateByFormatString(String formatString, String stringDate) throws ParseException { - long longtime = DateUtil.getDateByFormatString("yyyyMMdd", stringDate).getTime(); - return new java.sql.Date(longtime); - } - /** * 两个日期相差天数 * diff --git a/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java b/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java index ee9d330..c5d72e7 100644 --- a/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/api/IUserFileService.java @@ -19,7 +19,7 @@ public interface IUserFileService extends IService { Long selectCountByExtendName(List fileNameList, Long beginCount, Long pageCount, long userId); List selectFileNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId); Long selectCountNotInExtendNames(List fileNameList, Long beginCount, Long pageCount, long userId); - List selectFileTreeListLikeFilePath(String filePath); + List selectFileTreeListLikeFilePath(String filePath, long userId); List selectFilePathTreeByUserId(Long userId); void deleteUserFile(UserFile userFile, UserBean sessionUserBean); diff --git a/file-web/src/main/java/com/qiwenshare/file/config/openapi/OpenAPIConfig.java b/file-web/src/main/java/com/qiwenshare/file/config/openapi/OpenAPIConfig.java index 32bd4f1..ef4e2b4 100644 --- a/file-web/src/main/java/com/qiwenshare/file/config/openapi/OpenAPIConfig.java +++ b/file-web/src/main/java/com/qiwenshare/file/config/openapi/OpenAPIConfig.java @@ -6,8 +6,10 @@ import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; 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; @@ -15,24 +17,48 @@ import springfox.documentation.spring.web.plugins.Docket; @Configuration public class OpenAPIConfig { - @Bean - public OpenAPI qiwenFileOpenAPI() { - return new OpenAPI() - .info(new Info().title("奇文网盘 API") - .description("基于springboot + vue 框架开发的Web文件系统,旨在为用户提供一个简单、方便的文件存储方案,能够以完善的目录结构体系,对文件进行管理 。") - .version("v0.0.1") - .license(new License().name("MIT").url("http://springdoc.org"))) - .externalDocs(new ExternalDocumentation() - .description("奇文网盘gitee地址") - .url("https://www.gitee.com/qiwen-cloud/qiwen-file")); - } - - @Bean - public Docket demoApi() { +// @Bean +// public OpenAPI qiwenFileOpenAPI() { +// return new OpenAPI() +// .info(new Info().title("奇文网盘 API") +// .description("基于springboot + vue 框架开发的Web文件系统,旨在为用户提供一个简单、方便的文件存储方案,能够以完善的目录结构体系,对文件进行管理 。") +// .version("v0.0.1") +// .license(new License().name("MIT").url("http://springdoc.org"))) +// .externalDocs(new ExternalDocumentation() +// .description("奇文网盘gitee地址") +// .url("https://www.gitee.com/qiwen-cloud/qiwen-file")); +// } +// +// @Bean +// public Docket demoApi() { +// return new Docket(DocumentationType.OAS_30) +// .select() +// .apis(RequestHandlerSelectors.any()) +// .paths(PathSelectors.regex("(?!/error.*).*")) +// .build(); +// } + /** + * 前台API分组 + * + * @return + */ + @Bean(value = "indexApi") + public Docket indexApi() { return new Docket(DocumentationType.OAS_30) + .groupName("网站前端接口分组") + .apiInfo(apiInfo()) .select() - .apis(RequestHandlerSelectors.any()) - .paths(PathSelectors.regex("(?!/error.*).*")) + .apis(RequestHandlerSelectors.basePackage("com.qiwenshare.file.controller")) + .paths(PathSelectors.any()) + .build(); + } + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title("奇文网盘API") + .description("基于springboot + vue 框架开发的Web文件系统,旨在为用户提供一个简单、方便的文件存储方案,能够以完善的目录结构体系,对文件进行管理 。") +// .termsOfServiceUrl("http://www.qiwenshare.com:8762/") +// .contact("developer@mail.com") + .version("1.0.0") .build(); } } diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java index 7aa52c6..a0eb53b 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/FiletransferController.java @@ -51,19 +51,16 @@ public class FiletransferController { @RequestMapping(value = "/uploadfile", method = RequestMethod.GET) @MyLog(operation = "极速上传", module = CURRENT_MODULE) @ResponseBody - public RestResult uploadFileSpeed(HttpServletRequest request, UploadFileDTO uploadFileDto, @RequestHeader("token") String token) { - RestResult restResult = new RestResult(); + public RestResult uploadFileSpeed(UploadFileDTO uploadFileDto, @RequestHeader("token") String token) { + UserBean sessionUserBean = userService.getUserBeanByToken(token); if (sessionUserBean == null){ - restResult.setSuccess(false); - restResult.setMessage("未登录"); - return restResult; + + return RestResult.fail().message("未登录"); } RestResult operationCheckResult = fileController.operationCheck(token); if (!operationCheckResult.getSuccess()){ - restResult.setSuccess(false); - restResult.setMessage("没权限,请联系管理员!"); - return restResult; + return RestResult.fail().message("没权限,请联系管理员!"); } UploadFileVo uploadFileVo = new UploadFileVo(); Map param = new HashMap(); @@ -92,10 +89,8 @@ public class FiletransferController { } } + return RestResult.success().data(uploadFileVo); - restResult.setData(uploadFileVo); - restResult.setSuccess(true); - return restResult; } /** @@ -104,37 +99,31 @@ public class FiletransferController { * @param request * @return */ - @Operation(summary = "上传文件", description = "真正的上次文件接口", tags = {"filetransfer"}) + @Operation(summary = "上传文件", description = "真正的上传文件接口", tags = {"filetransfer"}) @RequestMapping(value = "/uploadfile", method = RequestMethod.POST) @MyLog(operation = "上传文件", module = CURRENT_MODULE) @ResponseBody public RestResult uploadFile(HttpServletRequest request, UploadFileDTO uploadFileDto, @RequestHeader("token") String token) { - RestResult restResult = new RestResult<>(); + UserBean sessionUserBean = userService.getUserBeanByToken(token); if (sessionUserBean == null){ - restResult.setSuccess(false); - restResult.setMessage("未登录"); - return restResult; + return RestResult.fail().message("未登录"); } RestResult operationCheckResult = fileController.operationCheck(token); if (!operationCheckResult.getSuccess()){ - restResult.setSuccess(false); - restResult.setMessage("没权限,请联系管理员!"); - return restResult; + return RestResult.fail().message("没权限,请联系管理员!"); } filetransferService.uploadFile(request, uploadFileDto, sessionUserBean.getUserId()); UploadFileVo uploadFileVo = new UploadFileVo(); + return RestResult.success().data(uploadFileVo); - restResult.setData(uploadFileVo); - return restResult; } @Operation(summary = "获取存储信息", description = "获取存储信息", tags = {"filetransfer"}) @RequestMapping(value = "/getstorage", method = RequestMethod.GET) @ResponseBody public RestResult getStorage(@RequestHeader("token") String token) { - RestResult restResult = new RestResult(); UserBean sessionUserBean = userService.getUserBeanByToken(token); StorageBean storageBean = new StorageBean(); @@ -148,9 +137,8 @@ public class FiletransferController { StorageBean storage = new StorageBean(); storage.setUserId(sessionUserBean.getUserId()); storage.setStorageSize(storageSize); - restResult.setData(storage); - restResult.setSuccess(true); - return restResult; + return RestResult.success().data(storage); + } diff --git a/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java b/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java index c2e5d26..dae7040 100644 --- a/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java +++ b/file-web/src/main/java/com/qiwenshare/file/controller/RecoveryFileController.java @@ -43,8 +43,6 @@ public class RecoveryFileController { @RequestMapping(value = "/deleterecoveryfile", method = RequestMethod.POST) @ResponseBody public RestResult deleteRecoveryFile(@RequestBody DeleteRecoveryFileDTO deleteRecoveryFileDTO, @RequestHeader("token") String token) { - RestResult restResult = new RestResult(); - RecoveryFile recoveryFile = recoveryFileService.getById(deleteRecoveryFileDTO.getRecoveryFileId()); UserFile userFile =userFileService.getById(recoveryFile.getUserFileId()); @@ -60,7 +58,7 @@ public class RecoveryFileController { @MyLog(operation = "批量删除回收文件", module = CURRENT_MODULE) @ResponseBody public RestResult batchDeleteRecoveryFile(@RequestBody BatchDeleteRecoveryFileDTO batchDeleteRecoveryFileDTO, @RequestHeader("token") String token) { - RestResult restResult = new RestResult(); + List recoveryFileList = JSON.parseArray(batchDeleteRecoveryFileDTO.getRecoveryFileIds(), RecoveryFile.class); @@ -119,16 +117,18 @@ public class RecoveryFileController { userFileService.save(userFile); } -// else { -// -// LambdaUpdateWrapper updateUserfileWp = new LambdaUpdateWrapper<>(); -// updateUserfileWp.set(UserFile::getDeleteBatchNum, "") -// .set(UserFile::getDeleteFlag, "0") -// .eq(UserFile::getFilePath, filePath).eq(UserFile::getUserId, sessionUserBean.getUserId()); -// userFileService.update(updateUserfileWp); -// } + } + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.likeRight(UserFile::getFilePath, restoreFileDto.getFilePath()) + .eq(UserFile::getIsDir, 1) + .eq(UserFile::getDeleteFlag, 0) + .groupBy(UserFile::getFilePath, UserFile::getFileName) + .having("count(fileName) >= 2"); + List repeatList = userFileService.list(lambdaQueryWrapper); + log.info(JSON.toJSONString(repeatList)); + LambdaQueryWrapper recoveryFileServiceLambdaQueryWrapper = new LambdaQueryWrapper<>(); recoveryFileServiceLambdaQueryWrapper.eq(RecoveryFile::getDeleteBatchNum, restoreFileDto.getDeleteBatchNum()); recoveryFileService.remove(recoveryFileServiceLambdaQueryWrapper); diff --git a/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java b/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java index e51791a..62f0167 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/RecoveryFileService.java @@ -86,7 +86,7 @@ public class RecoveryFileService extends ServiceImpl selectRecoveryFileList() { return recoveryFileMapper.selectRecoveryFileList(); } diff --git a/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java b/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java index 662af82..d7a0cc5 100644 --- a/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java +++ b/file-web/src/main/java/com/qiwenshare/file/service/UserFileService.java @@ -100,20 +100,20 @@ public class UserFileService extends ServiceImpl impl } @Override - public List selectFileTreeListLikeFilePath(String filePath) { - UserFile userFile = new UserFile(); + public List selectFileTreeListLikeFilePath(String filePath, long userId) { + //UserFile userFile = new UserFile(); filePath = filePath.replace("\\", "\\\\\\\\"); filePath = filePath.replace("'", "\\'"); filePath = filePath.replace("%", "\\%"); filePath = filePath.replace("_", "\\_"); - userFile.setFilePath(filePath); + //userFile.setFilePath(filePath); LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - log.info("删除文件路径:" + filePath); + log.info("查询文件路径:" + filePath); - lambdaQueryWrapper.likeRight(UserFile::getFilePath, filePath); + lambdaQueryWrapper.eq(UserFile::getUserId, userId).likeRight(UserFile::getFilePath, filePath); return userFileMapper.selectList(lambdaQueryWrapper); } @@ -139,7 +139,7 @@ public class UserFileService extends ServiceImpl impl userFileMapper.update(null, userFileLambdaUpdateWrapper); String filePath = userFile.getFilePath() + userFile.getFileName() + "/"; - updateFileDeleteStateByFilePath(filePath, userFile.getDeleteBatchNum()); + updateFileDeleteStateByFilePath(filePath, userFile.getDeleteBatchNum(), sessionUserBean.getUserId()); }else{ @@ -161,9 +161,9 @@ public class UserFileService extends ServiceImpl impl } - private void updateFileDeleteStateByFilePath(String filePath, String deleteBatchNum) { + private void updateFileDeleteStateByFilePath(String filePath, String deleteBatchNum, Long userId) { new Thread(()->{ - List fileList = selectFileTreeListLikeFilePath(filePath); + List fileList = selectFileTreeListLikeFilePath(filePath, userId); for (int i = 0; i < fileList.size(); i++){ UserFile userFileTemp = fileList.get(i); executor.execute(new Runnable() {