diff --git a/src/main/java/com/bbteam/budgetbuddies/domain/user/service/UserServiceImpl.java b/src/main/java/com/bbteam/budgetbuddies/domain/user/service/UserServiceImpl.java index d4afd0d..7987b8e 100644 --- a/src/main/java/com/bbteam/budgetbuddies/domain/user/service/UserServiceImpl.java +++ b/src/main/java/com/bbteam/budgetbuddies/domain/user/service/UserServiceImpl.java @@ -156,22 +156,15 @@ public AuthenticationResponse.AdditionalInfo saveAdditionalInfo(UserDto.AuthUser // null 확인 및 초기화 List hashtagIds = Optional.ofNullable(dto.getHashtagIds()).orElse(Collections.emptyList()); - dto.getHashtagIds().stream().map(it -> { - log.info("hashtagId: {}", it); - return null; - }); + User foundUser = userRepository.findById(user.getId()) + .orElseThrow(() -> new IllegalArgumentException("Not found user")); - User foundUser = userRepository.findById(user.getId()).orElseThrow(() -> new IllegalArgumentException("Not found user")); - -// log.info("user id: {}", foundUser.getId()); -// log.info("user name: {}", foundUser.getName()); -// log.info("user phoneNumber: {}", foundUser.getPhoneNumber()); -// log.info("user age: {}", foundUser.getAge()); -// log.info("user gender: {}", foundUser.getGender()); -// log.info("user mobileCarrier: {}", foundUser.getMobileCarrier()); -// log.info("user region: {}", foundUser.getRegion()); + // MobileCarrier와 Region 값 설정 + String mobileCarrier = dto.getMobileCarrier() != null ? dto.getMobileCarrier() : null; + String region = dto.getRegion() != null ? dto.getRegion() : null; - foundUser.setAdditionalInfo(dto.getMobileCarrier(), dto.getRegion()); + // 추가 정보 설정 + foundUser.setAdditionalInfo(mobileCarrier, region); foundUser = userRepository.save(foundUser); diff --git a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/controller/AuthenticationController.java b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/controller/AuthenticationController.java index a9718eb..49e30dd 100644 --- a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/controller/AuthenticationController.java +++ b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/controller/AuthenticationController.java @@ -107,9 +107,10 @@ public ApiResponse saveAdditionalInfo( // 유저 정보 저장 AuthenticationResponse.AdditionalInfo savedUser = userService.saveAdditionalInfo(user, dto); - // 유저가 선택한 해시태그를 저장 - userService.saveFavoriteHashtags(savedUser.getId(), dto.getHashtagIds()); - + // 유저가 선택한 해시태그가 존재하는 경우에만 저장 + if (dto.getHashtagIds() != null) { + userService.saveFavoriteHashtags(savedUser.getId(), dto.getHashtagIds()); + } return ApiResponse.onSuccess(savedUser); } diff --git a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationRequest.java b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationRequest.java index acda3f1..db3fff5 100644 --- a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationRequest.java +++ b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationRequest.java @@ -35,6 +35,8 @@ public static class ToLogin { @Getter @Builder + @AllArgsConstructor + @NoArgsConstructor public static class StandardInfo { private String name; private Gender gender; @@ -44,6 +46,8 @@ public static class StandardInfo { @Getter @Builder + @AllArgsConstructor + @NoArgsConstructor public static class AdditionalInfo { private String mobileCarrier; private String region; diff --git a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationResponse.java b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationResponse.java index f875be9..960009a 100644 --- a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationResponse.java +++ b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/dto/AuthenticationResponse.java @@ -39,6 +39,9 @@ public static class SendTokens { // AuthenticationRequest.ToLogin과 대응 @Schema(description = "전화번호", example = "01012341234") private String phoneNumber; // 전화번호 + @Schema(description = "기존에 회원가입했던 사용자: true / 첫 로그인하는 사용자: false") + private Boolean existingUser; // 기존에 회원가입했던 사용자: true / 첫 로그인하는 사용자: false + @Schema(description = "액세스 토큰") private String accessToken; // 액세스 토큰 diff --git a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/service/AuthenticationService.java b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/service/AuthenticationService.java index 3976af3..11b5dfd 100644 --- a/src/main/java/com/bbteam/budgetbuddies/global/security/auth/service/AuthenticationService.java +++ b/src/main/java/com/bbteam/budgetbuddies/global/security/auth/service/AuthenticationService.java @@ -11,6 +11,8 @@ import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Optional; + @Service @RequiredArgsConstructor public class AuthenticationService { @@ -44,12 +46,12 @@ public AuthenticationResponse.SendTokens login(String phoneNumber, String otpNum } // 전화번호로 사용자를 로드, 존재하지 않으면 새 사용자 생성 - final User user = userRepository.findFirstByPhoneNumber(phoneNumber) - .orElseGet(() -> userRepository.save(User.builder() // 사용자 정보가 없으면 새로 생성 + final Optional existingUser = userRepository.findFirstByPhoneNumber(phoneNumber); + final User user = existingUser.orElseGet(() -> + userRepository.save(User.builder() // 사용자 정보가 없으면 새로 생성 .phoneNumber(phoneNumber) - .build() - )); - + .build()) + ); // JWT 액세스 토큰 발급 final String accessToken = jwtUtil.generateAccessToken(user); // JWT 리프레시 토큰 발급 @@ -59,6 +61,7 @@ public AuthenticationResponse.SendTokens login(String phoneNumber, String otpNum return AuthenticationResponse.SendTokens.builder() .userId(user.getId()) // 사용자 ID .phoneNumber(user.getPhoneNumber()) // 전화번호 + .existingUser(existingUser.isPresent()) // 기존에 회원가입을 했던 사용자인지 여부 .accessToken(accessToken) // 액세스 토큰 .refreshToken(refreshToken) // 리프레시 토큰 .build();