ソースを参照

DiskFileService#addDiskFile 方法完成了文件上传功能

reghao 6 ヶ月 前
コミット
c69d2b4ef2

+ 8 - 0
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/controller/DiskFileController.java

@@ -5,6 +5,7 @@ import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.web.WebResult;
 import cn.reghao.tnb.common.auth.AuthUser;
 import cn.reghao.tnb.common.auth.UserContext;
+import cn.reghao.tnb.content.app.disk.model.dto.UploadedFile;
 import cn.reghao.tnb.content.app.disk.model.dto.MoveFile;
 import cn.reghao.tnb.content.app.disk.model.dto.RenameFile;
 import cn.reghao.tnb.content.app.disk.model.dto.SearchForm;
@@ -37,6 +38,13 @@ public class DiskFileController {
         this.diskFileService = diskFileService;
     }
 
+    @Operation(summary = "添加网盘文件", description = "N")
+    @PostMapping(value = "/add", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String addFile(@RequestBody @Validated UploadedFile uploadedFile) {
+        Result result = diskFileService.addDiskFile(uploadedFile);
+        return WebResult.result(result);
+    }
+
     @Operation(summary = "网盘文件列表", description = "N")
     @GetMapping("/list")
     public String diskPage(@Validated SearchForm searchForm) {

+ 2 - 2
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/controller/DiskSyncController.java

@@ -2,7 +2,7 @@ package cn.reghao.tnb.content.app.disk.controller;
 
 import cn.reghao.jutil.web.WebResult;
 import cn.reghao.tnb.common.auth.AuthUser;
-import cn.reghao.tnb.content.app.disk.model.dto.CreateFile;
+import cn.reghao.tnb.content.app.disk.model.dto.UploadedFile;
 import cn.reghao.tnb.content.app.disk.service.DiskSyncService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -39,7 +39,7 @@ public class DiskSyncController {
 
     @Operation(summary = "添加文件(或目录)", description = "N")
     @PostMapping(value = "/put", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String putFile(@RequestBody @Validated CreateFile createFile) {
+    public String putFile(@RequestBody @Validated UploadedFile uploadedFile) {
         return WebResult.success();
     }
 }

+ 3 - 5
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/model/dto/CreateFile.java → content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/model/dto/UploadedFile.java

@@ -10,13 +10,11 @@ import javax.validation.constraints.NotNull;
  * @date 2025-09-01 10:31:44
  */
 @Getter
-public class CreateFile {
-    @NotBlank
-    private String parentPath;
-    @NotBlank
-    private String filename;
+public class UploadedFile {
     @NotNull
     private Integer channelCode;
     @NotBlank
     private String uploadId;
+    @NotBlank
+    private String pid;
 }

+ 26 - 19
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/service/DiskFileService.java

@@ -12,7 +12,7 @@ import cn.reghao.oss.sdk.model.dto.ObjectInfo;
 import cn.reghao.tnb.common.auth.UserContext;
 import cn.reghao.tnb.common.util.StringUtil;
 import cn.reghao.tnb.content.app.disk.db.mapper.DiskFileMapper;
-import cn.reghao.tnb.content.app.disk.model.dto.CreateFile;
+import cn.reghao.tnb.content.app.disk.model.dto.UploadedFile;
 import cn.reghao.tnb.content.app.disk.model.dto.MoveFile;
 import cn.reghao.tnb.content.app.disk.model.po.DiskFile;
 import cn.reghao.tnb.content.app.disk.model.query.DiskQuery;
@@ -21,7 +21,6 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
 
-import java.io.File;
 import java.time.LocalDateTime;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -45,27 +44,24 @@ public class DiskFileService {
         this.byteConverter = new ByteConverter();
     }
 
-    public Result addDiskFile(CreateFile createFile) {
-        String parentPath = createFile.getParentPath();
-        File file = new File(parentPath);
-        String filename = createFile.getFilename();
-        String path = String.format("%s/%s", file.getAbsolutePath(), filename);
-
-        DiskFile diskFile1 = diskSyncService.checkFile(parentPath);
+    public Result addDiskFile(UploadedFile uploadedFile) {
+        String pid = uploadedFile.getPid();
+        DiskFile diskFile1 = findByFileId(pid);
         if (diskFile1 == null) {
             return Result.fail("folder not exist");
         }
-        String pid = diskFile1.getFileId();
-
-        DiskFile diskFile2 = diskSyncService.checkFile(path);
-        if (diskFile2 != null) {
-            return Result.fail("file exist");
-        }
-
-        int channelCode = createFile.getChannelCode();
-        String uploadId = createFile.getUploadId();
+        String parentPath = diskFile1.getPath();
         try {
+            int channelCode = uploadedFile.getChannelCode();
+            String uploadId = uploadedFile.getUploadId();
             ObjectInfo objectInfo = ossService.getObjectInfo(channelCode, uploadId);
+            String filename = objectInfo.getFilename();
+            String path = String.format("%s/%s", parentPath, filename);
+            DiskFile diskFile2 = diskSyncService.checkFile(path);
+            if (diskFile2 != null) {
+                return Result.fail("file exist");
+            }
+
             long size = objectInfo.getSize();
             int fileType = objectInfo.getFileType();
             String sha256sum = objectInfo.getSha256sum();
@@ -467,7 +463,18 @@ public class DiskFileService {
                 .path(path)
                 .owner(owner)
                 .build();
-        Page page = new Page(1, 10);
+        Page page = new Page(1, 1);
+        List<DiskFile> diskFileList = diskFileMapper.findDiskQueryByPage(page, diskQuery);
+        return diskFileList.isEmpty() ? null : diskFileList.get(0);
+    }
+
+    public DiskFile findByFileId(String fileId) {
+        long owner = UserContext.getUserId();
+        DiskQuery diskQuery = new DiskQuery.Builder()
+                .fileId(fileId)
+                .owner(owner)
+                .build();
+        Page page = new Page(1, 1);
         List<DiskFile> diskFileList = diskFileMapper.findDiskQueryByPage(page, diskQuery);
         return diskFileList.isEmpty() ? null : diskFileList.get(0);
     }