فهرست منبع

清理 file-service 无用代码

reghao 5 روز پیش
والد
کامیت
ee19d06674
22فایلهای تغییر یافته به همراه139 افزوده شده و 962 حذف شده
  1. 0 98
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/controller/DiskAlbumController.java
  2. 31 0
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/controller/PhotoAlbumController.java
  3. 3 1
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/mapper/CamDeviceMapper.java
  4. 0 17
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/mapper/DiskAlbumMapper.java
  5. 0 29
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/mapper/DiskShareMapper.java
  6. 0 34
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/repository/DiskAlbumRepository.java
  7. 0 24
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/repository/DiskShareRepository.java
  8. 2 0
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/po/CamDevice.java
  9. 0 33
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/po/DiskShare.java
  10. 0 20
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/po/DiskShareTo.java
  11. 2 4
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/CamRecordInfo.java
  12. 0 20
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/DiskAlbumDetail.java
  13. 0 23
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/DiskAlbumInfo.java
  14. 7 7
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/DiskShareInfo.java
  15. 0 27
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/PhotoItem.java
  16. 2 3
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/CamService.java
  17. 0 371
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/DiskAlbumService.java
  18. 12 94
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/DiskShareService.java
  19. 61 0
      file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/PhotoAlbumService.java
  20. 19 8
      file/file-service/src/main/resources/mapper/disk/CamDeviceMapper.xml
  21. 0 85
      file/file-service/src/main/resources/mapper/disk/DiskAlbumMapper.xml
  22. 0 64
      file/file-service/src/main/resources/mapper/disk/DiskShareMapper.xml

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

@@ -1,98 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.controller;
-
-import cn.reghao.jutil.jdk.web.db.PageList;
-import cn.reghao.jutil.jdk.web.result.Result;
-import cn.reghao.tnb.common.web.WebResult;
-import cn.reghao.tnb.common.auth.AuthUser;
-import cn.reghao.tnb.common.db.SelectOption;
-import cn.reghao.tnb.file.app.zdisk.model.dto.AlbumEdit;
-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;
-import org.springframework.http.MediaType;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2025-09-01 14:23:45
- */
-@Tag(name = "网盘相册接口")
-@RestController
-@RequestMapping("/api/disk/album")
-@AuthUser
-public class DiskAlbumController {
-    private final DiskAlbumService diskAlbumService;
-
-    public DiskAlbumController(DiskAlbumService diskAlbumService) {
-        this.diskAlbumService = diskAlbumService;
-    }
-
-    @Operation(summary = "创建相册", description = "N")
-    @PostMapping(value = "/create", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String createDiskAlbum(@RequestBody @Validated AlbumCreate albumCreate) {
-        diskAlbumService.createAlbum(albumCreate);
-        return WebResult.success();
-    }
-
-    @Operation(summary = "编辑相册", description = "N")
-    @PostMapping(value = "/edit", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String editDiskAlbum(@RequestBody @Validated AlbumEdit albumEdit) {
-        int operation = albumEdit.getOperation();
-        Result result = Result.fail("operation unknown");
-        if (operation == 1) {
-            result = diskAlbumService.addAlbumFile(albumEdit.getAlbumId(), albumEdit.getFileIds());
-        } else if (operation == 2) {
-            result = diskAlbumService.updateAlbumFilePosition(albumEdit.getAlbumId(), albumEdit.getFileIds());
-        } else if (operation == 3) {
-            result = diskAlbumService.deleteAlbumFile(albumEdit.getAlbumId(), albumEdit.getFileIds());
-        }
-
-        return WebResult.result(result);
-    }
-
-    @Operation(summary = "获取相册 KV 列表", description = "N")
-    @GetMapping(value = "/kv", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getAlbumKeyValues() {
-        List<SelectOption> keyValues = diskAlbumService.getAlbumKeyValues();
-        return WebResult.success(keyValues);
-    }
-
-    @Operation(summary = "获取相册列表", description = "N")
-    @GetMapping(value = "/list", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String getDiskAlbum() {
-        List<DiskAlbumInfo> diskAlbumList = diskAlbumService.getAlbumList();
-        return WebResult.success(diskAlbumList);
-    }
-
-    @Operation(summary = "获取相册详情", description = "N")
-    @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);
-        }
-
-        return WebResult.fail();
-    }
-
-    @Operation(summary = "获取合集中不存在的文件列表", description = "N")
-    @GetMapping("/exclude")
-    public String getAlbumExcludeFiles(@RequestParam("fileType") int fileType, @RequestParam("pn") int pageNumber) {
-        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);
-    }
-}

+ 31 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/controller/PhotoAlbumController.java

@@ -0,0 +1,31 @@
+package cn.reghao.tnb.file.app.zdisk.controller;
+
+import cn.reghao.jutil.jdk.web.db.PageList;
+import cn.reghao.tnb.common.web.WebResult;
+import cn.reghao.tnb.common.auth.AuthUser;
+import cn.reghao.tnb.file.app.zdisk.model.vo.PhotoItem;
+import cn.reghao.tnb.file.app.zdisk.service.PhotoAlbumService;
+import io.swagger.v3.oas.annotations.tags.Tag;
+import org.springframework.web.bind.annotation.*;
+
+/**
+ * @author reghao
+ * @date 2025-09-01 14:23:45
+ */
+@Tag(name = "网盘相册接口")
+@RestController
+@RequestMapping("/api/disk/album")
+@AuthUser
+public class PhotoAlbumController {
+    private final PhotoAlbumService photoAlbumService;
+
+    public PhotoAlbumController(PhotoAlbumService photoAlbumService) {
+        this.photoAlbumService = photoAlbumService;
+    }
+
+    @GetMapping("/items")
+    public String getPhotoItems(@RequestParam("pn") int pageNumber) {
+        PageList<PhotoItem> pageList = photoAlbumService.getPhotoItems(pageNumber);
+        return WebResult.success(pageList);
+    }
+}

+ 3 - 1
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/mapper/CamDeviceMapper.java

@@ -19,5 +19,7 @@ public interface CamDeviceMapper extends BaseMapper<CamDevice> {
     List<CamDevice> findCamDeviceQueryByPage(@Param("page") Page page,
                                              @Param("camDeviceQuery") CamDeviceQuery camDeviceQuery);
 
-    List<CamDevice> findByCamIds(List<Long> list);
+    List<CamDevice> findByShareGroup(long userId);
+    List<CamDevice> findBySharedCams(long sharedTo);
+    List<Long> findByShareToUsers(long camId);
 }

