From 547e70ecdd3f1d0d6b0e777905a36f29831666c0 Mon Sep 17 00:00:00 2001 From: vladp Date: Fri, 27 Mar 2026 15:31:45 +0700 Subject: [PATCH] dev add reason entity --- .../nocopy/handler/FileEntityHandler.java | 44 +++++++++++-------- .../moderation/ModerationReasonService.java | 5 +-- .../file/moderation/ModerationService.java | 2 +- 3 files changed, 28 insertions(+), 23 deletions(-) diff --git a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java index 09bcdbe..3d68059 100644 --- a/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java +++ b/src/main/java/ru/soune/nocopy/handler/FileEntityHandler.java @@ -784,24 +784,32 @@ public class FileEntityHandler implements RequestHandler { List> filesWithInfo = files.getContent().stream() .map(file -> { FileModerationInfo info = moderationService.getFileModerationInfo(file.getId()); - return Map.of( - "fileId", file.getId(), - "fileName", file.getOriginalFileName(), - "userId", file.getUserId(), - "status", file.getStatus().name(), - "createdAt", file.getCreatedAt(), - "fileSize", file.getFileSize(), - "formattedSize", fileEntityService.formatFileSize(file.getFileSize()), - "moderationInfo", Map.of( - "hasActiveAppeal", info.getHasActiveAppeal(), - "appealInfo", info.getActiveAppeal() != null ? - Map.of( - "appealId", info.getActiveAppeal().getAppealId(), - "status", info.getActiveAppeal().getStatus(), - "createdAt", info.getActiveAppeal().getCreatedAt() - ) : null - ) - ); + + Map fileMap = new HashMap<>(); + fileMap.put("fileId", file.getId()); + fileMap.put("fileName", file.getOriginalFileName()); + fileMap.put("userId", file.getUserId()); + fileMap.put("status", file.getStatus() != null ? file.getStatus().name() : null); + fileMap.put("createdAt", file.getCreatedAt()); + fileMap.put("fileSize", file.getFileSize()); + fileMap.put("formattedSize", fileEntityService.formatFileSize(file.getFileSize())); + + Map moderationInfoMap = new HashMap<>(); + 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); + } else { + moderationInfoMap.put("appealInfo", null); + } + + fileMap.put("moderationInfo", moderationInfoMap); + + return fileMap; }) .collect(Collectors.toList()); diff --git a/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationReasonService.java b/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationReasonService.java index d9515af..0140d4b 100644 --- a/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationReasonService.java +++ b/src/main/java/ru/soune/nocopy/service/file/moderation/ModerationReasonService.java @@ -42,7 +42,6 @@ public class ModerationReasonService { throw new IllegalArgumentException("Reason text cannot be empty"); } - // Проверяем на дубликат if (moderationReasonRepository.findByReasonText(reasonText.trim()).isPresent()) { throw new IllegalArgumentException("Reason with this text already exists"); } @@ -70,7 +69,6 @@ public class ModerationReasonService { throw new IllegalArgumentException("Reason text cannot be empty"); } - // Проверяем на дубликат (исключая текущую запись) moderationReasonRepository.findByReasonText(newReasonText.trim()) .ifPresent(existingReason -> { if (!existingReason.getId().equals(reasonId)) { @@ -99,14 +97,13 @@ public class ModerationReasonService { ModerationReason reason = moderationReasonRepository.findById(reasonId) .orElseThrow(() -> new ModerationReasonNotFoundException(reasonId)); - // Проверяем, используется ли причина в активных блокировках long usageCount = getReasonUsageCount(reasonId); if (usageCount > 0) { throw new ModerationReasonInUseException(reasonId, usageCount); } - moderationReasonRepository.delete(reason); + moderationReasonRepository.deleteById(reasonId); log.info("Deleted moderation reason: id={}, text={}", reasonId, reason.getReasonText()); } 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 5ee458e..188888c 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 @@ -72,7 +72,7 @@ public class ModerationService { fileAppealRepository.findByFileIdAndStatus(file.getId(), AppealStatus.PENDING) .ifPresent(appeal -> { appeal.setStatus(AppealStatus.REJECTED); - appeal.setAdminComment("Апелляция отклонена в процессе модерации"); + appeal.setAdminComment(request.getComment()); appeal.setResolvedAt(LocalDateTime.now()); fileAppealRepository.save(appeal); });