Ver código fonte

file-servcie 中对应 tnbm 项目需要的字段

reghao 1 mês atrás
pai
commit
45831ad869

+ 9 - 2
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/controller/DiskAlbumController.java

@@ -10,6 +10,7 @@ import cn.reghao.tnb.file.app.zdisk.model.dto.AlbumCreate;
 import cn.reghao.tnb.file.app.zdisk.model.vo.DiskAlbumDetail;
 import cn.reghao.tnb.file.app.zdisk.model.vo.DiskAlbumInfo;
 import cn.reghao.tnb.file.app.zdisk.model.vo.DiskFileDetail;
+import cn.reghao.tnb.file.app.zdisk.model.vo.PhotoItem;
 import cn.reghao.tnb.file.app.zdisk.service.DiskAlbumService;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.tags.Tag;
@@ -72,8 +73,8 @@ public class DiskAlbumController {
     }
 
     @Operation(summary = "获取相册详情", description = "N")
-    @GetMapping(value = "/detail/{albumId}", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getDiskAlbumDetail(@PathVariable("albumId") long albumId, @RequestParam("pn") int pageNumber) {
+    @GetMapping(value = "/detail", produces = MediaType.APPLICATION_JSON_VALUE)
+    public String getDiskAlbumDetail(@RequestParam("albumId") long albumId, @RequestParam("pn") int pageNumber) {
         DiskAlbumDetail diskAlbumDetail = diskAlbumService.getDiskAlbumDetail(albumId, pageNumber);
         if (diskAlbumDetail != null) {
             return WebResult.success(diskAlbumDetail);
@@ -88,4 +89,10 @@ public class DiskAlbumController {
         PageList<DiskFileDetail> pageList = diskAlbumService.getAlbumExcludeFiles(fileType, pageNumber);
         return WebResult.success(pageList);
     }
+
+    @GetMapping("/items")
+    public String getPhotoItems(@RequestParam("pn") int pageNumber) {
+        PageList<PhotoItem> pageList = diskAlbumService.getPhotoItems(pageNumber);
+        return WebResult.success(pageList);
+    }
 }

+ 2 - 2
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/po/DiskFile.java

@@ -38,7 +38,7 @@ public class DiskFile extends BaseObject<Integer> {
         this.pid = "00";
         this.path = "/";
         this.filename = "/";
-        this.fileType = ObjectType.Dir.getCode();
+        this.fileType = ObjectType.Folder.getCode();
         this.sha256sum = "0";
         this.size = 0L;
         this.owner = UserContext.getUserId();
@@ -50,7 +50,7 @@ public class DiskFile extends BaseObject<Integer> {
         this.pid = pid;
         this.path = path;
         this.filename = filename;
-        this.fileType = ObjectType.Dir.getCode();
+        this.fileType = ObjectType.Folder.getCode();
         this.sha256sum = "0";
         this.size = 0L;
         this.owner = UserContext.getUserId();

+ 16 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/DiskFileDetail.java

@@ -1,6 +1,7 @@
 package cn.reghao.tnb.file.app.zdisk.model.vo;
 
 import cn.reghao.file.api.dto.ObjectMeta;
+import cn.reghao.jutil.jdk.converter.DateTimeConverter;
 import cn.reghao.tnb.file.app.zdisk.model.po.DiskFile;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
@@ -18,17 +19,31 @@ public class DiskFileDetail {
     private int fileType;
     private String filename;
     private String url;
+    private String size;
+    private String updateTime;
 
-    public DiskFileDetail(ObjectMeta objectMeta, String signedUrl) {
+    public DiskFileDetail(ObjectMeta objectMeta, String sizeStr, String signedUrl) {
         this.fileId = objectMeta.getObjectId();
         this.fileType = objectMeta.getFileType();
         this.filename = objectMeta.getFilename();
         this.url = signedUrl;
     }
 
+    public DiskFileDetail(DiskFile diskFile, String sizeStr) {
+        this.fileId = diskFile.getFileId();
+        this.fileType = diskFile.getFileType();
+        this.filename = diskFile.getFilename();
+        this.url = "";
+        this.size = sizeStr;
+        this.updateTime = DateTimeConverter.format(diskFile.getUpdateTime());
+    }
+
     public DiskFileDetail(DiskFile diskFile) {
         this.fileId = diskFile.getFileId();
         this.fileType = diskFile.getFileType();
         this.filename = diskFile.getFilename();
+        this.url = "";
+        this.size = "";
+        this.updateTime = "";
     }
 }

+ 1 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/FileInfo.java

@@ -26,6 +26,6 @@ public class FileInfo {
         this.updateTime = DateTimeConverter.format(diskFile.getUpdateTime());
         this.size = size;
         this.fileType = diskFile.getFileType();
-        this.fileTypeStr = ObjectType.getDescByCode(diskFile.getFileType());
+        this.fileTypeStr = ObjectType.getDescByCode(diskFile.getFileType()).toLowerCase();
     }
 }

+ 36 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/PhotoItem.java

@@ -0,0 +1,36 @@
+package cn.reghao.tnb.file.app.zdisk.model.vo;
+
+import cn.reghao.jutil.jdk.converter.DateTimeConverter;
+import cn.reghao.oss.api.constant.ObjectType;
+import cn.reghao.tnb.file.app.zdisk.model.po.DiskFile;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+/**
+ * @author reghao
+ * @date 2026-05-11 11:39:56
+ */
+@NoArgsConstructor
+@Data
+public class PhotoItem {
+    private String fileId;
+    private String filename;
+    private String type;
+    private String url;
+    private String videoUrl;
+    private String duration;
+    private String size;
+    private String updateTime;
+
+    public PhotoItem(DiskFile diskFile, String sizeStr) {
+        this.fileId = diskFile.getFileId();
+        this.filename = diskFile.getFilename();
+        this.type = ObjectType.getDescByCode(diskFile.getFileType()).toLowerCase();
+        this.type = ObjectType.Video.name().toLowerCase();
+        this.url = "//picx.zhimg.com/v2-8ca5db58f0436482878e429b58c5f171_r.jpg";
+        this.videoUrl = "//vdn6.vzuu.com/HD/ebc58e72-af2c-11e8-a08a-0242ac112a08.mp4?pkey=AAV8mYhgmIFeBMVEaD-fMj0hDSteKP-FlUXZhYeP5tcC1fRTVE0WdgQOtTNCCnNmA-zX2b5YVMwudoCKu9QuG3MN&bu=1513c7c2&c=avc.0.0&expiration=1778489737&f=mp4&pu=da4bec50&v=ks6&pp=ChMxNDAxNjIzODY1NzM5NTc5MzkyGGMiC2ZlZWRfY2hvaWNlMhMxMzY5MDA1NjA4NTk5OTA0MjU3PXu830Q%3D&pf=Web&pt=zhihu";
+        this.duration = "";
+        this.size = sizeStr;
+        this.updateTime = DateTimeConverter.format(diskFile.getUpdateTime());
+    }
+}

+ 35 - 4
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/DiskAlbumService.java

@@ -1,6 +1,8 @@
 package cn.reghao.tnb.file.app.zdisk.service;
 
 import cn.reghao.file.api.iface.OssService;
+import cn.reghao.jutil.jdk.converter.ByteConverter;
+import cn.reghao.jutil.jdk.converter.ByteType;
 import cn.reghao.jutil.jdk.web.db.Page;
 import cn.reghao.jutil.jdk.web.db.PageList;
 import cn.reghao.jutil.jdk.web.result.Result;
@@ -21,6 +23,7 @@ import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbum;
 import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbumFile;
 import cn.reghao.tnb.file.app.zdisk.model.po.DiskFile;
 import cn.reghao.tnb.common.util.IdService;
+import cn.reghao.tnb.file.app.zdisk.model.vo.PhotoItem;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
@@ -49,16 +52,19 @@ public class DiskAlbumService {
     private final DiskFileService diskFileService;
     private DiskShareService diskShareService;
     private final IdService idService;
+    private final ByteConverter byteConverter;
 
     public DiskAlbumService(DiskFileMapper diskFileMapper, DiskAlbumMapper diskAlbumMapper,
                             DiskAlbumRepository diskAlbumRepository, DiskFileService diskFileService,
-                            DiskShareService diskShareService, IdService idService) {
+                            DiskShareService diskShareService, IdService idService,
+                            ByteConverter byteConverter) {
         this.diskFileMapper = diskFileMapper;
         this.diskAlbumMapper = diskAlbumMapper;
         this.diskAlbumRepository = diskAlbumRepository;
         this.diskFileService = diskFileService;
         this.diskShareService = diskShareService;
         this.idService = idService;
+        this.byteConverter = byteConverter;
     }
 
     public void createAlbum(AlbumCreate albumCreate) {
@@ -101,7 +107,7 @@ public class DiskAlbumService {
                 .collect(Collectors.groupingBy(DiskFile::getFileType));
 
         List<DiskFile> diskFileList = new ArrayList<>();
-        List<DiskFile> folders = groupMap.get(ObjectType.Dir.getCode());
+        List<DiskFile> folders = groupMap.get(ObjectType.Folder.getCode());
         if (folders != null) {
             List<String> pids = folders.stream().map(DiskFile::getFileId).collect(Collectors.toList());
             // 只获取当前文件夹中的文件, 不递归查找子文件夹
@@ -304,7 +310,7 @@ public class DiskAlbumService {
                 .sorted(Comparator.comparingInt(o -> map.get(o.getSha256sum())))
                 .map(diskFile -> {
                     String objectId = diskFile.getFileId();
-                    return diskFileService.getDiskFileDetail(channelCode, objectId);
+                    return diskFileService.getDiskFileDetail0(objectId);
                 })
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());
@@ -333,9 +339,34 @@ public class DiskAlbumService {
                 String signedUrl = ossService.getSignedUrl(fileId, null);
                 diskFileDetail.setUrl(signedUrl);
             } catch (Exception e) {
-                e.printStackTrace();
+                log.error("{}", e.getMessage());
             }
         }
         return PageList.pageList(pageNumber, pageSize, total, list);
     }
+
+    public PageList<PhotoItem> getPhotoItems(int pageNumber) {
+        long albumId = 101102L;
+        long loginUser = UserContext.getUserId();
+        Page page = new Page(pageNumber, pageSize);
+
+        int total = diskAlbumMapper.countDiskAlbumFile(albumId);
+        List<DiskAlbumFile> diskAlbumFiles = diskAlbumMapper.findDiskAlbumFileByPage(page, albumId);
+        List<String> sha256sumList = diskAlbumFiles
+                .stream()
+                .map(DiskAlbumFile::getSha256sum)
+                .collect(Collectors.toList());
+
+        List<PhotoItem> list = new ArrayList<>();
+        if (!sha256sumList.isEmpty()) {
+            list = diskFileMapper.findSha256sumGroup(sha256sumList).stream()
+                    .map(diskFile -> {
+                        String sizeStr = byteConverter.convert(ByteType.Bytes, diskFile.getSize());
+                        return new PhotoItem(diskFile, sizeStr);
+                    })
+                    .toList();
+        }
+
+        return PageList.pageList(pageNumber, pageSize, total, list);
+    }
 }

+ 18 - 16
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/DiskFileService.java

@@ -83,7 +83,7 @@ public class DiskFileService {
 
         // 删除文件
         Map<String, List<DiskFile>> groupMap0 = list.stream()
-                .filter(diskFile -> diskFile.getFileType() != ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() != ObjectType.Folder.getCode())
                 .collect(Collectors.groupingBy(DiskFile::getPid));
         if (groupMap0.size() == 1) {
             // 保证 file 具有相同的 pid
@@ -100,7 +100,7 @@ public class DiskFileService {
 
         // 删除文件夹
         Map<String, List<DiskFile>> groupMap = list.stream()
-                .filter(diskFile -> diskFile.getFileType() == ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() == ObjectType.Folder.getCode())
                 .collect(Collectors.groupingBy(DiskFile::getPid));
         if (groupMap.size() == 1) {
             // 保证 folder 具有相同的 pid
@@ -125,12 +125,12 @@ public class DiskFileService {
     public void restore(List<String> fileIds) {
         List<DiskFile> list = findByFileIds(fileIds);
         List<String> files = list.stream()
-                .filter(diskFile -> diskFile.getFileType() != ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() != ObjectType.Folder.getCode())
                 .map(DiskFile::getFileId)
                 .collect(Collectors.toList());
 
         list.stream()
-                .filter(diskFile -> diskFile.getFileType() == ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() == ObjectType.Folder.getCode())
                 .map(diskFile1 -> getChildren(diskFile1.getPath()))
                 .flatMap(Collection::stream)
                 .forEach(diskFile -> {
@@ -145,12 +145,12 @@ public class DiskFileService {
     public void erase(List<String> fileIds) {
         List<DiskFile> list = findByFileIds(fileIds);
         List<String> files = list.stream()
-                .filter(diskFile -> diskFile.getFileType() != ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() != ObjectType.Folder.getCode())
                 .map(DiskFile::getFileId)
                 .collect(Collectors.toList());
 
         list.stream()
-                .filter(diskFile -> diskFile.getFileType() == ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() == ObjectType.Folder.getCode())
                 .map(diskFile -> findByPathPrefix(diskFile.getPath()))
                 .flatMap(Collection::stream)
                 .forEach(diskFile -> {
@@ -193,7 +193,7 @@ public class DiskFileService {
         current.setFilename(newFilename);
         List<DiskFile> diskFiles = new ArrayList<>();
         diskFiles.add(current);
-        if (current.getFileType() == ObjectType.Dir.getCode()) {
+        if (current.getFileType() == ObjectType.Folder.getCode()) {
             getChildren(current.getPath()).stream()
                     .filter(childFile -> !childFile.getFileId().equals(fileId))
                     .forEach(childFile -> {
@@ -230,7 +230,7 @@ public class DiskFileService {
             return Result.fail(msg);
         }
 
-        if (parentFile.getFileType() != ObjectType.Dir.getCode()) {
+        if (parentFile.getFileType() != ObjectType.Folder.getCode()) {
             String msg = "文件被移动/复制到的位置不是文件夹";
             return Result.fail(msg);
         }
@@ -274,7 +274,7 @@ public class DiskFileService {
         }
 
         List<DiskFile> copiedFiles = list.stream()
-                .filter(diskFile -> diskFile.getFileType() != ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() != ObjectType.Folder.getCode())
                 .peek(diskFile -> {
                     setRootPath(diskFile, parentFile, owner);
                     if (copy) {
@@ -284,7 +284,7 @@ public class DiskFileService {
 
         List<DiskFile> list1 = new ArrayList<>();
         list.stream()
-                .filter(diskFile -> diskFile.getFileType() == ObjectType.Dir.getCode())
+                .filter(diskFile -> diskFile.getFileType() == ObjectType.Folder.getCode())
                 .forEach(dirFile -> {
                     List<DiskFile> results = getChildren(dirFile.getPath());
                     DiskFile diskFile = list2tree(dirFile.getFileId(), results);
@@ -565,28 +565,30 @@ public class DiskFileService {
                 .owner(loginUser)
                 .build();
 
-        Page page = new Page(1, 10);
+        Page page = new Page(1, 1);
         List<DiskFile> diskFileList = diskFileMapper.findDiskQueryByPage(page, diskQuery);
         if (!diskFileList.isEmpty()) {
-            DiskFile diskFile = diskFileList.get(0);
+            DiskFile diskFile = diskFileList.getFirst();
             long owner = diskFile.getOwner();
             if (owner != loginUser) {
                 return null;
             }
 
-            int channelCode = 111;
+            String sizeStr = byteConverter.convert(ByteType.Bytes, diskFile.getSize());
+            DiskFileDetail diskFileDetail = new DiskFileDetail(diskFile, sizeStr);
             String objectId = diskFile.getFileId();
-            return getDiskFileDetail(channelCode, objectId);
+            //DiskFileDetail diskFileDetail0 = getDiskFileDetail0(objectId);
+            return diskFileDetail;
         }
 
         return null;
     }
 
-    public DiskFileDetail getDiskFileDetail(int channelCode, String objectId) {
+    public DiskFileDetail getDiskFileDetail0(String objectId) {
         try {
             ObjectMeta objectMeta = ossService.getObjectMeta(objectId);
             String signedUrl = ossService.getSignedUrl(objectId, null);
-            return new DiskFileDetail(objectMeta, signedUrl);
+            return new DiskFileDetail(objectMeta, "", signedUrl);
         } catch (Exception e) {
             log.error("{}", e.getMessage());
         }

+ 1 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/DiskFolderService.java

@@ -116,7 +116,7 @@ public class DiskFolderService {
 
         long loginUser = UserContext.getUserId();
         DiskQuery diskQuery = new DiskQuery.Builder()
-                .fileType(ObjectType.Dir.getCode())
+                .fileType(ObjectType.Folder.getCode())
                 .owner(loginUser)
                 .build();
 

+ 1 - 1
file/file-service/src/test/java/DiskUnitTest.java

@@ -61,7 +61,7 @@ public class DiskUnitTest {
 
         int fileType = ObjectType.Image.getCode();
         if (file.isDirectory()) {
-            fileType = ObjectType.Dir.getCode();
+            fileType = ObjectType.Folder.getCode();
         }
 
         String fileId = absolutePath.replace(basePath, "");