From 5af23af2098677ca8a3ec426ca60b53fa9e5568d Mon Sep 17 00:00:00 2001 From: hyotatoFrappuccino Date: Tue, 2 Sep 2025 16:39:24 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=A7=80=EC=9B=90=EC=84=9C-=EB=AC=B8?= =?UTF-8?q?=EC=84=9C=20=EC=97=B0=EA=B2=B0=20=EC=97=85=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=8A=B8=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/ApplicationFormDocumentRequest.java | 4 +--- .../service/ApplicationFormDocumentService.java | 11 +++++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java b/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java index ac80beb..03dad75 100644 --- a/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java +++ b/src/main/java/com/jobnote/domain/applicationformdocument/dto/ApplicationFormDocumentRequest.java @@ -6,10 +6,8 @@ import jakarta.validation.constraints.NotNull; public record ApplicationFormDocumentRequest( - Long id, - @NotNull(message = "문서 ID는 null일 수 없습니다.") - Long documentId + Long id ) { public ApplicationFormDocument toEntity(final ApplicationForm form, final Document document) { return ApplicationFormDocument.builder() diff --git a/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java b/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java index bfbe284..4401672 100644 --- a/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java +++ b/src/main/java/com/jobnote/domain/applicationformdocument/service/ApplicationFormDocumentService.java @@ -69,7 +69,7 @@ public Map> getAllSimpleGroupedByApplicationF @Transactional public void saveAll(final Long userId, final ApplicationForm form, final List requests) { for (ApplicationFormDocumentRequest request : requests) { - Document document = getByIdOrThrow(request.documentId()); + Document document = getByIdOrThrow(request.id()); document.validateOwner(userId); ApplicationFormDocument entity = request.toEntity(form, document); @@ -82,6 +82,9 @@ public void saveAll(final Long userId, final ApplicationForm form, final List requests) { // 기존 연결된 문서 조회 List existsDocuments = getAllByApplicationFormId(userId, form.getId()); + Set existsIds = existsDocuments.stream() + .map(document -> document.getDocument().getId()) + .collect(Collectors.toSet()); // 요청 문서 ID 목록 Set requestsIds = requests.stream() @@ -91,14 +94,14 @@ public void updateAll(final Long userId, final ApplicationForm form, final List< // 삭제 : 기존 문서 중 요청에 없는 문서 삭제 for (ApplicationFormDocument document : existsDocuments) { - if (!requestsIds.contains(document.getId())) { + if (!requestsIds.contains(document.getDocument().getId())) { delete(document); } } - // 신규 생성 + // 신규 생성 : 새로운 id for (ApplicationFormDocumentRequest req : requests) { - if (req.id() == null) { + if (!existsIds.contains(req.id())) { saveAll(userId, form, List.of(req)); } }