diff --git a/src/main/java/im/zhaojun/zfile/home/controller/FileController.java b/src/main/java/im/zhaojun/zfile/home/controller/FileController.java index 2b47dfc..f179671 100644 --- a/src/main/java/im/zhaojun/zfile/home/controller/FileController.java +++ b/src/main/java/im/zhaojun/zfile/home/controller/FileController.java @@ -1 +1 @@ -package im.zhaojun.zfile.home.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSort; import im.zhaojun.zfile.admin.model.entity.StorageSource; import im.zhaojun.zfile.admin.service.StorageSourceService; import im.zhaojun.zfile.common.context.StorageSourceContext; import im.zhaojun.zfile.common.util.AjaxJson; import im.zhaojun.zfile.home.chain.FileChain; import im.zhaojun.zfile.home.chain.FileContext; import im.zhaojun.zfile.home.convert.StorageSourceConvert; import im.zhaojun.zfile.home.model.request.FileListRequest; import im.zhaojun.zfile.home.model.request.SearchStorageRequest; import im.zhaojun.zfile.home.model.result.FileInfoResult; import im.zhaojun.zfile.home.model.result.FileItemResult; import im.zhaojun.zfile.home.model.result.StorageSourceResult; import im.zhaojun.zfile.home.service.base.AbstractBaseFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; /** * 文件列表相关接口, 如展示存储源列表, 展示文件列表, 搜索文件列表等. * * @author zhaojun */ @Api(tags = "文件列表模块") @ApiSort(2) @Slf4j @RequestMapping("/api/storage") @RestController public class FileController { @Resource private StorageSourceContext storageSourceContext; @Resource private StorageSourceService storageSourceService; @Resource private FileChain fileChain; @Resource private StorageSourceConvert storageSourceConvert; @ApiOperationSupport(order = 1) @ApiOperation(value = "获取存储源列表", notes = "获取所有已启用的存储源, 并且按照后台顺序排序") @GetMapping("/list") public AjaxJson> storageList() { List storageList = storageSourceService.findListByEnableOrderByOrderNum(); List storageSourceResultList = storageSourceConvert.entityToResultList(storageList); return AjaxJson.getSuccessData(storageSourceResultList); } @ApiOperationSupport(order = 2) @ApiOperation(value = "获取文件列表", notes = "获取某个存储源下, 指定路径的文件&文件夹列表") @PostMapping("/files") public AjaxJson list(@Valid @RequestBody FileListRequest fileListRequest) throws Exception { StorageSource storageSource = storageSourceService.findByStorageKey(fileListRequest.getStorageKey()); Integer storageId = storageSource.getId(); // 处理请求参数默认值 fileListRequest.handleDefaultValue(); // 获取文件列表 AbstractBaseFileService fileService = storageSourceContext.get(storageId); List fileItemList = fileService.fileList(fileListRequest.getPath()); // 执行责任链 FileContext fileContext = FileContext.builder() .storageId(storageId) .fileListRequest(fileListRequest) .fileItemList(fileItemList).build(); fileChain.execute(fileContext); return AjaxJson.getSuccessData(new FileInfoResult(fileContext.getFileItemList(), fileContext.getPasswordPattern())); } @ApiOperationSupport(order = 3) @ApiOperation(value = "搜索文件", notes = "搜索指定存储源下的文件和文件夹") @PostMapping("/search") public AjaxJson> search(@Valid @RequestBody SearchStorageRequest searchStorageRequest) { AbstractBaseFileService fileService = storageSourceContext.getByKey(searchStorageRequest.getStorageKey()); List search = fileService.search(searchStorageRequest.getSearchVal()); return AjaxJson.getSuccessData(search); } } \ No newline at end of file +package im.zhaojun.zfile.home.controller; import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.github.xiaoymin.knife4j.annotations.ApiSort; import im.zhaojun.zfile.admin.model.entity.StorageSource; import im.zhaojun.zfile.admin.service.StorageSourceService; import im.zhaojun.zfile.common.context.StorageSourceContext; import im.zhaojun.zfile.common.exception.InvalidStorageSourceException; import im.zhaojun.zfile.common.util.AjaxJson; import im.zhaojun.zfile.home.chain.FileChain; import im.zhaojun.zfile.home.chain.FileContext; import im.zhaojun.zfile.home.convert.StorageSourceConvert; import im.zhaojun.zfile.home.model.request.FileListRequest; import im.zhaojun.zfile.home.model.request.SearchStorageRequest; import im.zhaojun.zfile.home.model.result.FileInfoResult; import im.zhaojun.zfile.home.model.result.FileItemResult; import im.zhaojun.zfile.home.model.result.StorageSourceResult; import im.zhaojun.zfile.home.service.base.AbstractBaseFileService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import javax.validation.Valid; import java.util.List; /** * 文件列表相关接口, 如展示存储源列表, 展示文件列表, 搜索文件列表等. * * @author zhaojun */ @Api(tags = "文件列表模块") @ApiSort(2) @Slf4j @RequestMapping("/api/storage") @RestController public class FileController { @Resource private StorageSourceContext storageSourceContext; @Resource private StorageSourceService storageSourceService; @Resource private FileChain fileChain; @Resource private StorageSourceConvert storageSourceConvert; @ApiOperationSupport(order = 1) @ApiOperation(value = "获取存储源列表", notes = "获取所有已启用的存储源, 并且按照后台顺序排序") @GetMapping("/list") public AjaxJson> storageList() { List storageList = storageSourceService.findListByEnableOrderByOrderNum(); List storageSourceResultList = storageSourceConvert.entityToResultList(storageList); return AjaxJson.getSuccessData(storageSourceResultList); } @ApiOperationSupport(order = 2) @ApiOperation(value = "获取文件列表", notes = "获取某个存储源下, 指定路径的文件&文件夹列表") @PostMapping("/files") public AjaxJson list(@Valid @RequestBody FileListRequest fileListRequest) throws Exception { StorageSource storageSource = storageSourceService.findByStorageKey(fileListRequest.getStorageKey()); if (storageSource == null) { throw new InvalidStorageSourceException("存储源不存在"); } Integer storageId = storageSource.getId(); // 处理请求参数默认值 fileListRequest.handleDefaultValue(); // 获取文件列表 AbstractBaseFileService fileService = storageSourceContext.get(storageId); List fileItemList = fileService.fileList(fileListRequest.getPath()); // 执行责任链 FileContext fileContext = FileContext.builder() .storageId(storageId) .fileListRequest(fileListRequest) .fileItemList(fileItemList).build(); fileChain.execute(fileContext); return AjaxJson.getSuccessData(new FileInfoResult(fileContext.getFileItemList(), fileContext.getPasswordPattern())); } @ApiOperationSupport(order = 3) @ApiOperation(value = "搜索文件", notes = "搜索指定存储源下的文件和文件夹") @PostMapping("/search") public AjaxJson> search(@Valid @RequestBody SearchStorageRequest searchStorageRequest) { AbstractBaseFileService fileService = storageSourceContext.getByKey(searchStorageRequest.getStorageKey()); List search = fileService.search(searchStorageRequest.getSearchVal()); return AjaxJson.getSuccessData(search); } } \ No newline at end of file diff --git a/src/main/java/im/zhaojun/zfile/home/controller/SiteController.java b/src/main/java/im/zhaojun/zfile/home/controller/SiteController.java index 88ccef9..4773a22 100644 --- a/src/main/java/im/zhaojun/zfile/home/controller/SiteController.java +++ b/src/main/java/im/zhaojun/zfile/home/controller/SiteController.java @@ -10,6 +10,7 @@ import im.zhaojun.zfile.admin.service.ReadmeConfigService; import im.zhaojun.zfile.admin.service.StorageSourceService; import im.zhaojun.zfile.admin.service.SystemConfigService; import im.zhaojun.zfile.common.config.ZFileProperties; +import im.zhaojun.zfile.common.exception.InvalidStorageSourceException; import im.zhaojun.zfile.common.util.AjaxJson; import im.zhaojun.zfile.home.convert.StorageSourceConvert; import im.zhaojun.zfile.home.model.dto.SystemConfigDTO; @@ -81,6 +82,10 @@ public class SiteController { String path = fileListConfigRequest.getPath(); StorageSource storageSource = storageSourceService.findByStorageKey(storageKey); + if (storageSource == null) { + throw new InvalidStorageSourceException("存储源不存在"); + } + StorageSourceConfigResult storageSourceConfigResult = storageSourceConvert.entityToConfigResult(storageSource); // 获取是否允许文件操作 @@ -90,7 +95,7 @@ public class SiteController { Integer storageId = storageSource.getId(); // 获取指定目录 readme 文件 - ReadmeConfig readmeByPath = readmeConfigService.findReadmeByPath(storageId, path); + ReadmeConfig readmeByPath = readmeConfigService.findReadmeByPath(storageId, ""); if (ObjectUtil.isNotNull(readmeByPath)) { String readmeText = readmeByPath.getReadmeText();