diff --git a/src/main/java/com/example/whiplash/auth/service/AuthService.java b/src/main/java/com/example/whiplash/auth/service/AuthService.java index acfebe4..15b4aca 100644 --- a/src/main/java/com/example/whiplash/auth/service/AuthService.java +++ b/src/main/java/com/example/whiplash/auth/service/AuthService.java @@ -79,17 +79,19 @@ public TokenResponseDTO authenticateByKakao(String code) { userRepository.save(kakaoUser); + return loginByKakao(kakaoUser); + // 회원가입의 경우 임시토큰 생성 - String tempToken = jwtTokenProvider.generateTempSocialToken(kakaoUser); - return AuthConverter.toTokenResponseDTO(tempToken, null, UserStatus.PENDING, LoginStatus.NEW_USER, kakaoUser.getName()); +// String tempToken = jwtTokenProvider.generateTempSocialToken(kakaoUser); +// return AuthConverter.toTokenResponseDTO(tempToken, null, UserStatus.PENDING, LoginStatus.NEW_USER, kakaoUser.getName()); } @Transactional public TokenResponseDTO loginByKakao(User user) { - if (user.getUserStatus() == UserStatus.PENDING || user.getUserStatus() == UserStatus.INACTIVE) { - throw new WhiplashException(ErrorStatus.USER_NOT_ACTIVATED); - } +// if (user.getUserStatus() == UserStatus.PENDING || user.getUserStatus() == UserStatus.INACTIVE) { +// throw new WhiplashException(ErrorStatus.USER_NOT_ACTIVATED); +// } // 모든 사용자 타입에 대해 user.getId()를 사용 String userId = String.valueOf(user.getId()); diff --git a/src/main/java/com/example/whiplash/quiz/dto/response/MixedQuizResDto.java b/src/main/java/com/example/whiplash/quiz/dto/response/MixedQuizResDto.java index 10d702a..8c78335 100644 --- a/src/main/java/com/example/whiplash/quiz/dto/response/MixedQuizResDto.java +++ b/src/main/java/com/example/whiplash/quiz/dto/response/MixedQuizResDto.java @@ -2,6 +2,7 @@ import lombok.AllArgsConstructor; import lombok.Data; +import lombok.NoArgsConstructor; import java.time.LocalDateTime; import java.util.List; @@ -25,6 +26,7 @@ public class MixedQuizResDto { */ @Data @AllArgsConstructor + @NoArgsConstructor public static class QuizWithTerm { private String question; private List options; diff --git a/src/main/java/com/example/whiplash/quiz/service/WeeklyChallengeService.java b/src/main/java/com/example/whiplash/quiz/service/WeeklyChallengeService.java index 8300397..412b0ab 100644 --- a/src/main/java/com/example/whiplash/quiz/service/WeeklyChallengeService.java +++ b/src/main/java/com/example/whiplash/quiz/service/WeeklyChallengeService.java @@ -54,6 +54,8 @@ public WeeklyChallengeResDto getWeeklyChallenge(Long userId) { Optional attemptOpt = challengeAttemptRepository .findByUserIdAndChallengeId(userId, challenge.getId()); + log.info("weekly challenge : {}", challenge.getQuizzesJson()); + // 4. 퀴즈 데이터 (이미 도전했으면 null) List quizzes = attemptOpt.isPresent() ? null @@ -266,23 +268,31 @@ private Double calculateAverageScore(Long challengeId) { */ private String convertToJson(Object obj) { try { - return objectMapper.writeValueAsString(obj); + String json = objectMapper.writeValueAsString(obj); + log.debug("JSON 변환 성공: type={}, length={}", obj.getClass().getSimpleName(), json.length()); + return json; } catch (JsonProcessingException e) { - throw new RuntimeException("JSON 변환 실패", e); + log.error("JSON 변환 실패: obj={}", obj, e); + throw new RuntimeException("JSON 변환 실패: " + e.getMessage(), e); } } private List parseQuizzesFromJson(String json) { try { - return objectMapper.readValue( + log.debug("JSON 파싱 시도: json={}", json); + List result = objectMapper.readValue( json, objectMapper.getTypeFactory().constructCollectionType( List.class, MixedQuizResDto.QuizWithTerm.class ) ); + log.debug("JSON 파싱 성공: size={}", result.size()); + return result; } catch (JsonProcessingException e) { - throw new RuntimeException("JSON 파싱 실패", e); + log.error("JSON 파싱 실패 - json 내용: {}", json, e); + log.error("에러 상세: {}", e.getMessage()); + throw new RuntimeException("JSON 파싱 실패: " + e.getMessage(), e); } }