reghao 6 месяцев назад
Родитель
Сommit
fc21145294

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

@@ -2,6 +2,7 @@ package cn.reghao.tnb.content.app.disk.controller;
 
 import cn.reghao.jutil.jdk.result.Result;
 import cn.reghao.jutil.web.WebResult;
+import cn.reghao.tnb.common.auth.AuthUser;
 import cn.reghao.tnb.content.app.disk.model.dto.CamRecordDto;
 import cn.reghao.tnb.content.app.disk.model.vo.CamRecordDetail;
 import cn.reghao.tnb.content.app.disk.model.vo.CamRecordInfo;
@@ -27,6 +28,7 @@ import java.util.List;
 @Tag(name = "摄像头接口")
 @RestController
 @RequestMapping("/api/content/disk/cam")
+@AuthUser
 public class CamController {
     private final CamService camService;
     private final CamRecordService camRecordService;

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

@@ -2,6 +2,7 @@ package cn.reghao.tnb.content.app.disk.controller;
 
 import cn.reghao.jutil.jdk.db.PageList;
 import cn.reghao.jutil.web.WebResult;
+import cn.reghao.tnb.common.auth.AuthUser;
 import cn.reghao.tnb.common.db.SelectOption;
 import cn.reghao.tnb.content.app.disk.model.dto.AlbumAdd;
 import cn.reghao.tnb.content.app.disk.model.dto.AlbumCreate;
@@ -23,6 +24,7 @@ import java.util.List;
 @Tag(name = "网盘相册接口")
 @RestController
 @RequestMapping("/api/content/disk/album")
+@AuthUser
 public class DiskAlbumController {
     private final DiskAlbumService diskAlbumService;
 

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

@@ -2,6 +2,7 @@ package cn.reghao.tnb.content.app.disk.controller;
 
 import cn.reghao.jutil.jdk.db.PageList;
 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.RenameFile;
 import cn.reghao.tnb.content.app.disk.model.dto.SearchForm;
@@ -25,6 +26,7 @@ import java.util.List;
 @Tag(name = "网盘文件接口")
 @RestController
 @RequestMapping("/api/content/disk/file")
+@AuthUser
 public class DiskFileController {
     private int pageSize = 10;
     private final DiskFileService diskFileService;
@@ -35,7 +37,7 @@ public class DiskFileController {
 
     @Operation(summary = "网盘文件列表", description = "N")
     @GetMapping("/list")
-    public String diskPage(SearchForm searchForm) {
+    public String diskPage(@Validated SearchForm searchForm) {
         Integer pageNumber = searchForm.getPn();
         String path = searchForm.getPath();
         Integer fileType = searchForm.getFileType();
@@ -48,14 +50,18 @@ public class DiskFileController {
             pid = netDisk.getFileId();
         }
 
+
         long loginUser = UserContext.getUserId();
-        DiskQuery diskQuery = new DiskQuery.Builder()
+        DiskQuery.Builder builder  = new DiskQuery.Builder()
                 .pageNumber(pageNumber)
                 .pageSize(pageSize)
-                .fileType(fileType)
                 .pid(pid)
-                .owner(loginUser)
-                .build();
+                .owner(loginUser);
+        if (fileType != null) {
+            builder.fileType(fileType);
+        }
+
+        DiskQuery diskQuery = builder.build();
         PageList<FileInfo> pageList = diskFileService.findByDiskQuery(diskQuery);
         List<NamePath> namePathList = diskFileService.getPathList(path);
         DiskInfo diskInfo = new DiskInfo(pageList, namePathList);

+ 3 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/controller/DiskFolderController.java

@@ -1,6 +1,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.CreateFolder;
 import cn.reghao.tnb.content.app.disk.model.dto.RenameFile;
 import cn.reghao.tnb.content.app.disk.service.DiskFolderService;
@@ -17,6 +18,7 @@ import org.springframework.web.bind.annotation.*;
 @Tag(name = "网盘目录接口")
 @RestController
 @RequestMapping("/api/content/disk/folder")
+@AuthUser
 public class DiskFolderController {
     private final DiskFolderService diskFolderService;
 
@@ -25,7 +27,7 @@ public class DiskFolderController {
     }
 
     @Operation(summary = "新建目录", description = "N")
-    @PostMapping(value = "/rename", produces = MediaType.APPLICATION_JSON_VALUE)
+    @PostMapping(value = "/create", produces = MediaType.APPLICATION_JSON_VALUE)
     public String createFolder(@Validated CreateFolder createFolder) {
         diskFolderService.createFolder(createFolder);
         return WebResult.success();

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

@@ -1,6 +1,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.service.DiskSyncService;
 import io.swagger.v3.oas.annotations.Operation;
@@ -16,6 +17,7 @@ import org.springframework.web.bind.annotation.*;
 @Tag(name = "网盘同步接口")
 @RestController
 @RequestMapping("/api/content/disk/sync")
+@AuthUser
 public class DiskSyncController {
     private DiskSyncService diskSyncService;
 

+ 1 - 0
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/db/mapper/DiskAlbumMapper.java

@@ -18,6 +18,7 @@ public interface DiskAlbumMapper extends BaseMapper<DiskAlbum> {
     void updateCoverUrl(@Param("albumId") long albumId, @Param("coverUrl") String coverUrl);
     void updateNum(@Param("albumId") long albumId, @Param("num") int num);
 
+    DiskAlbum findDiskAlbum(long albumId);
     List<DiskAlbum> findByCreateBy(long createBy);
     List<DiskAlbumFile> findByAlbumId(long albumId);
 }

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/model/dto/AlbumCreate.java

@@ -9,6 +9,6 @@ import org.hibernate.validator.constraints.Length;
  */
 @Getter
 public class AlbumCreate {
-    @Length(min = 4, max = 10, message = "相册名长度为 4 ~ 10 个字符")
+    @Length(min = 1, max = 10, message = "相册名长度为 1 ~ 10 个字符")
     private String albumName;
 }

+ 2 - 0
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/model/query/DiskQuery.java

@@ -20,6 +20,8 @@ public class DiskQuery {
     private String sha256sum;
 
     private DiskQuery(Builder builder) {
+        this.pageNumber = builder.pageNumber;
+        this.pageSize = builder.pageSize;
         this.fileType = builder.fileType;
         this.owner = builder.owner;
         this.pid = builder.pid;

+ 21 - 3
content/content-service/src/main/java/cn/reghao/tnb/content/app/disk/service/DiskAlbumService.java

@@ -14,17 +14,20 @@ import cn.reghao.tnb.content.app.disk.model.dto.AlbumCreate;
 import cn.reghao.tnb.content.app.disk.model.po.DiskAlbum;
 import cn.reghao.tnb.content.app.disk.model.po.DiskAlbumFile;
 import cn.reghao.tnb.content.app.disk.model.vo.*;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
 import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
  * @author reghao
  * @date 2023-11-10 15:16:35
  */
+@Slf4j
 @Service
 public class DiskAlbumService {
     @DubboReference(check = false, timeout = 60_000)
@@ -51,7 +54,16 @@ public class DiskAlbumService {
 
     public void addAlbumFile(AlbumAdd albumAdd) {
         long albumId = albumAdd.getAlbumId();
-        List<String> fileIds = albumAdd.getFileIds();
+        Set<String> existFileIds = diskAlbumMapper.findByAlbumId(albumId).stream()
+                .map(DiskAlbumFile::getFileId)
+                .collect(Collectors.toSet());
+        List<String> fileIds = albumAdd.getFileIds().stream()
+                .filter(fileId -> !existFileIds.contains(fileId))
+                .collect(Collectors.toList());
+        if (fileIds.isEmpty()) {
+            return;
+        }
+
         long loginUser = UserContext.getUserId();
         List<DiskAlbumFile> list = netDiskMapper.findByFileIds(fileIds).stream()
                 .filter(netDisk -> netDisk.getFileType() == ObjectType.Image.getCode()
@@ -97,7 +109,7 @@ public class DiskAlbumService {
                 String signedUrl = ossService.getSignedUrlByUrl(channelCode, coverUrl);
                 diskAlbum.setCoverUrl(signedUrl);
             } catch (Exception e) {
-                // ignore
+                log.error("{}", e.getMessage());
             }
         });
 
@@ -105,9 +117,15 @@ public class DiskAlbumService {
     }
 
     public PageList<NetDiskDetail> getDiskAlbumDetail(long albumId) {
+        long loginUser = UserContext.getUserId();
+        DiskAlbum diskAlbum = diskAlbumMapper.findDiskAlbum(albumId);
+        long createBy = diskAlbum.getCreateBy();
+        if (createBy != loginUser) {
+            return PageList.empty();
+        }
+
         List<DiskAlbumFile> diskAlbumFileList = diskAlbumMapper.findByAlbumId(albumId);
         List<String> fileIds = diskAlbumFileList.stream().map(DiskAlbumFile::getFileId).collect(Collectors.toList());
-
         if (!fileIds.isEmpty()) {
             List<NetDiskDetail> netDiskDetailList = netDiskMapper.findByFileIds(fileIds).stream().map(netDisk -> {
                 String objectId = netDisk.getFileId();

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

@@ -567,7 +567,7 @@ public class DiskFileService {
 
     public PageList<FileInfo> findByDiskQuery(DiskQuery diskQuery) {
         int pageNumber = diskQuery.getPageNumber();
-        int pageSize = diskQuery.getPageNumber();
+        int pageSize = diskQuery.getPageSize();
         Page page = new Page(pageNumber, pageSize);
         int total = netDiskMapper.countByDiskQuery(diskQuery);
         List<NetDisk> netDiskList = netDiskMapper.findDiskQueryByPage(page, diskQuery);

+ 5 - 0
content/content-service/src/main/resources/mapper/disk/DiskAlbumMapper.xml

@@ -28,6 +28,11 @@
         where album_id=#{albumId}
     </update>
     
+    <select id="findDiskAlbum" resultType="cn.reghao.tnb.content.app.disk.model.po.DiskAlbum">
+        select *
+        from my_disk_album
+        where album_id=#{albumId}
+    </select>
     <select id="findByCreateBy" resultType="cn.reghao.tnb.content.app.disk.model.po.DiskAlbum">
         select *
         from my_disk_album