+ 0 - 17
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/mapper/DiskAlbumMapper.java

@@ -16,21 +16,4 @@ import java.util.List;
  */
 @Mapper
 public interface DiskAlbumMapper extends BaseMapper<DiskAlbum> {
-    void saveAlbumFiles(List<DiskAlbumFile> list);
-    void updateDiskAlbum(@Param("albumId") long albumId,
-                         @Param("coverFileId") String coverFileId,
-                         @Param("num") int num);
-    void updateDiskAlbumNum(@Param("albumId") long albumId, @Param("num") int num);
-    void updateDiskAlbumCover(@Param("albumId") long albumId, @Param("coverFileId") String coverFileId);
-    void updateDiskAlbumFilePos(@Param("id") int id, @Param("pos") int pos);
-    void deleteDiskAlbumFiles(@Param("albumId") long albumId,
-                              @Param("sha256sumList") Collection<String> sha256sumList);
-
-    DiskAlbum findDiskAlbum(long albumId);
-    List<DiskAlbum> findByCreateBy(long createBy);
-    List<DiskAlbumFile> findDiskAlbumFiles(long albumId);
-    List<DiskAlbumFile> findDiskAlbumFileList(@Param("albumId") long albumId,
-                                           @Param("sha256sumList") Collection<String> sha256sumList);
-    int countDiskAlbumFile(long albumId);
-    List<DiskAlbumFile> findDiskAlbumFileByPage(@Param("page") Page page, @Param("albumId") long albumId);
 }

+ 0 - 29
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/mapper/DiskShareMapper.java

@@ -1,29 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.db.mapper;
-
-import cn.reghao.jutil.jdk.web.db.BaseMapper;
-import cn.reghao.jutil.jdk.web.db.Page;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskShare;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskShareTo;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2025-09-05 17:06:28
- */
-@Mapper
-public interface DiskShareMapper extends BaseMapper<DiskShare> {
-    void saveDiskShareTo(List<DiskShareTo> list);
-    void updateSetDelete(long shareId);
-    void deleteShareToList(long shareId);
-
-    int countDiskShare(long createBy);
-    List<DiskShare> findDiskShareByPage(@Param("page") Page page, @Param("createBy") long createBy);
-    DiskShare findDiskShare(long shareId);
-
-    int countDiskShareTo(long shareId);
-    List<Long> findDiskShareToList(@Param("shareId") long shareId);
-    List<DiskShare> findDiskShareList(@Param("albumType") int albumType, @Param("shareTo") long shareTo);
-}

+ 0 - 34
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/repository/DiskAlbumRepository.java

