|
|
@@ -6,7 +6,12 @@ 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.po.CameraPhoto;
|
|
|
+import cn.reghao.tnb.file.app.zdisk.model.query.DiskQuery;
|
|
|
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;
|
|
|
@@ -40,24 +45,23 @@ import java.util.stream.Collectors;
|
|
|
public class DiskAlbumService {
|
|
|
@DubboReference(check = false, retries = 0, timeout = 60_000)
|
|
|
private AccountQuery accountQuery;
|
|
|
- @DubboReference(check = false, timeout = 60_000)
|
|
|
- private OssService ossService;
|
|
|
|
|
|
- private final int channelCode = 111;
|
|
|
+ private final OssService ossService;
|
|
|
private final int albumMaxFiles = 1000;
|
|
|
- private final int pageSize = 12;
|
|
|
private final DiskFileMapper diskFileMapper;
|
|
|
private final DiskAlbumMapper diskAlbumMapper;
|
|
|
private final DiskAlbumRepository diskAlbumRepository;
|
|
|
private final DiskFileService diskFileService;
|
|
|
- private DiskShareService diskShareService;
|
|
|
+ private final DiskShareService diskShareService;
|
|
|
private final IdService idService;
|
|
|
private final ByteConverter byteConverter;
|
|
|
+ private final CameraPhotoMapper cameraPhotoMapper;
|
|
|
|
|
|
- public DiskAlbumService(DiskFileMapper diskFileMapper, DiskAlbumMapper diskAlbumMapper,
|
|
|
+ public DiskAlbumService(OssService ossService, DiskFileMapper diskFileMapper, DiskAlbumMapper diskAlbumMapper,
|
|
|
DiskAlbumRepository diskAlbumRepository, DiskFileService diskFileService,
|
|
|
DiskShareService diskShareService, IdService idService,
|
|
|
- ByteConverter byteConverter) {
|
|
|
+ ByteConverter byteConverter, CameraPhotoMapper cameraPhotoMapper) {
|
|
|
+ this.ossService = ossService;
|
|
|
this.diskFileMapper = diskFileMapper;
|
|
|
this.diskAlbumMapper = diskAlbumMapper;
|
|
|
this.diskAlbumRepository = diskAlbumRepository;
|
|
|
@@ -65,6 +69,7 @@ public class DiskAlbumService {
|
|
|
this.diskShareService = diskShareService;
|
|
|
this.idService = idService;
|
|
|
this.byteConverter = byteConverter;
|
|
|
+ this.cameraPhotoMapper = cameraPhotoMapper;
|
|
|
}
|
|
|
|
|
|
public void createAlbum(AlbumCreate albumCreate) {
|
|
|
@@ -294,7 +299,7 @@ public class DiskAlbumService {
|
|
|
}
|
|
|
|
|
|
int total = diskAlbumMapper.countDiskAlbumFile(albumId);
|
|
|
- Page page = new Page(pageNumber, pageSize);
|
|
|
+ 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()) {
|
|
|
@@ -315,7 +320,7 @@ public class DiskAlbumService {
|
|
|
.filter(Objects::nonNull)
|
|
|
.collect(Collectors.toList());
|
|
|
|
|
|
- PageList<DiskFileDetail> pageList = PageList.pageList(pageNumber, pageSize, total, diskFileDetailList);
|
|
|
+ PageList<DiskFileDetail> pageList = PageList.pageList(pageNumber, ConstantId.PAGE_SIZE, total, diskFileDetailList);
|
|
|
return new DiskAlbumDetail(diskAlbum, pageList);
|
|
|
}
|
|
|
|
|
|
@@ -328,7 +333,7 @@ public class DiskAlbumService {
|
|
|
*/
|
|
|
public PageList<DiskFileDetail> getAlbumExcludeFiles(int fileType, int pageNumber) {
|
|
|
long loginUser = UserContext.getUserId();
|
|
|
- Page page = new Page(pageNumber, pageSize);
|
|
|
+ Page page = new Page(pageNumber, ConstantId.PAGE_SIZE);
|
|
|
List<DiskFile> diskFileList = diskFileMapper.findSha256sumGroupByPage(page, fileType, loginUser);
|
|
|
int total = diskFileMapper.countSha256sumGroupByDiskQuery(fileType, loginUser).size();
|
|
|
|
|
|
@@ -342,31 +347,48 @@ public class DiskAlbumService {
|
|
|
log.error("{}", e.getMessage());
|
|
|
}
|
|
|
}
|
|
|
- return PageList.pageList(pageNumber, pageSize, total, list);
|
|
|
+ return PageList.pageList(pageNumber, ConstantId.PAGE_SIZE, 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());
|
|
|
+ Page page = new Page(pageNumber, ConstantId.PAGE_SIZE);
|
|
|
+ String path = "/我的相册";
|
|
|
+ DiskQuery diskQuery = new DiskQuery.Builder()
|
|
|
+ .owner(loginUser)
|
|
|
+ .path(path)
|
|
|
+ .build();
|
|
|
+ int total = diskFileMapper.countByDiskQuery(diskQuery);
|
|
|
+ List<DiskFile> diskFileList = diskFileMapper.findDiskQueryByPage(page, diskQuery);
|
|
|
+ List<String> fileIds = diskFileList.stream().map(DiskFile::getFileId).toList();
|
|
|
+ if (fileIds.isEmpty()) {
|
|
|
+ return PageList.empty();
|
|
|
+ }
|
|
|
|
|
|
- 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();
|
|
|
+ List<CameraPhoto> cameraPhotoList = cameraPhotoMapper.findByFileIds(fileIds);
|
|
|
+ if (cameraPhotoList.size() != fileIds.size()) {
|
|
|
+ return PageList.empty();
|
|
|
}
|
|
|
|
|
|
- return PageList.pageList(pageNumber, pageSize, total, list);
|
|
|
+ Map<String, CameraPhoto> groupMap = cameraPhotoList.stream().collect(
|
|
|
+ Collectors.groupingBy(CameraPhoto::getFileId,
|
|
|
+ Collectors.collectingAndThen(Collectors.toList(), List::getFirst)));
|
|
|
+ List<PhotoItem> list = diskFileList.stream().map(diskFile -> {
|
|
|
+ String fileId = diskFile.getFileId();
|
|
|
+ String sizeStr = byteConverter.convert(ByteType.Bytes, diskFile.getSize());
|
|
|
+ String objectUrl = ossService.getSignedUrl(fileId, null);
|
|
|
+ String url = "";
|
|
|
+ String videoUrl = "";
|
|
|
+ if (diskFile.getFileType() == ObjectType.Image.getCode()) {
|
|
|
+ url = objectUrl;
|
|
|
+ } else {
|
|
|
+ videoUrl = objectUrl;
|
|
|
+ }
|
|
|
+
|
|
|
+ CameraPhoto cameraPhoto = groupMap.get(fileId);
|
|
|
+ String durationStr = StringUtil.getTimeStr(cameraPhoto.getDuration().intValue());
|
|
|
+ return new PhotoItem(diskFile, sizeStr, url, videoUrl, cameraPhoto, durationStr);
|
|
|
+ }).toList();
|
|
|
+ return PageList.pageList(pageNumber, ConstantId.PAGE_SIZE, total, list);
|
|
|
}
|
|
|
}
|