Add file info public
Test Workflow / test (push) Has been cancelled

This commit is contained in:
2026-06-02 14:09:25 +07:00
parent db606284cb
commit e788b062b8
4 changed files with 16 additions and 16 deletions
@@ -2,6 +2,7 @@ package ru.soune.nocopy.dto.file;
import lombok.Builder; import lombok.Builder;
import lombok.Data; import lombok.Data;
import ru.soune.nocopy.entity.file.FileAppeal;
import ru.soune.nocopy.entity.file.FileStatus; import ru.soune.nocopy.entity.file.FileStatus;
import java.time.LocalDateTime; import java.time.LocalDateTime;
@@ -16,5 +17,5 @@ public class FileModerationInfo {
private FileStatus currentStatus; private FileStatus currentStatus;
private LocalDateTime uploadDate; private LocalDateTime uploadDate;
private Boolean hasActiveAppeal; private Boolean hasActiveAppeal;
private AppealInfo activeAppeal; private FileAppeal activeAppeal;
} }
@@ -14,6 +14,7 @@ import ru.soune.nocopy.dto.file.AppealResponse;
import ru.soune.nocopy.dto.file.FileEntityRequest; import ru.soune.nocopy.dto.file.FileEntityRequest;
import ru.soune.nocopy.dto.file.FileModerationInfo; import ru.soune.nocopy.dto.file.FileModerationInfo;
import ru.soune.nocopy.entity.file.FileEntity; import ru.soune.nocopy.entity.file.FileEntity;
import ru.soune.nocopy.entity.file.FileStatus;
import ru.soune.nocopy.service.file.moderation.ModerationService; import ru.soune.nocopy.service.file.moderation.ModerationService;
import java.util.Arrays; import java.util.Arrays;
@@ -71,9 +72,11 @@ public class FileInteranlInfoHandler implements RequestHandler {
try { try {
int page = fileRequest.getPage() != null ? fileRequest.getPage() : 0; int page = fileRequest.getPage() != null ? fileRequest.getPage() : 0;
int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20; int pageSize = fileRequest.getPageSize() != null ? fileRequest.getPageSize() : 20;
List<String> statuses = fileRequest.getStatuses().isEmpty() ? List.of(FileStatus.MODERATION.name(),
FileStatus.BLOCKED.name(), FileStatus.ACTIVE.name()): fileRequest.getStatuses();
Page<FileEntity> files = moderationService.getFilesForModeration(page, pageSize, Page<FileEntity> files = moderationService.getFilesForModeration(page, pageSize,
fileRequest.getSortOrder(), fileRequest.getSortBy()); fileRequest.getSortOrder(), fileRequest.getSortBy(), statuses);
List<Map<String, Object>> filesWithInfo = files.getContent().stream() List<Map<String, Object>> filesWithInfo = files.getContent().stream()
.map(file -> { .map(file -> {
@@ -92,11 +95,8 @@ public class FileInteranlInfoHandler implements RequestHandler {
moderationInfoMap.put("hasActiveAppeal", info != null && info.getHasActiveAppeal()); moderationInfoMap.put("hasActiveAppeal", info != null && info.getHasActiveAppeal());
if (info != null && info.getActiveAppeal() != null) { if (info != null && info.getActiveAppeal() != null) {
Map<String, Object> appealInfoMap = new HashMap<>(); AppealResponse appealResponse = moderationService.convertToResponse(info.getActiveAppeal());
appealInfoMap.put("appealId", info.getActiveAppeal().getAppealId()); moderationInfoMap.put("appealInfo", appealResponse);
appealInfoMap.put("status", info.getActiveAppeal().getStatus());
appealInfoMap.put("createdAt", info.getActiveAppeal().getCreatedAt());
moderationInfoMap.put("appealInfo", appealInfoMap);
} else { } else {
moderationInfoMap.put("appealInfo", null); moderationInfoMap.put("appealInfo", null);
} }
@@ -76,6 +76,9 @@ public interface FileEntityRepository extends JpaRepository<FileEntity, String>
Page<FileEntity> findByStatusIn(List<FileStatus> statuses, Pageable pageable); Page<FileEntity> findByStatusIn(List<FileStatus> statuses, Pageable pageable);
@Query("SELECT f FROM FileEntity f WHERE f.status IN :statuses")
Page<FileEntity> findByStatusInAndSorted(@Param("statuses") List<String> statuses, Pageable pageable);
List<FileEntity> findByUserIdAndStatusIn(Long userId, List<FileStatus> statuses); List<FileEntity> findByUserIdAndStatusIn(Long userId, List<FileStatus> statuses);
@Query("SELECT f FROM FileEntity f WHERE f.userId = :userId AND f.status IN :statuses") @Query("SELECT f FROM FileEntity f WHERE f.userId = :userId AND f.status IN :statuses")
@@ -207,12 +207,7 @@ public class ModerationService {
.currentStatus(file.getStatus()) .currentStatus(file.getStatus())
.uploadDate(file.getCreatedAt()) .uploadDate(file.getCreatedAt())
.hasActiveAppeal(activeAppeal != null) .hasActiveAppeal(activeAppeal != null)
.activeAppeal(activeAppeal != null ? .activeAppeal(activeAppeal)
AppealInfo.builder()
.appealId(activeAppeal.getId())
.status(activeAppeal.getStatus().name())
.createdAt(activeAppeal.getCreatedAt())
.build() : null)
.build(); .build();
} }
@@ -229,7 +224,8 @@ public class ModerationService {
} }
@Transactional(readOnly = true) @Transactional(readOnly = true)
public Page<FileEntity> getFilesForModeration(int page, int size, String sortDirection, String sortBy) { public Page<FileEntity> getFilesForModeration(int page, int size, String sortDirection, String sortBy,
List<String> statuses) {
if (sortDirection == null || sortDirection.isEmpty()) { if (sortDirection == null || sortDirection.isEmpty()) {
sortDirection = "desc"; sortDirection = "desc";
} }
@@ -240,7 +236,7 @@ public class ModerationService {
Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.fromString(sortDirection), sortBy)); 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); .map(this::convertToResponse);
} }
private AppealResponse convertToResponse(FileAppeal appeal) { public AppealResponse convertToResponse(FileAppeal appeal) {
return AppealResponse.builder() return AppealResponse.builder()
.appealId(appeal.getId()) .appealId(appeal.getId())
.fileId(appeal.getFileId()) .fileId(appeal.getFileId())