diff --git a/README.md b/README.md index 1620469..83dc51b 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ ## 网络拓扑图 -![网络拓扑图](https://images.gitee.com/uploads/images/2021/0324/225520_d55b109e_947714.png '屏幕截图.png') +![网络拓扑图](https://pan.qiwenshare.com/docs/img/guide/web-expand.png) ## 软件架构 diff --git a/src/main/java/com/qiwenshare/file/controller/FileController.java b/src/main/java/com/qiwenshare/file/controller/FileController.java index 35a90da..2607d9d 100644 --- a/src/main/java/com/qiwenshare/file/controller/FileController.java +++ b/src/main/java/com/qiwenshare/file/controller/FileController.java @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.qiwenshare.common.anno.MyLog; import com.qiwenshare.common.exception.NotLoginException; import com.qiwenshare.common.result.RestResult; +import com.qiwenshare.common.result.ResultCodeEnum; import com.qiwenshare.common.util.DateUtil; import com.qiwenshare.file.advice.QiwenException; import com.qiwenshare.file.api.IFileService; @@ -13,6 +14,7 @@ import com.qiwenshare.file.api.IUserFileService; import com.qiwenshare.file.api.IUserService; import com.qiwenshare.file.component.FileDealComp; import com.qiwenshare.file.config.es.FileSearch; +import com.qiwenshare.file.domain.FileBean; import com.qiwenshare.file.domain.TreeNode; import com.qiwenshare.file.domain.UserBean; import com.qiwenshare.file.domain.UserFile; @@ -22,6 +24,10 @@ import com.qiwenshare.file.dto.file.MoveFileDTO; import com.qiwenshare.file.dto.file.*; import com.qiwenshare.file.util.SessionUtil; import com.qiwenshare.file.vo.file.FileListVo; +import com.qiwenshare.ufop.factory.UFOPFactory; +import com.qiwenshare.ufop.operation.download.domain.DownloadFile; +import com.qiwenshare.ufop.operation.write.Writer; +import com.qiwenshare.ufop.operation.write.domain.WriteFile; import com.qiwenshare.ufop.util.UFOPUtils; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -42,6 +48,9 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; import java.util.*; @Tag(name = "file", description = "该接口为文件接口,主要用来做一些文件的基本操作,如创建目录,删除,移动,复制等。") @@ -61,6 +70,8 @@ public class FileController { private ElasticsearchRestTemplate elasticsearchRestTemplate; @Resource FileDealComp fileDealComp; + @Resource + UFOPFactory ufopFactory; public static final String CURRENT_MODULE = "文件接口"; @@ -469,6 +480,48 @@ public class FileController { } + @Operation(summary = "修改文件", description = "支持普通文本类文件的修改", tags = {"file"}) + @RequestMapping(value = "/update", method = RequestMethod.POST) + @ResponseBody + public RestResult updateFile(@RequestBody UpdateFileDTO updateFileDTO) { + UserBean sessionUserBean = (UserBean) SessionUtil.getSession(); + UserFile userFile = userFileService.getById(updateFileDTO.getUserFileId()); + FileBean fileBean = fileService.getById(userFile.getFileId()); + if (fileBean.getPointCount() > 1) { + return RestResult.fail().message("暂不支持修改"); + } + String content = updateFileDTO.getFileContent(); + ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(content.getBytes()); + try { + + Writer writer1 = ufopFactory.getWriter(fileBean.getStorageType()); + WriteFile writeFile = new WriteFile(); + writeFile.setFileUrl(fileBean.getFileUrl()); + int fileSize = byteArrayInputStream.available(); + writeFile.setFileSize(fileSize); + writer1.write(byteArrayInputStream, writeFile); + DownloadFile downloadFile = new DownloadFile(); + downloadFile.setFileUrl(fileBean.getFileUrl()); + InputStream inputStream = ufopFactory.getDownloader(fileBean.getStorageType()).getInputStream(downloadFile); + String md5Str = DigestUtils.md5Hex(inputStream); + fileBean.setIdentifier(md5Str); + fileBean.setModifyTime(DateUtil.getCurrentTime()); + fileBean.setModifyUserId(sessionUserBean.getUserId()); + fileBean.setFileSize((long) fileSize); + fileService.updateById(fileBean); + } catch (Exception e) { + throw new QiwenException(999999, "修改文件异常"); +// log.error(e.getMessage()); + } finally { + try { + byteArrayInputStream.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + return RestResult.success().message("修改文件成功"); + } + } diff --git a/src/main/java/com/qiwenshare/file/dto/file/UpdateFileDTO.java b/src/main/java/com/qiwenshare/file/dto/file/UpdateFileDTO.java new file mode 100644 index 0000000..c7ff8a0 --- /dev/null +++ b/src/main/java/com/qiwenshare/file/dto/file/UpdateFileDTO.java @@ -0,0 +1,19 @@ +package com.qiwenshare.file.dto.file; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * @author 马超 + * @version 1.0 + * @description: TODO + * @date 2021/12/8 19:23 + */ +@Data +@Schema(name = "修改文件DTO",required = true) +public class UpdateFileDTO { + @Schema(description = "用户文件id") + private Long userFileId; + @Schema(description = "文件内容") + private String fileContent; +}