diff --git a/src/main/java/com/example/spot/api/code/status/ErrorStatus.java b/src/main/java/com/example/spot/api/code/status/ErrorStatus.java index 3f9e3ed8..77a337f4 100644 --- a/src/main/java/com/example/spot/api/code/status/ErrorStatus.java +++ b/src/main/java/com/example/spot/api/code/status/ErrorStatus.java @@ -55,6 +55,7 @@ public enum ErrorStatus implements BaseErrorCode { _UNABLE_TO_SEND_VERIFICATION_CODE(HttpStatus.BAD_REQUEST, "AA4017", "인증 코드를 전송할 수 없습니다."), _UNABLE_TO_SEND_EMAIL(HttpStatus.BAD_REQUEST, "AA4018", "이메일을 전송할 수 없습니다."), _UNABLE_TO_LOAD_MAIL_FORM(HttpStatus.INTERNAL_SERVER_ERROR, "AA4019", "이메일 인증 폼을 불러올 수 없습니다."), + _MEMBER_LOGIN_ID_ALREADY_EXISTS(HttpStatus.BAD_REQUEST, "AA4020", "해당 로그인 아이디로 가입한 회원이 이미 존재합니다."), //스터디 관련 에러 _STUDY_NOT_FOUND(HttpStatus.NOT_FOUND, "STUDY4001", "스터디를 찾을 수 없습니다."), diff --git a/src/main/java/com/example/spot/service/auth/AuthService.java b/src/main/java/com/example/spot/service/auth/AuthService.java index 123729a7..02f2bc9f 100644 --- a/src/main/java/com/example/spot/service/auth/AuthService.java +++ b/src/main/java/com/example/spot/service/auth/AuthService.java @@ -15,7 +15,7 @@ public interface AuthService { // 리프레시 토큰을 사용하여 새로운 액세스 토큰을 발급 TokenDTO reissueToken(String refreshToken); - MemberResponseDTO.MemberUpdateDTO signUpAndPartialUpdate(String nickname, Boolean personalInfo, Boolean idInfo); + MemberResponseDTO.MemberInfoCreationDTO signUpAndPartialUpdate(String nickname, Boolean personalInfo, Boolean idInfo); void authorizeWithNaver(HttpServletRequest request, HttpServletResponse response); diff --git a/src/main/java/com/example/spot/service/auth/AuthServiceImpl.java b/src/main/java/com/example/spot/service/auth/AuthServiceImpl.java index c60fa44d..7bb30ab1 100644 --- a/src/main/java/com/example/spot/service/auth/AuthServiceImpl.java +++ b/src/main/java/com/example/spot/service/auth/AuthServiceImpl.java @@ -37,7 +37,6 @@ import java.util.stream.Collectors; import java.util.stream.IntStream; -import com.fasterxml.jackson.core.JsonProcessingException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @@ -113,7 +112,7 @@ public TokenDTO reissueToken(String refreshToken) { /* ----------------------------- 공통 회원 관리 API ------------------------------------- */ @Override - public MemberResponseDTO.MemberUpdateDTO signUpAndPartialUpdate(String nickname, Boolean personalInfo, Boolean idInfo) { + public MemberResponseDTO.MemberInfoCreationDTO signUpAndPartialUpdate(String nickname, Boolean personalInfo, Boolean idInfo) { // Authorization Long memberId = SecurityUtils.getCurrentUserId(); @@ -124,10 +123,7 @@ public MemberResponseDTO.MemberUpdateDTO signUpAndPartialUpdate(String nickname, member.updateTerm(personalInfo, idInfo); member = memberRepository.save(member); - return MemberResponseDTO.MemberUpdateDTO.builder() - .memberId(memberId) - .updatedAt(member.getUpdatedAt()) - .build(); + return MemberResponseDTO.MemberInfoCreationDTO.toDTO(member); } /* ----------------------------- 네이버 소셜로그인 API ------------------------------------- */ @@ -365,6 +361,9 @@ public MemberResponseDTO.MemberSignInDTO signUp(MemberRequestDTO.SignUpDTO signU if (memberRepository.existsByEmail(signUpDTO.getEmail())) { throw new MemberHandler(ErrorStatus._MEMBER_EMAIL_ALREADY_EXISTS); } + if (memberRepository.existsByLoginId(signUpDTO.getLoginId())) { + throw new MemberHandler(ErrorStatus._MEMBER_LOGIN_ID_ALREADY_EXISTS); + } if (!signUpDTO.getPassword().equals(signUpDTO.getPwCheck())) { throw new MemberHandler(ErrorStatus._MEMBER_PW_AND_PW_CHECK_DO_NOT_MATCH); } diff --git a/src/main/java/com/example/spot/web/controller/AuthController.java b/src/main/java/com/example/spot/web/controller/AuthController.java index 78058df8..32ebf603 100644 --- a/src/main/java/com/example/spot/web/controller/AuthController.java +++ b/src/main/java/com/example/spot/web/controller/AuthController.java @@ -54,13 +54,13 @@ public ApiResponse reissueToken(HttpServletRequest request, * Request Params : String nickname, Boolean personalInfo, Boolean idInfo * Response Body : Long memberId, LocalDateTime updatedAt """) - @GetMapping("/sign-up/update") - public ApiResponse signUpAndPartialUpdate( + @PostMapping("/sign-up/update") + public ApiResponse signUpAndPartialUpdate( @RequestParam @TextLength(max = 8) String nickname, @RequestParam Boolean personalInfo, @RequestParam Boolean idInfo) { - MemberResponseDTO.MemberUpdateDTO memberUpdateDTO = authService.signUpAndPartialUpdate(nickname, personalInfo, idInfo); - return ApiResponse.onSuccess(SuccessStatus._MEMBER_UPDATED, memberUpdateDTO); + MemberResponseDTO.MemberInfoCreationDTO memberInfoCreationDTO = authService.signUpAndPartialUpdate(nickname, personalInfo, idInfo); + return ApiResponse.onSuccess(SuccessStatus._MEMBER_UPDATED, memberInfoCreationDTO); } /* ----------------------------- 네이버 소셜로그인 API ------------------------------------- */ diff --git a/src/main/java/com/example/spot/web/dto/member/MemberResponseDTO.java b/src/main/java/com/example/spot/web/dto/member/MemberResponseDTO.java index 9d0c7d9e..2048de1e 100644 --- a/src/main/java/com/example/spot/web/dto/member/MemberResponseDTO.java +++ b/src/main/java/com/example/spot/web/dto/member/MemberResponseDTO.java @@ -13,6 +13,25 @@ @Getter public class MemberResponseDTO { + @Getter + @RequiredArgsConstructor(access = AccessLevel.PRIVATE) + @Builder(access = AccessLevel.PRIVATE) + public static class MemberInfoCreationDTO { + private final String name; + private final String email; + private final Boolean idInfo; + private final Boolean personalInfo; + + public static MemberInfoCreationDTO toDTO(Member member) { + return MemberInfoCreationDTO.builder() + .name(member.getName()) + .email(member.getEmail()) + .idInfo(member.getIdInfo()) + .personalInfo(member.getPersonalInfo()) + .build(); + } + } + @Getter @RequiredArgsConstructor(access = AccessLevel.PRIVATE) @Builder(access = AccessLevel.PRIVATE)