From fc240b68a0db3d2844e1ffa8f279396e0d156d1a Mon Sep 17 00:00:00 2001 From: Kim Daehyeon Date: Sun, 25 Feb 2024 00:00:35 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=EC=A7=80=EC=9B=90=EC=84=9C=20?= =?UTF-8?q?=EC=A0=9C=EC=B6=9C=20=EC=8B=9C=20=EC=9E=90=EA=B8=B0=EC=86=8C?= =?UTF-8?q?=EA=B0=9C=20=EA=B8=B8=EC=9D=B4=20=EA=B2=80=EC=82=AC=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9=EC=97=90=20=EB=94=B0=EB=A5=B8=20=EC=97=90=EB=9F=AC?= =?UTF-8?q?=EC=BD=94=EB=93=9C=20=EC=B6=94=EA=B0=80=20-=20#73?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/mjulikelion/bagel/errorcode/ErrorCode.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/mjulikelion/bagel/errorcode/ErrorCode.java b/src/main/java/org/mjulikelion/bagel/errorcode/ErrorCode.java index 47820b9..42665ee 100644 --- a/src/main/java/org/mjulikelion/bagel/errorcode/ErrorCode.java +++ b/src/main/java/org/mjulikelion/bagel/errorcode/ErrorCode.java @@ -23,7 +23,8 @@ public enum ErrorCode { INVALID_INTRODUCE_ERROR("4003", "유효하지 않은 자기소개 항목 입니다."),//유효하지 않은 자기소개 항목 INVALID_AGREEMENT_ERROR("4004", "유효하지 않은 동의 항목 입니다."),//유효하지 않은 동의 항목 INVALID_INTRODUCE_MISSING_ERROR("4005", "자기소개 항목이 누락되었습니다."),//자기소개 항목이 누락됨 - INVALID_AGREEMENT_MISSING_ERROR("4006", "동의 항목이 누락되었습니다.");//동의 항목이 누락됨 + INVALID_AGREEMENT_MISSING_ERROR("4006", "동의 항목이 누락되었습니다."),//동의 항목이 누락됨 + INVALID_INTRODUCE_LENGTH_ERROR("4007", "자기소개 항목의 길이가 유효하지 않습니다.");//자기소개 항목의 길이가 유효하지 않음 private final String code; From aead714fa218d15096e690cd418b889472dbba9a Mon Sep 17 00:00:00 2001 From: Kim Daehyeon Date: Sun, 25 Feb 2024 00:00:58 +0900 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20findAllByPart=20=EC=B6=94=EA=B0=80?= =?UTF-8?q?=20-=20#73?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/mjulikelion/bagel/repository/IntroduceRepository.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/org/mjulikelion/bagel/repository/IntroduceRepository.java b/src/main/java/org/mjulikelion/bagel/repository/IntroduceRepository.java index 4c965c4..f49687b 100644 --- a/src/main/java/org/mjulikelion/bagel/repository/IntroduceRepository.java +++ b/src/main/java/org/mjulikelion/bagel/repository/IntroduceRepository.java @@ -9,4 +9,6 @@ public interface IntroduceRepository extends JpaRepository { List findAllByPartOrderBySequence(Part part); Long countByPart(Part part); + + List findAllByPart(Part part); } From 7449c1efc53c0868d41aeaa06be370a766e1768a Mon Sep 17 00:00:00 2001 From: Kim Daehyeon Date: Sun, 25 Feb 2024 00:01:18 +0900 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=EC=A7=80=EC=9B=90=EC=84=9C=20?= =?UTF-8?q?=EC=A0=9C=EC=B6=9C=20=EC=8B=9C=20=EC=9E=90=EA=B8=B0=EC=86=8C?= =?UTF-8?q?=EA=B0=9C=20=EA=B8=B8=EC=9D=B4=20=EA=B2=80=EC=82=AC=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9,=20=EB=A6=AC=ED=8C=A9=ED=84=B0=EB=A7=81=20-=20#73?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApplicationCommandServiceImpl.java | 48 ++++++++++++++++--- 1 file changed, 42 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/mjulikelion/bagel/service/application/ApplicationCommandServiceImpl.java b/src/main/java/org/mjulikelion/bagel/service/application/ApplicationCommandServiceImpl.java index 2d5097c..b82c545 100644 --- a/src/main/java/org/mjulikelion/bagel/service/application/ApplicationCommandServiceImpl.java +++ b/src/main/java/org/mjulikelion/bagel/service/application/ApplicationCommandServiceImpl.java @@ -3,10 +3,12 @@ import static org.mjulikelion.bagel.errorcode.ErrorCode.APPLICATION_ALREADY_EXISTS_ERROR; import static org.mjulikelion.bagel.errorcode.ErrorCode.FILE_STORAGE_ERROR; import static org.mjulikelion.bagel.errorcode.ErrorCode.INVALID_AGREEMENT_MISSING_ERROR; +import static org.mjulikelion.bagel.errorcode.ErrorCode.INVALID_INTRODUCE_LENGTH_ERROR; import static org.mjulikelion.bagel.errorcode.ErrorCode.INVALID_INTRODUCE_MISSING_ERROR; import static org.mjulikelion.bagel.errorcode.ErrorCode.INVALID_MAJOR_ERROR; import java.util.List; +import java.util.stream.IntStream; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.mjulikelion.bagel.dto.request.ApplicationSaveDto; @@ -138,9 +140,7 @@ private List convertAgreements(ApplicationSaveDto applicat List agreements = this.applicationAgreementConvertor.convertMapToApplicationAgreement( applicationSaveDto.getAgreements(), application); - if (!this.isValidAgreementsSize(agreements)) { - throw new InvalidDataException(INVALID_AGREEMENT_MISSING_ERROR); - } + this.validateAgreements(agreements); return agreements; } @@ -157,9 +157,7 @@ private List convertIntroduces(ApplicationSaveDto applicat List introduces = this.applicationIntroduceConvertor.convertMapToApplicationIntroduce( applicationSaveDto.getIntroduces(), application); - if (!this.isValidIntroducesSize(introduces, application.getPart())) { - throw new InvalidDataException(INVALID_INTRODUCE_MISSING_ERROR); - } + this.validateIntroduces(introduces, application.getPart()); return introduces; } @@ -174,6 +172,12 @@ private boolean isValidAgreementsSize(List agreements) { return this.agreementRepository.count() == agreements.size(); } + private void validateAgreements(List agreements) { + if (!isValidAgreementsSize(agreements)) { + throw new InvalidDataException(INVALID_AGREEMENT_MISSING_ERROR); + } + } + /** * 지원서 자기소개 리스트의 누락 여부를 검사. * @@ -185,6 +189,38 @@ private boolean isValidIntroducesSize(List introduces, Par return introduces.size() == this.introduceRepository.countByPart(part); } + /** + * 지원서 자기소개의 글자수를 검사. + * + * @param introduces 지원서 자기소개 리스트 + * @param part 지원 파트 + * @return 유효한 경우 true, 그렇지 않은 경우 false + */ + private boolean isValidIntroducesLength(List introduces, Part part) { + //introduce의 아이디를 DB에 있는 introduce의 아이디와 비교해서 글자수가 맞는지 확인 + introduces.forEach(introduce -> log.info(String.valueOf(introduce.getContent().length()))); + this.introduceRepository.findAllByPart(part) + .forEach(introduce -> log.info(String.valueOf(introduce.getMaxLength()))); + return IntStream.range(0, introduces.size()) + .allMatch(i -> introduces.get(i).getContent().length() <= this.introduceRepository.findById( + introduces.get(i).getIntroduce().getId()).orElseThrow().getMaxLength()); + } + + /** + * 지원서 자기소개의 유효성을 검사. + * + * @param introduces 지원서 자기소개 리스트 + * @param part 지원 파트 + */ + private void validateIntroduces(List introduces, Part part) { + if (!isValidIntroducesSize(introduces, part)) { + throw new InvalidDataException(INVALID_INTRODUCE_MISSING_ERROR); + } + if (!isValidIntroducesLength(introduces, part)) { + throw new InvalidDataException(INVALID_INTRODUCE_LENGTH_ERROR); + } + } + /** * 지원서, 동의 항목, 자기소개를 저장. *