11package inha .gdgoc .domain .recruit .member .service ;
22
33import static inha .gdgoc .domain .recruit .member .exception .RecruitMemberErrorCode .RECRUIT_MEMBER_NOT_FOUND ;
4+ import static inha .gdgoc .domain .recruit .member .exception .RecruitMemberErrorCode .RECRUIT_MEMBER_ALREADY_APPLIED ;
45
56import com .fasterxml .jackson .databind .ObjectMapper ;
67import inha .gdgoc .domain .recruit .member .dto .request .ApplicationRequest ;
8+ import inha .gdgoc .domain .recruit .member .dto .request .RecruitMemberMemoRequest ;
79import inha .gdgoc .domain .recruit .member .dto .response .CheckEmailResponse ;
810import inha .gdgoc .domain .recruit .member .dto .response .CheckPhoneNumberResponse ;
911import inha .gdgoc .domain .recruit .member .dto .response .CheckStudentIdResponse ;
1416import inha .gdgoc .domain .recruit .member .enums .SurveyType ;
1517import inha .gdgoc .domain .recruit .member .exception .RecruitMemberException ;
1618import inha .gdgoc .domain .recruit .member .repository .AnswerRepository ;
19+ import inha .gdgoc .domain .recruit .member .repository .RecruitMemberMemoRepository ;
1720import inha .gdgoc .domain .recruit .member .repository .RecruitMemberRepository ;
1821import inha .gdgoc .global .util .SemesterCalculator ;
1922import java .util .List ;
2730@ Service
2831public class RecruitMemberService {
2932 private final RecruitMemberRepository recruitMemberRepository ;
33+ private final RecruitMemberMemoRepository recruitMemberMemoRepository ;
3034 private final AnswerRepository answerRepository ;
3135 private final ObjectMapper objectMapper ;
3236 private final SemesterCalculator semesterCalculator ;
@@ -53,14 +57,27 @@ public void addRecruitMember(ApplicationRequest applicationRequest) {
5357 answerRepository .saveAll (answers );
5458 }
5559
60+ @ Transactional
61+ public void addRecruitMemberMemo (RecruitMemberMemoRequest recruitMemberMemoRequest ) {
62+ String cleanPhone = normalizePhoneNumber (recruitMemberMemoRequest .getPhoneNumber ());
63+ boolean alreadyApplied = recruitMemberRepository .existsByPhoneNumber (cleanPhone );
64+ boolean alreadyMemoRequested = recruitMemberMemoRepository .existsByPhoneNumber (cleanPhone );
65+
66+ if (alreadyApplied || alreadyMemoRequested ) {
67+ throw new RecruitMemberException (RECRUIT_MEMBER_ALREADY_APPLIED );
68+ }
69+
70+ recruitMemberMemoRepository .save (recruitMemberMemoRequest .toEntity ());
71+ }
72+
5673 public CheckStudentIdResponse isRegisteredStudentId (String studentId ) {
5774 boolean exists = recruitMemberRepository .existsByStudentId (studentId );
5875
5976 return new CheckStudentIdResponse (exists );
6077 }
6178
6279 public CheckPhoneNumberResponse isRegisteredPhoneNumber (String phoneNumber ) {
63- String cleanPhone = phoneNumber . replaceAll ( "[^0-9]" , "" );
80+ String cleanPhone = normalizePhoneNumber ( phoneNumber );
6481 boolean exists = recruitMemberRepository .existsByPhoneNumber (cleanPhone );
6582
6683 return new CheckPhoneNumberResponse (exists );
@@ -102,4 +119,8 @@ public Page<RecruitMember> searchMembersByNamePage(String name, Pageable pageabl
102119 return recruitMemberRepository .findByNameContainingIgnoreCase (name , pageable );
103120 }
104121
122+ private String normalizePhoneNumber (String phoneNumber ) {
123+ return phoneNumber .replaceAll ("[^0-9]" , "" );
124+ }
125+
105126}
0 commit comments