@@ -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())
|
||||||
|
|||||||
Reference in New Issue
Block a user