Skip to content

Commit

Permalink
[feat] #5 중복 및 유효검증 예외 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
seokjun01 committed Jan 3, 2025
1 parent f58c98b commit 4f00e24
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,7 @@ public interface MemberRepository extends JpaRepository<Member, Long> {
Optional<Member> findByEmail(String email);
Optional<Member> findByRefreshToken(String refreshToken);
boolean existsByNickname(String nickname);
boolean existsByPhoneNumber(String phoneNumber);
boolean existsByStudentNumber(Long studentNumber);
}

Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,50 @@ public class MemberService {
// 회원 가입 완료시 , 기본 값에서 사용자 입력값으로 업데이트 해주는 메소드
public Void completeRegistration(MemberSignUpRequestDto signUpRequestDto, UserDetails userDetails) {
String email = userDetails.getUsername();

validateSignUpData(signUpRequestDto);
// 이메일로 기존 사용자 조회
Member member = memberRepository.findByEmail(email)
.orElseThrow(() -> new CommonException(ErrorCode.USER_NOT_FOUND));


member.updateMemberDetails(signUpRequestDto.getNickname(), signUpRequestDto.getPhoneNumber(), signUpRequestDto.getStudentNumber(), signUpRequestDto.getGender(), BirthDate.of(signUpRequestDto.getYear(), signUpRequestDto.getMonth(), signUpRequestDto.getDay()), signUpRequestDto.getMbti());
return null;
}

private void validateSignUpData(MemberSignUpRequestDto signUpRequestDto) {
// 성별 필수 선택 검증
if (signUpRequestDto.getGender() == null) {
throw new CommonException(ErrorCode.INVALID_GENDER);
}

// 전화번호 유효성 검증
if (!signUpRequestDto.getPhoneNumber().matches("^\\d{10,11}$")) {
throw new CommonException(ErrorCode.INVALID_PHONE_NUMBER);
}
if (memberRepository.existsByPhoneNumber(signUpRequestDto.getPhoneNumber())) {
throw new CommonException(ErrorCode.DUPLICATE_PHONE_NUMBER); // 전화번호 중복 예외 발생
}

// 학번 유효성 검증
if (signUpRequestDto.getStudentNumber() == null || String.valueOf(signUpRequestDto.getStudentNumber()).length() != 9) {
throw new CommonException(ErrorCode.INVALID_STUDENT_NUMBER);
}
if (memberRepository.existsByStudentNumber(signUpRequestDto.getStudentNumber())) {
throw new CommonException(ErrorCode.DUPLICATE_STUDENT_NUMBER); // 학번 중복 예외 발생
}


// 닉네임 중복 확인
if (memberRepository.existsByNickname(signUpRequestDto.getNickname())) {
throw new CommonException(ErrorCode.DUPLICATE_NICKNAME); // 닉네임 중복 예외 발생
throw new CommonException(ErrorCode.DUPLICATE_NICKNAME);
}

member.updateMemberDetails(signUpRequestDto.getNickname(), signUpRequestDto.getPhoneNumber(), signUpRequestDto.getStudentNumber(), signUpRequestDto.getGender(), BirthDate.of(signUpRequestDto.getYear(), signUpRequestDto.getMonth(), signUpRequestDto.getDay()), Mbti.fromString(signUpRequestDto.getMbti().name()));
return null;
// MBTI 검증
Mbti.fromString(signUpRequestDto.getMbti().name()); // fromString에서 검증 처리
}


// private void updateMemberDetails(Member member, MemberSignUpRequestDto signUpRequestDto) {
// member.updateNickname(signUpRequestDto.getNickname());
// member.updatePhoneNumber(signUpRequestDto.getPhoneNumber());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,30 @@ public enum ErrorCode {
//유효하지 않은 Mbti
INVALID_MBTI(404, "INVALID_MBTI" , "유효하지 않은 MBTI입니다."),

// 성별 필수 선택
INVALID_GENDER(400, "INVALID_GENDER", "성별 선택은 필수입니다."),

// 유효하지 않은 전화번호
INVALID_PHONE_NUMBER(400, "INVALID_PHONE_NUMBER", "유효하지 않은 전화번호입니다."),

// 유효하지 않은 학번
INVALID_STUDENT_NUMBER(400, "INVALID_STUDENT_NUMBER", "유효하지 않은 학번입니다."),

//유효하지 않은 요청
VALIDATION_FAILED(400, "VALIDATION_FAILED", "요청 값이 올바르지 않습니다."),

//회원
USER_NOT_FOUND(404, "USER_NOT_FOUND", "유저를 찾을 수 없습니다."),

//중복된 회원
MEMBER_ALREADY_EXISTS(409, "MEMBER_ALREADY_EXISTS", "이미 가입된 이메일입니다."),

//중복된 전화번호
DUPLICATE_PHONE_NUMBER(409, "DUPLICATE_PHONE_NUMBER", "이미 사용 중인 전화번호입니다."),

//중복된 학번
DUPLICATE_STUDENT_NUMBER(409, "DUPLICATE_STUDENT_NUMBER", "이미 사용 중인 학번입니다."),

//중복 닉네임
DUPLICATE_NICKNAME(409, "NICKNAME_ALREADY_EXISTS", "이미 존재하는 닉네임입니다.");

Expand Down

0 comments on commit 4f00e24

Please sign in to comment.