From b36e25b5fffed34c449b34faabfd7eba88d575e3 Mon Sep 17 00:00:00 2001 From: fervovita Date: Mon, 22 Jun 2026 19:18:50 +0900 Subject: [PATCH 1/2] =?UTF-8?q?Feat(terms):=20=EC=95=BD=EA=B4=80=20?= =?UTF-8?q?=EC=A2=85=EB=A5=98=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/request/DesignerSignupRequest.java | 12 +---- .../dto/request/InstructorSignupRequest.java | 12 +---- .../auth/service/DesignerAuthService.java | 2 +- .../auth/service/InstructorAuthService.java | 2 +- .../domain/term/entity/enums/TermType.java | 9 ++-- .../domain/term/service/TermService.java | 48 +++++++++++-------- 6 files changed, 36 insertions(+), 49 deletions(-) diff --git a/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java b/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java index 66dd89f..f34cbbf 100644 --- a/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java +++ b/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java @@ -23,7 +23,7 @@ public record DesignerSignupRequest( example = """ [ { - "type": "SERVICE", + "type": "DESIGNER_SERVICE", "version": "V1.0", "isAgreed": true }, @@ -31,16 +31,6 @@ public record DesignerSignupRequest( "type": "USERINFO", "version": "V1.0", "isAgreed": true - }, - { - "type": "SETTLEMENT", - "version": "V1.0", - "isAgreed": true - }, - { - "type": "DISINTERMEDIATION", - "version": "V1.0", - "isAgreed": true } ] """ diff --git a/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java b/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java index dac10ca..008c9b9 100644 --- a/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java +++ b/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java @@ -22,7 +22,7 @@ public record InstructorSignupRequest( example = """ [ { - "type": "SERVICE", + "type": "INSTRUCTOR_SERVICE", "version": "V1.0", "isAgreed": true }, @@ -30,16 +30,6 @@ public record InstructorSignupRequest( "type": "USERINFO", "version": "V1.0", "isAgreed": true - }, - { - "type": "SETTLEMENT", - "version": "V1.0", - "isAgreed": true - }, - { - "type": "DISINTERMEDIATION", - "version": "V1.0", - "isAgreed": true } ] """ diff --git a/src/main/java/ditda/backend/domain/auth/service/DesignerAuthService.java b/src/main/java/ditda/backend/domain/auth/service/DesignerAuthService.java index a31a1e4..28a07c7 100644 --- a/src/main/java/ditda/backend/domain/auth/service/DesignerAuthService.java +++ b/src/main/java/ditda/backend/domain/auth/service/DesignerAuthService.java @@ -56,7 +56,7 @@ public AuthResult signup(DesignerSignupRequest request, List portfolioKe ); // 약관 동의 여부 DB 저장 - termService.saveTerms(user, toAgreements(request.terms())); + termService.saveDesignerTerms(user, toAgreements(request.terms())); // Designer 생성 및 DB 저장 Designer designer = Designer.createDesigner( diff --git a/src/main/java/ditda/backend/domain/auth/service/InstructorAuthService.java b/src/main/java/ditda/backend/domain/auth/service/InstructorAuthService.java index f86ff4a..13db661 100644 --- a/src/main/java/ditda/backend/domain/auth/service/InstructorAuthService.java +++ b/src/main/java/ditda/backend/domain/auth/service/InstructorAuthService.java @@ -48,7 +48,7 @@ public AuthResult signup(InstructorSignupRequest request) { LocalDateTime.now() ); - termService.saveTerms(user, toAgreements(request.terms())); + termService.saveInstructorTerms(user, toAgreements(request.terms())); // 왜인지 모르겠지만 save로 했을때는 user만 저장. Instructor는 저장 X instructorRepository.saveAndFlush(Instructor.createInstructor(user)); diff --git a/src/main/java/ditda/backend/domain/term/entity/enums/TermType.java b/src/main/java/ditda/backend/domain/term/entity/enums/TermType.java index 494076c..753b72f 100644 --- a/src/main/java/ditda/backend/domain/term/entity/enums/TermType.java +++ b/src/main/java/ditda/backend/domain/term/entity/enums/TermType.java @@ -1,9 +1,8 @@ package ditda.backend.domain.term.entity.enums; public enum TermType { - SERVICE, - USERINFO, - SETTLEMENT, - // 탈중개화 - DISINTERMEDIATION + DESIGNER_SERVICE, // 디자이너 이용약관 + INSTRUCTOR_SERVICE, // 강사 이용약관 + USERINFO, // 개인정보 처리 방침 + SETTLEMENT, // 결제·환불 정책 } diff --git a/src/main/java/ditda/backend/domain/term/service/TermService.java b/src/main/java/ditda/backend/domain/term/service/TermService.java index 7db0650..17a6fc8 100644 --- a/src/main/java/ditda/backend/domain/term/service/TermService.java +++ b/src/main/java/ditda/backend/domain/term/service/TermService.java @@ -22,45 +22,53 @@ @RequiredArgsConstructor public class TermService { - private static final Set REQUIRED_TERMS = Set.of( - TermType.SERVICE, - TermType.USERINFO, - TermType.SETTLEMENT, - TermType.DISINTERMEDIATION + private static final Set DESIGNER_REQUIRED = Set.of( + TermType.DESIGNER_SERVICE, + TermType.USERINFO ); + private static final Set INSTRUCTOR_REQUIRED = Set.of( + TermType.INSTRUCTOR_SERVICE, + TermType.USERINFO + ); + private final UserTermRepository userTermRepository; private final PaymentTermRepository paymentTermRepository; @Transactional public void savePaymentTerm(Payment payment, String version, boolean isAgreed) { - PaymentTerm paymentTerm = PaymentTerm.create( - payment, - version, - isAgreed - ); + PaymentTerm paymentTerm = PaymentTerm.create(payment, version, isAgreed); paymentTermRepository.save(paymentTerm); } @Transactional - public void saveTerms(User user, List agreements) { - validateRequiredAgreements(agreements); - - List terms = agreements.stream() - .map(a -> UserTerm.createTerm(user, a.type(), a.version(), a.isAgreed())) - .toList(); + public void saveDesignerTerms(User user, List agreements) { + validateRequiredAgreements(agreements, DESIGNER_REQUIRED); + saveAllTerms(user, agreements); + } - userTermRepository.saveAll(terms); + @Transactional + public void saveInstructorTerms(User user, List agreements) { + validateRequiredAgreements(agreements, INSTRUCTOR_REQUIRED); + saveAllTerms(user, agreements); } - private void validateRequiredAgreements(List agreements) { - for (TermType required : REQUIRED_TERMS) { + private void validateRequiredAgreements(List agreements, Set required) { + for (TermType type : required) { boolean agreed = agreements.stream() - .anyMatch(a -> a.type() == required && a.isAgreed()); + .anyMatch(a -> a.type() == type && a.isAgreed()); if (!agreed) { throw new GeneralException(TermErrorCode.REQUIRED_TERMS_NOT_AGREED); } } } + + private void saveAllTerms(User user, List agreements) { + List terms = agreements.stream() + .map(a -> UserTerm.createTerm(user, a.type(), a.version(), a.isAgreed())) + .toList(); + + userTermRepository.saveAll(terms); + } } From 4a7f8c57f5b24aa956560f2a1f835427cd85549d Mon Sep 17 00:00:00 2001 From: fervovita Date: Mon, 22 Jun 2026 19:29:48 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Chore(terms):=20Swagger=20=EC=95=BD?= =?UTF-8?q?=EA=B4=80=20=EC=98=88=EC=8B=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/domain/auth/dto/request/DesignerSignupRequest.java | 2 +- .../domain/auth/dto/request/InstructorSignupRequest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java b/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java index f34cbbf..d2bead1 100644 --- a/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java +++ b/src/main/java/ditda/backend/domain/auth/dto/request/DesignerSignupRequest.java @@ -84,7 +84,7 @@ public record DesignerSignupRequest( public record TermRequest( - @Schema(description = "약관 종류", example = "SERVICE") + @Schema(description = "약관 종류", example = "DESIGNER_SERVICE") @NotNull(message = "약관 종류 필수입니다.") TermType type, diff --git a/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java b/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java index 008c9b9..7da95fe 100644 --- a/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java +++ b/src/main/java/ditda/backend/domain/auth/dto/request/InstructorSignupRequest.java @@ -74,7 +74,7 @@ public record InstructorSignupRequest( public record TermRequest( - @Schema(description = "약관 종류", example = "SERVICE") + @Schema(description = "약관 종류", example = "INSTRUCTOR_SERVICE") @NotNull(message = "약관 종류 필수입니다.") TermType type,