From e788b062b850c7059c91ab8ae08407f5ddf36d26 Mon Sep 17 00:00:00 2001 From: backdev-1 Date: Tue, 2 Jun 2026 14:09:25 +0700 Subject: [PATCH] Add file info public --- .../soune/nocopy/dto/file/FileModerationInfo.java | 3 ++- .../nocopy/handler/FileInteranlInfoHandler.java | 12 ++++++------ .../nocopy/repository/FileEntityRepository.java | 3 +++ .../service/file/moderation/ModerationService.java | 14 +++++--------- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/dto/file/FileModerationInfo.java b/src/main/java/ru/soune/nocopy/dto/file/FileModerationInfo.java index 8ffc794..38860d0 100644 --- a/src/main/java/ru/soune/nocopy/dto/file/FileModerationInfo.java +++ b/src/main/java/ru/soune/nocopy/dto/file/FileModerationInfo.java @@ -2,6 +2,7 @@ package ru.soune.nocopy.dto.file; import lombok.Builder; import lombok.Data; +import ru.soune.nocopy.entity.file.FileAppeal; import ru.soune.nocopy.entity.file.FileStatus; import java.time.LocalDateTime; @@ -16,5 +17,5 @@ public class FileModerationInfo { private FileStatus currentStatus; private LocalDateTime uploadDate; private Boolean hasActiveAppeal; - private AppealInfo activeAppeal; + private FileAppeal activeAppeal; } diff --git a/src/main/java/ru/soune/nocopy/handler/FileInteranlInfoHandler.java b/src/main/java/ru/soune/nocopy/handler/FileInteranlInfoHandler.java index 1562ba5..1a9d981 100644 --- a/src/main/java/ru/soune/nocopy/handler/FileInteranlInfoHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/FileInteranlInfoHandler.java @@ -14,6 +14,7 @@ import ru.soune.nocopy.dto.file.AppealResponse; import ru.soune.nocopy.dto.file.FileEntityRequest; import ru.soune.nocopy.dto.file.FileModerationInfo; import ru.soune.nocopy.entity.file.FileEntity; +import ru.soune.nocopy.entity.file.FileStatus; import ru.soune.nocopy.service.file.moderation.ModerationService; import java.util.Arrays; @@ -71,9 +72,11 @@ public class FileInteranlInfoHandler implements RequestHandler { try { int page = fileRequest.getPage() != null ? fileRequest.getPage() : 0; int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20; + List statuses = fileRequest.getStatuses().isEmpty() ? List.of(FileStatus.MODERATION.name(), + FileStatus.BLOCKED.name(), FileStatus.ACTIVE.name()): fileRequest.getStatuses(); Page files = moderationService.getFilesForModeration(page, pageSize, - fileRequest.getSortOrder(), fileRequest.getSortBy()); + fileRequest.getSortOrder(), fileRequest.getSortBy(), statuses); List> filesWithInfo = files.getContent().stream() .map(file -> { @@ -92,11 +95,8 @@ public class FileInteranlInfoHandler implements RequestHandler { moderationInfoMap.put("hasActiveAppeal", info != null && info.getHasActiveAppeal()); if (info != null && info.getActiveAppeal() != null) { - Map appealInfoMap = new HashMap<>(); - appealInfoMap.put("appealId", info.getActiveAppeal().getAppealId()); - appealInfoMap.put("status", info.getActiveAppeal().getStatus()); - appealInfoMap.put("createdAt", info.getActiveAppeal().getCreatedAt()); - moderationInfoMap.put("appealInfo", appealInfoMap); + AppealResponse appealResponse = moderationService.convertToResponse(info.getActiveAppeal()); + moderationInfoMap.put("appealInfo", appealResponse); } else { moderationInfoMap.put("appealInfo", null); } diff --git a/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java index 26cde50..97ee3a9 100644 --- a/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java +++ b/src/main/java/ru/soune/nocopy/repository/FileEntityRepository.java @@ -76,6 +76,9 @@ public interface FileEntityRepository extends JpaRepository Page findByStatusIn(List statuses, Pageable pageable); + @Query("SELECT f FROM FileEntity f WHERE f.status IN :statuses") + Page findByStatusInAndSorted(@Param("statuses") List statuses, Pageable pageable); + List findByUserIdAndStatusIn(Long userId, List statuses); @Query("SELECT f FROM FileEntity f WHERE f.userId = :userId AND f.status IN :statuses") diff --git a/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java b/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java index 41691f2..f5f2a3c 100644 --- a/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java +++ b/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationService.java @@ -207,12 +207,7 @@ public class ModerationService { .currentStatus(file.getStatus()) .uploadDate(file.getCreatedAt()) .hasActiveAppeal(activeAppeal != null) - .activeAppeal(activeAppeal != null ? - AppealInfo.builder() - .appealId(activeAppeal.getId()) - .status(activeAppeal.getStatus().name()) - .createdAt(activeAppeal.getCreatedAt()) - .build() : null) + .activeAppeal(activeAppeal) .build(); } @@ -229,7 +224,8 @@ public class ModerationService { } @Transactional(readOnly = true) - public Page getFilesForModeration(int page, int size, String sortDirection, String sortBy) { + public Page getFilesForModeration(int page, int size, String sortDirection, String sortBy, + List statuses) { if (sortDirection == null || sortDirection.isEmpty()) { sortDirection = "desc"; } @@ -240,7 +236,7 @@ public class ModerationService { Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDirection), sortBy)); - return fileEntityRepository.findByStatusIn(Arrays.asList(FileStatus.MODERATION, FileStatus.BLOCKED), pageable); + return fileEntityRepository.findByStatusInAndSorted(statuses, pageable); } @@ -268,7 +264,7 @@ public class ModerationService { .map(this::convertToResponse); } - private AppealResponse convertToResponse(FileAppeal appeal) { + public AppealResponse convertToResponse(FileAppeal appeal) { return AppealResponse.builder() .appealId(appeal.getId()) .fileId(appeal.getFileId())