Skip to content

Commit 3d7bedc

Browse files
authored
Merge pull request #66 from Geumpumta/chore/user
chore: 회원가입 후 추가 정보 입력 예외 처리 추가
2 parents 97bf643 + 8257e55 commit 3d7bedc

File tree

4 files changed

+456
-2
lines changed

4 files changed

+456
-2
lines changed

src/main/java/com/gpt/geumpumtabackend/global/exception/ExceptionType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ public enum ExceptionType {
3030
// User
3131
USER_NOT_FOUND(NOT_FOUND, "U001","사용자가 존재하지 않습니다"),
3232
SCHOOL_EMAIL_ALREADY_REGISTERED(FORBIDDEN, "U002", "학교 이메일이 등록된 상태입니다"),
33-
DUPLICATED_SCHOOL_EMAIL(CONFLICT, "U003", "이미 사용중인 이메일입니다"),
33+
DUPLICATED_SCHOOL_EMAIL(CONFLICT, "U003", "이미 사용중인 학교 이메일입니다"),
3434
DEPARTMENT_NOT_FOUND(BAD_REQUEST, "U004", "존재하지 않는 학과 명입니다"),
3535
USER_WITHDRAWN(FORBIDDEN, "U005", "탈퇴한 사용자입니다."),
3636
DUPLICATED_STUDENT_ID(CONFLICT, "U006", "이미 사용중인 학번입니다."),

src/main/java/com/gpt/geumpumtabackend/user/repository/UserRepository.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.gpt.geumpumtabackend.global.oauth.user.OAuth2Provider;
44
import com.gpt.geumpumtabackend.user.domain.User;
5+
import jakarta.validation.constraints.Pattern;
56
import org.springframework.data.jpa.repository.JpaRepository;
67

78
import java.util.List;
@@ -19,4 +20,8 @@ public interface UserRepository extends JpaRepository<User, Long> {
1920
Optional<User> findByProviderAndProviderIdAndDeletedAtIsNull(OAuth2Provider provider, String providerId);
2021

2122
Optional<User> findByProviderAndProviderId(OAuth2Provider provider, String providerId);
23+
24+
boolean existsByStudentId(String studentId);
25+
26+
boolean existsBySchoolEmail(String schoolEmail);
2227
}

src/main/java/com/gpt/geumpumtabackend/user/service/UserService.java

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ public void generateRandomNickname(User user){
5555
user.setInitialNickname(nickname);
5656
}
5757

58-
// TODO : 데이터 중복 검증 추가하기
5958
@Transactional
6059
public TokenResponse completeRegistration(CompleteRegistrationRequest request, Long userId) {
6160
User user = userRepository.findById(userId)
6261
.orElseThrow(()->new BusinessException(ExceptionType.USER_NOT_FOUND));
62+
validateDuplication(request);
6363
user.completeRegistration(request);
6464
generateRandomNickname(user);
6565

@@ -69,6 +69,16 @@ public TokenResponse completeRegistration(CompleteRegistrationRequest request, L
6969
return TokenResponse.to(token);
7070
}
7171

72+
private void validateDuplication(CompleteRegistrationRequest request) {
73+
if(userRepository.existsBySchoolEmail((request.email()))){
74+
throw new BusinessException(ExceptionType.DUPLICATED_SCHOOL_EMAIL);
75+
}
76+
77+
if(userRepository.existsByStudentId(request.studentId())){
78+
throw new BusinessException(ExceptionType.DUPLICATED_STUDENT_ID);
79+
}
80+
}
81+
7282
public UserProfileResponse getUserProfile(Long userId) {
7383
User user = userRepository.findById(userId)
7484
.orElseThrow(()->new BusinessException(ExceptionType.USER_NOT_FOUND));

0 commit comments

Comments
 (0)