@@ -1,34 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.db.repository;
-
-import cn.reghao.tnb.file.app.zdisk.db.mapper.DiskAlbumMapper;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbumFile;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2025-09-02 22:42:28
- */
-@Repository
-public class DiskAlbumRepository {
-    private final DiskAlbumMapper diskAlbumMapper;
-
-    public DiskAlbumRepository(DiskAlbumMapper diskAlbumMapper) {
-        this.diskAlbumMapper = diskAlbumMapper;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void saveDiskAlbum(long albumId, String coverFileId, int num, List<DiskAlbumFile> list) {
-        diskAlbumMapper.updateDiskAlbum(albumId, coverFileId, num);
-        diskAlbumMapper.saveAlbumFiles(list);
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteDiskAlbumFiles(long albumId, int num, Collection<String> sha256sumList) {
-        diskAlbumMapper.deleteDiskAlbumFiles(albumId, sha256sumList);
-        diskAlbumMapper.updateDiskAlbumNum(albumId, num);
-    }
-}

+ 0 - 24
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/db/repository/DiskShareRepository.java

@@ -1,24 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.db.repository;
-
-import cn.reghao.tnb.file.app.zdisk.db.mapper.DiskShareMapper;
-import org.springframework.stereotype.Repository;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * @author reghao
- * @date 2025-09-06 15:52:24
- */
-@Repository
-public class DiskShareRepository {
-    private final DiskShareMapper diskShareMapper;
-
-    public DiskShareRepository(DiskShareMapper diskShareMapper) {
-        this.diskShareMapper = diskShareMapper;
-    }
-
-    @Transactional(rollbackFor = Exception.class)
-    public void deleteShare(long shareId) {
-        diskShareMapper.updateSetDelete(shareId);
-        diskShareMapper.deleteShareToList(shareId);
-    }
-}

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

@@ -23,6 +23,7 @@ public class CamDevice extends BaseObject<Integer> {
     private Long addBy;
     private String pushUrl;
     private String pullUrl;
+    private Long sharedTo;
 
     public CamDevice(Long camId, String camName) {
         this.camId = camId;
@@ -30,5 +31,6 @@ public class CamDevice extends BaseObject<Integer> {
         this.state = false;
         this.addAt = LocalDateTime.now();
         this.addBy = UserContext.getUserId();
+        this.sharedTo = 0L;
     }
 }

+ 0 - 33
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/po/DiskShare.java

@@ -1,33 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.model.po;
-
-import cn.reghao.jutil.jdk.web.db.BaseObject;
-import cn.reghao.tnb.common.auth.UserContext;
-import cn.reghao.tnb.file.app.zdisk.model.dto.ShareCreate;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-/**
- * @author reghao
- * @date 2025-09-05 17:06:14
- */
-@NoArgsConstructor
-@AllArgsConstructor
-@Setter
-@Getter
-public class DiskShare extends BaseObject<Integer> {
-    private Long shareId;
-    private Integer albumType;
-    private Long albumId;
-    private Long createAt;
-    private Long createBy;
-
-    public DiskShare(long shareId, ShareCreate shareCreate) {
-        this.shareId = shareId;
-        this.albumType = shareCreate.getAlbumType();
-        this.albumId = shareCreate.getAlbumId();
-        this.createAt = System.currentTimeMillis();
-        this.createBy = UserContext.getUserId();
-    }
-}

+ 0 - 20
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/po/DiskShareTo.java

@@ -1,20 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.model.po;
-
-import cn.reghao.jutil.jdk.web.db.BaseObject;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-/**
- * @author reghao
- * @date 2025-09-05 17:17:03
- */
-@NoArgsConstructor
-@AllArgsConstructor
-@Setter
-@Getter
-public class DiskShareTo extends BaseObject<Integer> {
-    private Long shareId;
-    private Long userId;
-}

+ 2 - 4
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/model/vo/CamRecordInfo.java

@@ -1,14 +1,12 @@
 package cn.reghao.tnb.file.app.zdisk.model.vo;
 
-import lombok.Getter;
-
-import java.time.LocalDateTime;
+import lombok.Data;
 
 /**
  * @author reghao
  * @date 2025-08-28 22:57:45
  */
-@Getter
+@Data
 public class CamRecordInfo {
     private long camId;
     private long recordId;

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

@@ -1,20 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.model.vo;
-
-import cn.reghao.jutil.jdk.web.db.PageList;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbum;
-
-/**
- * @author reghao
- * @date 2025-09-02 23:18:19
- */
-public class DiskAlbumDetail {
-    private long albumId;
-    private String albumName;
-    private PageList<DiskFileDetail> pageList;
-
-    public DiskAlbumDetail(DiskAlbum diskAlbum, PageList<DiskFileDetail> pageList) {
-        this.albumId = diskAlbum.getAlbumId();
-        this.albumName = diskAlbum.getAlbumName();
-        this.pageList = pageList;
-    }
-}

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

@@ -1,23 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.model.vo;
-
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbum;
-
-/**
- * @author reghao
- * @date 2025-09-04 15:56:59
- */
-public class DiskAlbumInfo {
-    private long albumId;
-    private String albumName;
-    private Integer fileType;
-    private String coverUrl;
-    private Integer num;
-
-    public DiskAlbumInfo(DiskAlbum diskAlbum, String coverUrl) {
-        this.albumId = diskAlbum.getAlbumId();
-        this.albumName = diskAlbum.getAlbumName();
-        this.fileType = diskAlbum.getFileType();
-        this.coverUrl =coverUrl;
-        this.num = diskAlbum.getNum();
-    }
-}

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

@@ -2,7 +2,7 @@ package cn.reghao.tnb.file.app.zdisk.model.vo;
 
 import cn.reghao.jutil.jdk.converter.DateTimeConverter;
 import cn.reghao.tnb.file.app.zdisk.model.constant.AlbumType;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskShare;
+import cn.reghao.tnb.file.app.zdisk.model.po.CamDevice;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
 
@@ -19,11 +19,11 @@ public class DiskShareInfo {
     private String shareAt;
     private int num;
 
-    public DiskShareInfo(DiskShare diskShare, String albumName, int num) {
-        this.shareId = diskShare.getShareId();
-        this.albumType = AlbumType.getByCode(diskShare.getAlbumType()).getName();
-        this.albumName = albumName;
-        this.shareAt = DateTimeConverter.format(diskShare.getCreateAt());
-        this.num = num;
+    public DiskShareInfo(CamDevice camDevice) {
+        this.shareId = camDevice.getCamId();
+        this.albumType = AlbumType.cam.name();
+        this.albumName = camDevice.getCamName();
+        this.shareAt = DateTimeConverter.format(camDevice.getCreateTime());
+        this.num = 0;
     }
 }

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

@@ -1,9 +1,5 @@
 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.CameraPhoto;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskFile;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 
@@ -22,27 +18,4 @@ public class PhotoItem {
     private String duration;
     private String size;
     private String createAt;
-
-    public PhotoItem(DiskFile diskFile, String sizeStr, String objectUrl) {
-        this.fileId = diskFile.getFileId();
-        this.filename = diskFile.getFilename();
-        this.fileType = diskFile.getFileType();
-        this.url = objectUrl;
-        this.videoUrl = objectUrl;
-        this.duration = "00:01";
-        this.size = sizeStr;
-        this.createAt = DateTimeConverter.format(diskFile.getCreateTime());
-    }
-
-    public PhotoItem(DiskFile diskFile, String sizeStr, String url, String videoUrl,
-                     CameraPhoto cameraPhoto, String durationStr) {
-        this.fileId = diskFile.getFileId();
-        this.filename = diskFile.getFilename();
-        this.fileType = diskFile.getFileType();
-        this.url = url;
-        this.videoUrl = videoUrl;
-        this.duration = durationStr;
-        this.size = sizeStr;
-        this.createAt = DateTimeConverter.format(cameraPhoto.getShotAt());
-    }
 }

+ 2 - 3
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/CamService.java

@@ -59,13 +59,12 @@ public class CamService {
                 .build();
         Page page = new Page(1, pageSize);
         List<CamDevice> camDeviceList = camDeviceMapper.findCamDeviceQueryByPage(page, camDeviceQuery);
-
-        List<Long> sharedCamIds = diskShareService.getSharedAlbumIds(AlbumType.cam.getValue(), loginUser);
+        /*List<Long> sharedCamIds = diskShareService.getSharedAlbumIds(AlbumType.cam.getValue(), loginUser);
         if (!sharedCamIds.isEmpty()) {
             List<CamDevice> sharedCamDevices = camDeviceMapper.findByCamIds(sharedCamIds);
             sharedCamDevices.forEach(this::setSharedCamName);
             camDeviceList.addAll(sharedCamDevices);
-        }
+        }*/
         return camDeviceList;
     }
 

+ 0 - 371
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/DiskAlbumService.java

@@ -1,371 +0,0 @@
-package cn.reghao.tnb.file.app.zdisk.service;
-
-import cn.reghao.tnb.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;
-import cn.reghao.tnb.common.util.ConstantId;
-import cn.reghao.tnb.common.util.StringUtil;
-import cn.reghao.tnb.file.app.zdisk.db.mapper.CameraPhotoMapper;
-import cn.reghao.tnb.file.app.zdisk.model.constant.AlbumType;
-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.oss.api.constant.ObjectType;
-import cn.reghao.tnb.auth.api.dto.AccountAvatar;
-import cn.reghao.tnb.auth.api.iface.AccountQuery;
-import cn.reghao.tnb.common.auth.UserContext;
-import cn.reghao.tnb.common.db.SelectOption;
-import cn.reghao.tnb.file.app.zdisk.db.mapper.DiskAlbumMapper;
-import cn.reghao.tnb.file.app.zdisk.db.mapper.DiskFileMapper;
-import cn.reghao.tnb.file.app.zdisk.db.repository.DiskAlbumRepository;
-import cn.reghao.tnb.file.app.zdisk.model.dto.AlbumCreate;
-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;
-
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2023-11-10 15:16:35
- */
-@Slf4j
-@Service
-public class DiskAlbumService {
-    @DubboReference(check = false, retries = 0, timeout = 60_000)
-    private AccountQuery accountQuery;
-
-    private final OssService ossService;
-    private final int albumMaxFiles = 1000;
-    private final DiskFileMapper diskFileMapper;
-    private final DiskAlbumMapper diskAlbumMapper;
-    private final DiskAlbumRepository diskAlbumRepository;
-    private final DiskFileService diskFileService;
-    private final DiskShareService diskShareService;
-    private final IdService idService;
-    private final ByteConverter byteConverter;
-    private final CameraPhotoMapper cameraPhotoMapper;
-
-    public DiskAlbumService(OssService ossService, DiskFileMapper diskFileMapper, DiskAlbumMapper diskAlbumMapper,
-                            DiskAlbumRepository diskAlbumRepository, DiskFileService diskFileService,
-                            DiskShareService diskShareService, IdService idService,
-                            ByteConverter byteConverter, CameraPhotoMapper cameraPhotoMapper) {
-        this.ossService = ossService;
-        this.diskFileMapper = diskFileMapper;
-        this.diskAlbumMapper = diskAlbumMapper;
-        this.diskAlbumRepository = diskAlbumRepository;
-        this.diskFileService = diskFileService;
-        this.diskShareService = diskShareService;
-        this.idService = idService;
-        this.byteConverter = byteConverter;
-        this.cameraPhotoMapper = cameraPhotoMapper;
-    }
-
-    public void createAlbum(AlbumCreate albumCreate) {
-        long albumId = idService.getLongId();
-        DiskAlbum diskAlbum = new DiskAlbum(albumId, albumCreate);
-        diskAlbumMapper.save(diskAlbum);
-    }
-
-    /**
-     * 添加某类型的新文件到对应类型的合集中
-     *
-     * @param fileIds 文件或文件夹 ID
-     * @return
-     * @date 2025-09-04 17:47:40
-     */
-    public synchronized Result addAlbumFile(long albumId, List<String> fileIds) {
-        DiskAlbum diskAlbum = diskAlbumMapper.findDiskAlbum(albumId);
-        if (diskAlbum == null) {
-            return Result.fail("album not exist");
-        }
-
-        long loginUser = UserContext.getUserId();
-        if (diskAlbum.getCreateBy() != loginUser) {
-            return Result.fail("not album owner");
-        }
-
-        List<String> existSha256sumList = diskAlbumMapper.findDiskAlbumFiles(albumId).stream()
-                .map(DiskAlbumFile::getSha256sum)
-                .collect(Collectors.toList());
-        if (existSha256sumList.size() >= albumMaxFiles) {
-            return Result.fail(String.format("单个合集最多能容纳 %s 张文件", albumMaxFiles));
-        }
-
-        Set<String> set = new HashSet<>(existSha256sumList);
-        int fileType = diskAlbum.getFileType();
-
-        List<DiskFile> diskFileList0 = diskFileService.findByFileIds(fileIds);
-        Map<Integer, List<DiskFile>> groupMap = diskFileList0.stream()
-                .filter(diskFile -> diskFile.getOwner() == loginUser)
-                .collect(Collectors.groupingBy(DiskFile::getFileType));
-
-        List<DiskFile> diskFileList = new ArrayList<>();
-        List<DiskFile> folders = groupMap.get(ObjectType.Folder.getCode());
-        if (folders != null) {
-            List<String> pids = folders.stream().map(DiskFile::getFileId).collect(Collectors.toList());
-            // 只获取当前文件夹中的文件, 不递归查找子文件夹
-            List<DiskFile> diskFileList1 = diskFileService.findByParentIds(pids).stream()
-                    .filter(diskFile -> diskFile.getOwner() == loginUser)
-                    .filter(diskFile -> diskFile.getFileType() == fileType)
-                    .collect(Collectors.toList());
-            diskFileList.addAll(diskFileList1);
-        }
-
-        List<DiskFile> files = groupMap.get(fileType);
-        if (files != null) {
-            List<DiskFile> diskFileList2 = diskFileList = files.stream()
-                    .filter(diskFile -> !set.contains(diskFile.getSha256sum()))
-                    .collect(Collectors.toList());
-            diskFileList.addAll(diskFileList2);
-        }
-
-        if (diskFileList.isEmpty()) {
-            return Result.fail("添加的文件在当前合集中已存在");
-        }
-
-        int currentNum = diskAlbum.getNum();
-        int addNum = diskFileList.size();
-        int num = currentNum + addNum;
-        if (num > albumMaxFiles) {
-            log.info("新添加文件数量超过合集容量, 但这个限制尚未实现...");
-        }
-
-        int startPos = currentNum+1;
-        List<DiskAlbumFile> list = new ArrayList<>();
-        for (DiskFile diskFile : diskFileList) {
-            list.add(new DiskAlbumFile(albumId, diskFile, startPos));
-            startPos++;
-        }
-
-        String coverFileId = diskFileList.get(0).getFileId();
-        diskAlbumRepository.saveDiskAlbum(albumId, coverFileId, num, list);
-        return Result.successWithMsg(String.format("当前合集中新添加了 %s 张文件", list.size()));
-    }
-
-    /**
-     * 调整合集内文件的顺序
-     *
-     * @param
-     * @return
-     * @date 2025-09-04 17:47:19
-     */
-    public Result updateAlbumFilePosition(long albumId, List<String> fileIds) {
-        DiskAlbum diskAlbum = diskAlbumMapper.findDiskAlbum(albumId);
-        if (diskAlbum == null) {
-            return Result.fail("album not exist");
-        }
-
-        long loginUser = UserContext.getUserId();
-        if (diskAlbum.getCreateBy() != loginUser) {
-            return Result.fail("not album owner");
-        }
-
-        // fileId -> pos
-        Map<String, Integer> positionMap = new HashMap<>();
-        int startPos = 1;
-        for (int i = 0; i < fileIds.size(); i++) {
-            positionMap.put(fileIds.get(i), i+startPos);
-        }
-
-        // sha256sum -> fileId
-        Map<String, String> map = new HashMap<>();
-        diskFileService.findByFileIds(fileIds).forEach(diskFile -> {
-                    map.put(diskFile.getSha256sum(), diskFile.getFileId());
-                });
-
-        List<DiskAlbumFile> diskAlbumFileList = diskAlbumMapper.findDiskAlbumFileList(albumId, map.keySet());
-        for (DiskAlbumFile diskAlbumFile : diskAlbumFileList) {
-            int id = diskAlbumFile.getId();
-            String sha256sum = diskAlbumFile.getSha256sum();
-            Integer pos = positionMap.get(map.get(sha256sum));
-            if (pos != null) {
-                diskAlbumMapper.updateDiskAlbumFilePos(id, pos);
-            }
-        }
-
-        return Result.success();
-    }
-
-    /**
-     * 删除合集内的文件
-     *
-     * @param
-     * @return
-     * @date 2025-09-04 17:48:05
-     */
-    public Result deleteAlbumFile(long albumId, List<String> fileIds) {
-        DiskAlbum diskAlbum = diskAlbumMapper.findDiskAlbum(albumId);
-        if (diskAlbum == null) {
-            return Result.fail("album not exist");
-        }
-
-        long loginUser = UserContext.getUserId();
-        if (diskAlbum.getCreateBy() != loginUser) {
-            return Result.fail("not album owner");
-        }
-
-        Set<String> deletedSha256sumSet = diskFileService.findByFileIds(fileIds).stream()
-                .map(DiskFile::getSha256sum)
-                .collect(Collectors.toSet());
-
-        int num = diskAlbum.getNum()-deletedSha256sumSet.size();
-        if (!deletedSha256sumSet.isEmpty()) {
-            diskAlbumRepository.deleteDiskAlbumFiles(albumId, num, deletedSha256sumSet);
-        }
-
-        DiskFile diskFile = diskFileService.findByFileId(diskAlbum.getCoverFileId());
-        if (diskFile != null && deletedSha256sumSet.contains(diskFile.getSha256sum())) {
-            List<DiskAlbumFile> diskAlbumFileList = diskAlbumMapper.findDiskAlbumFiles(albumId);
-            String coverFileId = "";
-            if (!diskAlbumFileList.isEmpty()) {
-                String sha256sum = diskAlbumFileList.get(diskAlbumFileList.size()-1).getSha256sum();
-                List<DiskFile> diskFileList = diskFileService.findBySha256sum(sha256sum);
-                if (!diskFileList.isEmpty()) {
-                    coverFileId = diskFileList.get(0).getFileId();
-                }
-            }
-
-            diskAlbumMapper.updateDiskAlbumCover(albumId, coverFileId);
-        }
-
-        return Result.success();
-    }
-
-    public List<SelectOption> getAlbumKeyValues() {
-        long loginUser = UserContext.getUserId();
-        return diskAlbumMapper.findByCreateBy(loginUser).stream().map(diskAlbum -> {
-            long albumId = diskAlbum.getAlbumId();
-            String albumName = diskAlbum.getAlbumName();
-            return new SelectOption(albumName, albumId+"");
-        }).collect(Collectors.toList());
-    }
-
-    public List<DiskAlbumInfo> getAlbumList() {
-        long loginUser = UserContext.getUserId();
-        int albumType = AlbumType.image.getValue();
-        List<Long> albumIds = diskShareService.getSharedAlbumIds(albumType, loginUser);
-        List<DiskAlbum> sharedAlbums = albumIds.stream().map(diskAlbumMapper::findDiskAlbum)
-                .filter(Objects::nonNull)
-                .peek(this::setSharedAlbumName)
-                .collect(Collectors.toList());
-        List<DiskAlbum> userAlbums = diskAlbumMapper.findByCreateBy(loginUser);
-        userAlbums.addAll(sharedAlbums);
-
-        return userAlbums.stream().map(diskAlbum -> {
-            String coverUrl = "";
-            try {
-                String coverFileId = diskAlbum.getCoverFileId();
-                coverUrl = ossService.getSignedUrl(coverFileId, null);
-            } catch (Exception e) {
-                log.error("getSignedUrl error: {}", e.getMessage());
-            }
-            return new DiskAlbumInfo(diskAlbum, coverUrl);
-        }).collect(Collectors.toList());
-    }
-
-    private void setSharedAlbumName(DiskAlbum diskAlbum) {
-        long createBy = diskAlbum.getCreateBy();
-        AccountAvatar accountAvatar = accountQuery.getAccountAvatar(createBy);
-        String username = accountAvatar.getUsername();
-        String albumName = String.format("%s(%s的分享)", diskAlbum.getAlbumName(), username);
-        diskAlbum.setAlbumName(albumName);
-    }
-
-    public DiskAlbumDetail getDiskAlbumDetail(long albumId, int pageNumber) {
-        long loginUser = UserContext.getUserId();
-        int albumType = AlbumType.image.getValue();
-        Set<Long> sharedAlbumSet = new HashSet<>(diskShareService.getSharedAlbumIds(albumType, loginUser));
-        DiskAlbum diskAlbum = diskAlbumMapper.findDiskAlbum(albumId);
-        if (diskAlbum == null) {
-            return null;
-        } else if (diskAlbum.getCreateBy() != loginUser && !sharedAlbumSet.contains(albumId)) {
-            return null;
-        }
-
-        if (sharedAlbumSet.contains(albumId)) {
-            setSharedAlbumName(diskAlbum);
-        }
-
-        int total = diskAlbumMapper.countDiskAlbumFile(albumId);
-        Page page = new Page(pageNumber, ConstantId.PAGE_SIZE);
-        List<DiskAlbumFile> diskAlbumFileList = diskAlbumMapper.findDiskAlbumFileByPage(page, albumId);
-        List<String> sha256sumList = diskAlbumFileList.stream().map(DiskAlbumFile::getSha256sum).collect(Collectors.toList());
-        if (sha256sumList.isEmpty()) {
-            return new DiskAlbumDetail(diskAlbum, PageList.empty());
-        }
-
-        Map<String, Integer> map = new HashMap<>();
-        for (DiskAlbumFile diskAlbumFile : diskAlbumFileList) {
-            map.put(diskAlbumFile.getSha256sum(), diskAlbumFile.getPos());
-        }
-
-        List<DiskFileDetail> diskFileDetailList = diskFileService.findBySha256sumList(sha256sumList).stream()
-                .sorted(Comparator.comparingInt(o -> map.get(o.getSha256sum())))
-                .map(diskFile -> {
-                    String objectId = diskFile.getFileId();
-                    return diskFileService.getDiskFileDetail0(objectId);
-                })
-                .filter(Objects::nonNull)
-                .collect(Collectors.toList());
-
-        PageList<DiskFileDetail> pageList = PageList.pageList(pageNumber, ConstantId.PAGE_SIZE, total, diskFileDetailList);
-        return new DiskAlbumDetail(diskAlbum, pageList);
-    }
-
-    /**
-     * 获取不存在于合集中的文件
-     *
-     * @param
-     * @return
-     * @date 2025-09-04 17:42:38
-     */
-    public PageList<DiskFileDetail> getAlbumExcludeFiles(int fileType, int pageNumber) {
-        long loginUser = UserContext.getUserId();
-        Page page = new Page(pageNumber, ConstantId.PAGE_SIZE);
-        List<DiskFile> diskFileList = diskFileMapper.findSha256sumGroupByPage(page, fileType, loginUser);
-        int total = diskFileMapper.countSha256sumGroupByDiskQuery(fileType, loginUser).size();
-
-        List<DiskFileDetail> list = diskFileList.stream().map(DiskFileDetail::new).collect(Collectors.toList());
-        for (DiskFileDetail diskFileDetail : list) {
-            String fileId = diskFileDetail.getFileId();
-            try {
-                String signedUrl = ossService.getSignedUrl(fileId, null);
-                diskFileDetail.setUrl(signedUrl);
-            } catch (Exception e) {
-                log.error("{}", e.getMessage());
-            }
-        }
-        return PageList.pageList(pageNumber, ConstantId.PAGE_SIZE, total, list);
-    }
-
-    public PageList<PhotoItem> getPhotoItems(int pageNumber) {
-        long loginUser = UserContext.getUserId();
-        Page page = new Page(pageNumber, ConstantId.PAGE_SIZE);
-        int total = cameraPhotoMapper.countPhotoItemsByOwner(loginUser);
-        List<PhotoItem> list = cameraPhotoMapper.findPhotoItemsByPage(page, loginUser);
-        list.forEach(item -> {
-            String fileId = item.getFileId();
-            String sizeStr = byteConverter.convert(ByteType.Bytes, Long.parseLong(item.getSize()));
-            String objectUrl = ossService.getSignedUrl(fileId, null);
-            item.setSize(sizeStr);
-            item.setUrl(objectUrl);
-            if (item.getFileType() == ObjectType.Video.getCode()) {
-                item.setVideoUrl(objectUrl);
-                double duration1 = Double.parseDouble(item.getDuration());
-                String durationStr = StringUtil.getTimeStr((int) duration1);
-                item.setDuration(durationStr);
-            }
-        });
-        return PageList.pageList(pageNumber, ConstantId.PAGE_SIZE, total, list);
-    }
-}

+ 12 - 94
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/DiskShareService.java

@@ -6,18 +6,9 @@ import cn.reghao.jutil.jdk.web.result.Result;
 import cn.reghao.tnb.auth.api.dto.AccountAvatar;
 import cn.reghao.tnb.auth.api.iface.AccountQuery;
 import cn.reghao.tnb.common.auth.UserContext;
-import cn.reghao.tnb.file.app.zdisk.db.mapper.DiskAlbumMapper;
-import cn.reghao.tnb.file.app.zdisk.db.mapper.DiskShareMapper;
-import cn.reghao.tnb.file.app.zdisk.db.repository.DiskCamRepository;
-import cn.reghao.tnb.file.app.zdisk.db.repository.DiskShareRepository;
-import cn.reghao.tnb.file.app.zdisk.model.constant.AlbumType;
+import cn.reghao.tnb.file.app.zdisk.db.mapper.CamDeviceMapper;
 import cn.reghao.tnb.file.app.zdisk.model.dto.ShareCreate;
-import cn.reghao.tnb.file.app.zdisk.model.po.CamDevice;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbum;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskShare;
-import cn.reghao.tnb.file.app.zdisk.model.po.DiskShareTo;
 import cn.reghao.tnb.file.app.zdisk.model.vo.DiskShareInfo;
-import cn.reghao.tnb.common.util.IdService;
 import cn.reghao.tnb.user.api.iface.UserService;
 import org.apache.dubbo.config.annotation.DubboReference;
 import org.springframework.stereotype.Service;
@@ -38,103 +29,32 @@ public class DiskShareService {
     private UserService userService;
 
     private int pageSize = 10;
-    private final IdService idService;
-    private final DiskShareMapper diskShareMapper;
-    private final DiskAlbumMapper diskAlbumMapper;
-    private final DiskShareRepository diskShareRepository;
-    private final DiskCamRepository diskCamRepository;
+    private final CamDeviceMapper camDeviceMapper;
 
-    public DiskShareService(IdService idService, DiskShareMapper diskShareMapper,
-                            DiskAlbumMapper diskAlbumMapper, DiskShareRepository diskShareRepository,
-                            DiskCamRepository diskCamRepository) {
-        this.idService = idService;
-        this.diskShareMapper = diskShareMapper;
-        this.diskAlbumMapper = diskAlbumMapper;
-        this.diskShareRepository = diskShareRepository;
-        this.diskCamRepository = diskCamRepository;
+    public DiskShareService(CamDeviceMapper camDeviceMapper) {
+        this.camDeviceMapper = camDeviceMapper;
     }
 
     public Result createShare(ShareCreate shareCreate) {
         long loginUser = UserContext.getUserId();
-        int albumType = shareCreate.getAlbumType();
-        long albumId = shareCreate.getAlbumId();
-        if (albumType == AlbumType.cam.getValue()) {
-            CamDevice camDevice = diskCamRepository.getCamDevice(albumId, loginUser);
-            if (camDevice == null) {
-                return Result.fail("not owner");
-            }
-        } else if (albumType == AlbumType.image.getValue()) {
-            DiskAlbum diskAlbum = diskAlbumMapper.findDiskAlbum(albumId);
-            if (diskAlbum == null || diskAlbum.getCreateBy() != loginUser) {
-                return Result.fail("not owner");
-            }
-        } else {
-            return Result.fail("error albumType");
-        }
-        
-        long shareId = idService.getLongId();
-        DiskShare diskShare = new DiskShare(shareId, shareCreate);
-        List<DiskShareTo> list = shareCreate.getShareToList().stream()
-                .map(username -> {
-                    long userId = accountQuery.getByUsername(username).getUserId();
-                    return new DiskShareTo(shareId, userId);
-                })
-                .collect(Collectors.toList());
-
-        diskShareMapper.save(diskShare);
-        if (!list.isEmpty()) {
-            diskShareMapper.saveDiskShareTo(list);
-        }
         return Result.success();
     }
 
     public Result deleteShare(long shareId) {
-        DiskShare diskShare = diskShareMapper.findDiskShare(shareId);
-        if (diskShare == null || diskShare.getCreateBy() != UserContext.getUserId()) {
-            return Result.fail("not owner");
-        }
-
-        diskShareRepository.deleteShare(shareId);
         return Result.success();
     }
 
     public PageList<DiskShareInfo> getShareList(int pageNumber) {
         long loginUser = UserContext.getUserId();
         Page page = new Page(pageNumber, pageSize);
-        List<DiskShareInfo> list = diskShareMapper.findDiskShareByPage(page, loginUser).stream()
-                .map(diskShare -> {
-                    int albumType = diskShare.getAlbumType();
-                    long albumId = diskShare.getAlbumId();
-                    String albumName = "";
-                    if (albumType == AlbumType.cam.getValue()) {
-                        CamDevice camDevice = diskCamRepository.getCamDevice(albumId, loginUser);
-                        if (camDevice == null) {
-                            return null;
-                        }
-                        albumName = camDevice.getCamName();
-                    } else if (albumType == AlbumType.image.getValue()) {
-                        DiskAlbum diskAlbum = diskAlbumMapper.findDiskAlbum(albumId);
-                        if (diskAlbum == null) {
-                            return null;
-                        }
-                        albumName = diskAlbum.getAlbumName();
-                    } else {
-                        return null;
-                    }
-
-                    int num = diskShareMapper.countDiskShareTo(diskShare.getShareId());
-                    return new DiskShareInfo(diskShare, albumName, num);
-                })
-                .filter(Objects::nonNull)
-                .collect(Collectors.toList());
-
-        int total = diskShareMapper.countDiskShare(loginUser);
+        List<DiskShareInfo> list = camDeviceMapper.findByShareGroup(loginUser).stream()
+                .map(DiskShareInfo::new).toList();
+        int total = list.size();
         return PageList.pageList(pageNumber, pageSize, total, list);
     }
 
     public List<AccountAvatar> getShareToList(long shareId) {
-        List<Long> userIds = diskShareMapper.findDiskShareToList(shareId);
-        return userIds.stream()
+        return camDeviceMapper.findByShareToUsers(shareId).stream()
                 .map(userId -> accountQuery.getAccountAvatar(userId))
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());
@@ -148,12 +68,10 @@ public class DiskShareService {
      * @date 2025-09-06 00:09:512
      */
     public List<Long> getSharedAlbumIds(int albumType, long shareTo) {
-        List<DiskShare> diskShareList = diskShareMapper.findDiskShareList(albumType, shareTo);
-        return diskShareList.stream()
-                .map(diskShare -> {
-                    long shareId = diskShare.getShareId();
-                    long createBy = diskShare.getCreateBy();
-                    return userService.contactContain(createBy, shareTo) ? diskShare.getAlbumId() : null;
+        return camDeviceMapper.findBySharedCams(shareTo).stream()
+                .map(camDevice -> {
+                    long createBy = camDevice.getAddBy();
+                    return userService.contactContain(createBy, shareTo) ? camDevice.getCamId() : null;
                 })
                 .filter(Objects::nonNull)
                 .collect(Collectors.toList());

+ 61 - 0
file/file-service/src/main/java/cn/reghao/tnb/file/app/zdisk/service/PhotoAlbumService.java

@@ -0,0 +1,61 @@
+package cn.reghao.tnb.file.app.zdisk.service;
+
+import cn.reghao.tnb.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.tnb.common.util.ConstantId;
+import cn.reghao.tnb.common.util.StringUtil;
+import cn.reghao.tnb.file.app.zdisk.db.mapper.CameraPhotoMapper;
+import cn.reghao.oss.api.constant.ObjectType;
+import cn.reghao.tnb.auth.api.iface.AccountQuery;
+import cn.reghao.tnb.common.auth.UserContext;
+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;
+
+import java.util.*;
+
+/**
+ * @author reghao
+ * @date 2023-11-10 15:16:35
+ */
+@Slf4j
+@Service
+public class PhotoAlbumService {
+    @DubboReference(check = false, retries = 0, timeout = 60_000)
+    private AccountQuery accountQuery;
+
+    private final OssService ossService;
+    private final ByteConverter byteConverter;
+    private final CameraPhotoMapper cameraPhotoMapper;
+
+    public PhotoAlbumService(OssService ossService, ByteConverter byteConverter, CameraPhotoMapper cameraPhotoMapper) {
+        this.ossService = ossService;
+        this.byteConverter = byteConverter;
+        this.cameraPhotoMapper = cameraPhotoMapper;
+    }
+
+    public PageList<PhotoItem> getPhotoItems(int pageNumber) {
+        long loginUser = UserContext.getUserId();
+        Page page = new Page(pageNumber, ConstantId.PAGE_SIZE);
+        int total = cameraPhotoMapper.countPhotoItemsByOwner(loginUser);
+        List<PhotoItem> list = cameraPhotoMapper.findPhotoItemsByPage(page, loginUser);
+        list.forEach(item -> {
+            String fileId = item.getFileId();
+            String sizeStr = byteConverter.convert(ByteType.Bytes, Long.parseLong(item.getSize()));
+            String objectUrl = ossService.getSignedUrl(fileId, null);
+            item.setSize(sizeStr);
+            item.setUrl(objectUrl);
+            if (item.getFileType() == ObjectType.Video.getCode()) {
+                item.setVideoUrl(objectUrl);
+                double duration1 = Double.parseDouble(item.getDuration());
+                String durationStr = StringUtil.getTimeStr((int) duration1);
+                item.setDuration(durationStr);
+            }
+        });
+        return PageList.pageList(pageNumber, ConstantId.PAGE_SIZE, total, list);
+    }
+}

+ 19 - 8
file/file-service/src/main/resources/mapper/disk/CamDeviceMapper.xml

@@ -4,9 +4,9 @@
 <mapper namespace="cn.reghao.tnb.file.app.zdisk.db.mapper.CamDeviceMapper">
     <insert id="save" useGeneratedKeys="true" keyProperty="id">
         insert into disk_cam_device
-        (`cam_id`,`cam_name`,`state`,`add_at`,`add_by`,`pull_url`,`push_url`)
+        (`cam_id`,`cam_name`,`state`,`add_at`,`add_by`,`pull_url`,`push_url`,`shared_to`)
         values
-        (#{camId},#{camName},#{state},#{addAt},#{addBy},#{pullUrl},#{pushUrl})
+        (#{camId},#{camName},#{state},#{addAt},#{addBy},#{pullUrl},#{pushUrl},#{sharedTo})
     </insert>
 
     <select id="countByCamDeviceQuery" resultType="java.lang.Integer">
@@ -34,19 +34,30 @@
                 and cam_id=#{camDeviceQuery.camId}
             </if>
             <if test="camDeviceQuery.addBy != null">
-                and `add_by`=#{camDeviceQuery.addBy}
+                and (`add_by`=#{camDeviceQuery.addBy} or `shared_to`=#{camDeviceQuery.addBy})
             </if>
             <if test="camDeviceQuery.camName != null">
                 and cam_name=#{camDeviceQuery.camName}
             </if>
         </where>
     </select>
-    <select id="findByCamIds" resultType="cn.reghao.tnb.file.app.zdisk.model.po.CamDevice">
+    <select id="findByShareGroup" resultType="cn.reghao.tnb.file.app.zdisk.model.po.CamDevice">
         select *
         from disk_cam_device
-        where deleted=0 and cam_id in
-        <foreach collection="list" item="id" index="index" open="(" close=")" separator=",">
-            #{id}
-        </foreach>
+        where shared_to!=0 and add_by=#{userId}
+        group by add_by
+        limit 100
+    </select>
+    <select id="findBySharedCams" resultType="cn.reghao.tnb.file.app.zdisk.model.po.CamDevice">
+        select *
+        from disk_cam_device
+        where shared_to=#{sharedTo}
+        limit 100
+    </select>
+    <select id="findByShareToUsers" resultType="java.lang.Long">
+        select shared_to
+        from disk_cam_device
+        where shared_to!=0
+        limit 100
     </select>
 </mapper>

+ 0 - 85
file/file-service/src/main/resources/mapper/disk/DiskAlbumMapper.xml

@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.reghao.tnb.file.app.zdisk.db.mapper.DiskAlbumMapper">
-    <insert id="save" useGeneratedKeys="true" keyProperty="id">
-        insert into disk_album
-        (`album_id`,`album_name`,`file_type`,`cover_file_id`,`num`,`create_at`,`create_by`)
-        values
-        (#{albumId},#{albumName},#{fileType},#{coverFileId},#{num},#{createAt},#{createBy})
-    </insert>
-    <insert id="saveAlbumFiles" useGeneratedKeys="true" keyProperty="id">
-        insert into disk_album_file
-        (`album_id`,`sha256sum`,`pos`)
-        values
-        <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.albumId},#{item.sha256sum},#{item.pos})
-        </foreach>
-    </insert>
-
-    <update id="updateDiskAlbum">
-        update disk_album
-        set update_time=now(),cover_file_id=#{coverFileId},num=#{num}
-        where album_id=#{albumId}
-    </update>
-    <update id="updateDiskAlbumNum">
-        update disk_album
-        set update_time=now(),num=#{num}
-        where album_id=#{albumId}
-    </update>
-    <update id="updateDiskAlbumCover">
-        update disk_album
-        set update_time=now(),cover_file_id=#{coverFileId}
-        where album_id=#{albumId}
-    </update>
-    <update id="updateDiskAlbumFilePos">
-        update disk_album_file
-        set pos=#{pos}
-        where id=#{id}
-    </update>
-
-    <delete id="deleteDiskAlbumFiles">
-        delete from disk_album_file
-        where album_id=#{albumId} and sha256sum in
-        <foreach collection="sha256sumList" item="id" index="index" open="(" close=")" separator=",">
-            #{id}
-        </foreach>
-    </delete>
-    
-    <select id="findDiskAlbum" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbum">
-        select *
-        from disk_album
-        where album_id=#{albumId}
-    </select>
-    <select id="findByCreateBy" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbum">
-        select *
-        from disk_album
-        where create_by=#{createBy}
-    </select>
-    <select id="findDiskAlbumFiles" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbumFile">
-        select *
-        from disk_album_file
-        where album_id=#{albumId}
-        order by pos asc
-    </select>
-    <select id="findDiskAlbumFileList" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbumFile">
-        select *
-        from disk_album_file
-        where album_id=#{albumId} and sha256sum in
-        <foreach collection="sha256sumList" item="id" index="index" open="(" close=")" separator=",">
-            #{id}
-        </foreach>
-    </select>
-
-    <select id="countDiskAlbumFile" resultType="java.lang.Integer">
-        select count(*)
-        from disk_album_file
-        where album_id=#{albumId}
-    </select>
-    <select id="findDiskAlbumFileByPage" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskAlbumFile">
-        select *
-        from disk_album_file
-        where album_id=#{albumId}
-        order by pos asc
-    </select>
-</mapper>

+ 0 - 64
file/file-service/src/main/resources/mapper/disk/DiskShareMapper.xml

@@ -1,64 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-
-<mapper namespace="cn.reghao.tnb.file.app.zdisk.db.mapper.DiskShareMapper">
-    <insert id="save" useGeneratedKeys="true" keyProperty="id">
-        insert into disk_share
-        (`share_id`,`album_type`,`album_id`,`create_at`,`create_by`)
-        values
-        (#{shareId},#{albumType},#{albumId},#{createAt},#{createBy})
-    </insert>
-    <insert id="saveDiskShareTo" useGeneratedKeys="true" keyProperty="id">
-        insert into disk_share_to
-        (`share_id`,`user_id`)
-        values
-        <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.shareId},#{item.userId})
-        </foreach>
-    </insert>
-
-    <update id="updateSetDelete">
-        update disk_share
-        set update_time=now(),deleted=1
-        where share_id=#{shareId}
-    </update>
-    <delete id="deleteShareToList">
-        delete from disk_share_to
-        where share_id=#{shareId}
-    </delete>
-
-    <select id="countDiskShare" resultType="java.lang.Integer">
-        select count(*)
-        from disk_share
-        where deleted=0 and create_by=#{createBy}
-    </select>
-    <select id="findDiskShareByPage" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskShare">
-        select *
-        from disk_share
-        where deleted=0 and create_by=#{createBy}
-    </select>
-    <select id="findDiskShare" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskShare">
-        select *
-        from disk_share
-        where deleted=0 and share_id=#{shareId}
-    </select>
-
-    <select id="findDiskShareList" resultType="cn.reghao.tnb.file.app.zdisk.model.po.DiskShare">
-        select disk_share.*
-        from disk_share_to
-        inner join disk_share
-        on disk_share.deleted=0 and disk_share_to.share_id=disk_share.share_id
-        where disk_share.album_type=#{albumType} and disk_share_to.user_id=#{shareTo}
-    </select>
-
-    <select id="countDiskShareTo" resultType="java.lang.Integer">
-        select count(*)
-        from disk_share_to
-        where share_id=#{shareId}
-    </select>
-    <select id="findDiskShareToList" resultType="java.lang.Long">
-        select user_id
-        from disk_share_to
-        where share_id=#{shareId}
-    </select>
-</mapper>