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.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;
}
@@ -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<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,
fileRequest.getSortOrder(), fileRequest.getSortBy());
fileRequest.getSortOrder(), fileRequest.getSortBy(), statuses);
List<Map<String, Object>> 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<String, Object> 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);
}
@@ -76,6 +76,9 @@ public interface FileEntityRepository extends JpaRepository<FileEntity, String>
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);
@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())
.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<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()) {
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())