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..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 @@ -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 } ] """ @@ -94,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 dac10ca..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 @@ -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 } ] """ @@ -84,7 +74,7 @@ public record InstructorSignupRequest( public record TermRequest( - @Schema(description = "약관 종류", example = "SERVICE") + @Schema(description = "약관 종류", example = "INSTRUCTOR_SERVICE") @NotNull(message = "약관 종류 필수입니다.") TermType type, 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); + } }