Skip to content

Commit

Permalink
Merge pull request #234 from BudgetBuddiesTeam/dev
Browse files Browse the repository at this point in the history
[feat&refactor] 추가 정보 입력 시 사용자가 선택적으로 입력할 수 있도록 미입력 시 null값을 저장하는 로직으로 변경
  • Loading branch information
SoulTree-Lovers authored Dec 16, 2024
2 parents ebc6a48 + 846018d commit 519502a
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 22 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -156,22 +156,15 @@ public AuthenticationResponse.AdditionalInfo saveAdditionalInfo(UserDto.AuthUser
// null 확인 및 초기화
List<Long> 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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -107,9 +107,10 @@ public ApiResponse<AuthenticationResponse.AdditionalInfo> 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);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@ public static class ToLogin {

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class StandardInfo {
private String name;
private Gender gender;
Expand All @@ -44,6 +46,8 @@ public static class StandardInfo {

@Getter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public static class AdditionalInfo {
private String mobileCarrier;
private String region;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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; // 액세스 토큰

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
@RequiredArgsConstructor
public class AuthenticationService {
Expand Down Expand Up @@ -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<User> 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 리프레시 토큰 발급
Expand All @@ -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();
Expand Down

0 comments on commit 519502a

Please sign in to comment.