diff --git a/src/main/java/com/potato/balbambalbam/card/cardFeedback/controller/CardFeedbackController.java b/src/main/java/com/potato/balbambalbam/card/cardFeedback/controller/CardFeedbackController.java index df5370b..24dcf68 100644 --- a/src/main/java/com/potato/balbambalbam/card/cardFeedback/controller/CardFeedbackController.java +++ b/src/main/java/com/potato/balbambalbam/card/cardFeedback/controller/CardFeedbackController.java @@ -46,7 +46,7 @@ public ResponseEntity postUserFeedback(@PathVariable("cardId") Long card @RequestHeader("access") String access, @Validated @RequestBody UserFeedbackRequestDto userFeedbackRequestDto) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); UserFeedbackResponseDto userFeedbackResponseDto = cardFeedbackService.postUserFeedback(userFeedbackRequestDto, userId, cardId); userLevelService.updateUserLevelInfo(cardId, userId, userFeedbackResponseDto.getUserScore()); @@ -66,7 +66,7 @@ public ResponseEntity postUserFeedback(@PathVariable("cardId") Long card public ResponseEntity postCustomUserFeedback(@PathVariable("cardId") Long cardId, @Validated @RequestBody UserFeedbackRequestDto userFeedbackRequestDto, @RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); UserFeedbackResponseDto userFeedbackResponseDto = customCardFeedbackService.postUserFeedback(userFeedbackRequestDto, cardId, userId); userLevelService.updateCustomCardUserLevelInfo(cardId, userId, userFeedbackResponseDto.getUserScore()); @@ -86,7 +86,7 @@ public ResponseEntity postCustomUserFeedback(@PathVariable("cardId") Lon public ResponseEntity postTodayCardUserFeedback(@PathVariable("cardId") Long cardId, @Validated @RequestBody UserFeedbackRequestDto userFeedbackRequestDto, @RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); UserFeedbackResponseDto userFeedbackResponseDto = todayCardFeedbackService.postUserFeedback(userFeedbackRequestDto, cardId, userId); userLevelService.updateCustomCardUserLevelInfo(cardId, userId, userFeedbackResponseDto.getUserScore()); diff --git a/src/main/java/com/potato/balbambalbam/card/cardInfo/controller/CardInfoController.java b/src/main/java/com/potato/balbambalbam/card/cardInfo/controller/CardInfoController.java index 01ea614..7526086 100644 --- a/src/main/java/com/potato/balbambalbam/card/cardInfo/controller/CardInfoController.java +++ b/src/main/java/com/potato/balbambalbam/card/cardInfo/controller/CardInfoController.java @@ -42,7 +42,7 @@ public class CardInfoController { } ) public ResponseEntity getCardInfo(@PathVariable("cardId") Long cardId, @RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); CardInfoResponseDto cardInfoResponseDto = cardInfoService.getCardInfo(userId, cardId); return ResponseEntity.ok().body(cardInfoResponseDto); } @@ -56,7 +56,7 @@ public ResponseEntity getCardInfo(@PathVariable("cardId") L } ) public ResponseEntity postCustomCardInfo(@PathVariable("cardId") Long cardId, @RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); CardInfoResponseDto cardInfoResponseDto = customCardInfoService.getCustomCardInfo(userId, cardId); return ResponseEntity.ok().body(cardInfoResponseDto); @@ -71,7 +71,7 @@ public ResponseEntity postCustomCardInfo(@PathVariable("car } ) public ResponseEntity postTodayCardInfo(@PathVariable("cardId") Long cardId, @RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); TodayCardInfoResponseDto cardInfoResponseDto = todayCardInfoService.getTodayCardInfo(userId, cardId); return ResponseEntity.ok().body(cardInfoResponseDto); diff --git a/src/main/java/com/potato/balbambalbam/card/todayCourse/controller/TodayCourseController.java b/src/main/java/com/potato/balbambalbam/card/todayCourse/controller/TodayCourseController.java index 080a3a3..492e758 100644 --- a/src/main/java/com/potato/balbambalbam/card/todayCourse/controller/TodayCourseController.java +++ b/src/main/java/com/potato/balbambalbam/card/todayCourse/controller/TodayCourseController.java @@ -37,7 +37,7 @@ public class TodayCourseController { }) public ResponseEntity getCardList(@RequestBody TodayCourseRequestDto requestDto, @RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); TodayCourseResponseDto response = todayCourseService.getCardList(userId, requestDto); diff --git a/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardController.java b/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardController.java index 63b1435..59b0c63 100644 --- a/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardController.java +++ b/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardController.java @@ -33,7 +33,7 @@ public class CustomCardController { @ApiResponse(responseCode = "400", description = "ERROR : 카드를 생성 불가(10개 이상 or 한국어 X, 35자 이상)", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) }) public ResponseEntity postCustomCard(@Validated @RequestBody CustomCardRequestDto customCardRequestDto, @RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); CustomCardResponseDto customCardResponse = customCardService.createCustomCardIfPossible(customCardRequestDto.getText(), userId); @@ -47,7 +47,7 @@ public ResponseEntity postCustomCard(@Validated @RequestB @ApiResponse(responseCode = "400", description = "ERROR : 카드 삭제 불가", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) }) public ResponseEntity deleteCustomCard(@PathVariable("cardId") Long cardId, @RequestHeader("access") String access) throws CardDeleteException { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); boolean isDeleted = customCardService.deleteCustomCard(userId, cardId); diff --git a/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardListController.java b/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardListController.java index 39ec0b9..e747337 100644 --- a/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardListController.java +++ b/src/main/java/com/potato/balbambalbam/home/customCard/controller/CustomCardListController.java @@ -38,7 +38,7 @@ public class CustomCardListController { @ApiResponse(responseCode = "400", description = "ERROR : 존재하지 않는 카테고리 조회", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) }) public ResponseEntity>> getCustomCardList(@RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); List cardDtoList = cardListService.getCustomCards(userId); CardListResponseDto> response = new CardListResponseDto<>(cardDtoList, cardDtoList.size()); diff --git a/src/main/java/com/potato/balbambalbam/home/learningCourse/controller/CardListController.java b/src/main/java/com/potato/balbambalbam/home/learningCourse/controller/CardListController.java index 4c63a8c..d38be51 100644 --- a/src/main/java/com/potato/balbambalbam/home/learningCourse/controller/CardListController.java +++ b/src/main/java/com/potato/balbambalbam/home/learningCourse/controller/CardListController.java @@ -37,7 +37,7 @@ public class CardListController { }) public ResponseEntity>> getCardList(@RequestParam("level") Long level, @RequestHeader("access") String access){ - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); List cardDtoList = cardListService.getCardsByCategory(level, userId); CardListResponseDto> response = new CardListResponseDto<>(cardDtoList, cardDtoList.size()); @@ -53,7 +53,7 @@ public ResponseEntity>> getCardList(@R @ApiResponse(responseCode = "400", description = "ERROR : 조회 실패", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) }) public ResponseEntity getCourseList(@RequestHeader("access") String access){ - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); CourseResponseDto response = cardListService.getCourseList(userId); @@ -68,7 +68,7 @@ public ResponseEntity getCourseList(@RequestHeader("access") @ApiResponse(responseCode = "400", description = "ERROR : 존재하지 않는 카드", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) }) public ResponseEntity updateCardBookmark(@PathVariable("cardId") Integer cardId, @RequestHeader("access") String access){ - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); String message = cardListService.toggleCardBookmark(Long.valueOf(cardId), userId); return ResponseEntity.ok().body(message); diff --git a/src/main/java/com/potato/balbambalbam/home/menu/controller/BookmarkCardsController.java b/src/main/java/com/potato/balbambalbam/home/menu/controller/BookmarkCardsController.java index 5133748..755ef9a 100644 --- a/src/main/java/com/potato/balbambalbam/home/menu/controller/BookmarkCardsController.java +++ b/src/main/java/com/potato/balbambalbam/home/menu/controller/BookmarkCardsController.java @@ -34,7 +34,7 @@ public class BookmarkCardsController { @ApiResponse(responseCode = "400", description = "ERROR : 존재하지 않는 카테고리 조회", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) }) public ResponseEntity getCardList(@RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); BookmarkCardResponseDto responseDto = bookmarkCardsService.getCards(userId); return ResponseEntity.ok().body(responseDto); diff --git a/src/main/java/com/potato/balbambalbam/home/menu/controller/MissedCardsController.java b/src/main/java/com/potato/balbambalbam/home/menu/controller/MissedCardsController.java index 5bf4694..dccf80c 100644 --- a/src/main/java/com/potato/balbambalbam/home/menu/controller/MissedCardsController.java +++ b/src/main/java/com/potato/balbambalbam/home/menu/controller/MissedCardsController.java @@ -34,7 +34,7 @@ public class MissedCardsController { @ApiResponse(responseCode = "400", description = "ERROR : 존재하지 않는 카테고리 조회", content = @Content(schema = @Schema(implementation = ExceptionDto.class))) }) public ResponseEntity getCardList(@RequestHeader("access") String access) { - Long userId = joinService.findUserBySocialId(jwtUtil.getSocialId(access)).getId(); + Long userId = jwtUtil.getUserId(access); MissedCardResponseDto responseDto = missedCardsService.getCards(userId); diff --git a/src/main/java/com/potato/balbambalbam/myReport/report/controller/ReportController.java b/src/main/java/com/potato/balbambalbam/myReport/report/controller/ReportController.java index 9f45ad0..0742314 100644 --- a/src/main/java/com/potato/balbambalbam/myReport/report/controller/ReportController.java +++ b/src/main/java/com/potato/balbambalbam/myReport/report/controller/ReportController.java @@ -25,11 +25,6 @@ public class ReportController { private final JWTUtil jwtUtil; private final ReportInfoService reportInfoService; - private Long extractUserIdFromToken(String access) { // access 토큰으로부터 userId 추출하는 함수 - String socialId = jwtUtil.getSocialId(access); - return joinService.findUserBySocialId(socialId).getId(); - } - @Operation(summary = "My report 화면 정보 조회", description = "My report 화면에 필요한 모든 정보를 반환한다.") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "My report 화면 정보 조회 성공", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ReportInfoDto.class))), @@ -37,7 +32,7 @@ private Long extractUserIdFromToken(String access) { // access 토큰으로부 }) @GetMapping("/report") public ResponseEntity getHomeInfo(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); ReportInfoDto response = reportInfoService.getMyReportInfo(userId); return ResponseEntity.ok(response); } diff --git a/src/main/java/com/potato/balbambalbam/myReport/test/controller/WeakSoundTestController.java b/src/main/java/com/potato/balbambalbam/myReport/test/controller/WeakSoundTestController.java index 2605d9b..e50a7ef 100644 --- a/src/main/java/com/potato/balbambalbam/myReport/test/controller/WeakSoundTestController.java +++ b/src/main/java/com/potato/balbambalbam/myReport/test/controller/WeakSoundTestController.java @@ -37,18 +37,13 @@ public class WeakSoundTestController { private final JWTUtil jwtUtil; private final WeakSoundTestService weakSoundTestService; - private Long extractUserIdFromToken(String access) { - String socialId = jwtUtil.getSocialId(access); - return joinService.findUserBySocialId(socialId).getId(); - } - @Operation(summary = "취약음소 테스트 존재 여부 확인", description = "이전에 진행중이던 테스트가 있는지 확인한다.") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "확인 완료", content = @Content(mediaType = "application/json", schema = @Schema(implementation = TestStartResponseDto.class))) }) @GetMapping("/test/check") public ResponseEntity checkTest(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); TestStartResponseDto response = weakSoundTestService.checkTestStatus(userId); return ResponseEntity.ok(response); } @@ -59,7 +54,7 @@ public ResponseEntity checkTest(@RequestHeader("access") S }) @PostMapping("/test/new") public ResponseEntity> startNewTest(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); weakSoundTestService.startNewTest(userId); return ResponseEntity.ok(weakSoundTestService.getAllTests()); } @@ -71,7 +66,7 @@ public ResponseEntity> startNewTest(@RequestHeader("a }) @GetMapping("/test/continue") public ResponseEntity> continueTest(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); List remainingTests = weakSoundTestService.getContinueTests(userId); return ResponseEntity.ok(remainingTests); } @@ -85,7 +80,7 @@ public ResponseEntity> continueTest(@RequestHeader("a }) @PostMapping(value = "/test/{cardId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity uploadFile(@PathVariable("cardId") Long id, @RequestHeader("access") String access, @RequestParam("userAudio") MultipartFile userAudio) throws IOException { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); if (userAudio.isEmpty()) { throw new ParameterNotFoundException("사용자 음성 파일이 비었습니다."); @@ -106,7 +101,7 @@ public ResponseEntity uploadFile(@PathVariable("cardId") Long id, @Reque }) @PostMapping("/test/finalize") public ResponseEntity> finalizeAnalysis(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); Map topPhonemes = weakSoundTestService.getTopPhonemes(userId); weakSoundTestService.finalizeTestStatus(userId); return ResponseEntity.ok(topPhonemes); diff --git a/src/main/java/com/potato/balbambalbam/myReport/weaksound/controller/PhonemeController.java b/src/main/java/com/potato/balbambalbam/myReport/weaksound/controller/PhonemeController.java index 345617b..8101501 100644 --- a/src/main/java/com/potato/balbambalbam/myReport/weaksound/controller/PhonemeController.java +++ b/src/main/java/com/potato/balbambalbam/myReport/weaksound/controller/PhonemeController.java @@ -36,10 +36,6 @@ public class PhonemeController { private final PhonemeService phonemeService; private final PhonemeRepository phonemeRepository; - private Long extractUserIdFromToken(String access) { - String socialId = jwtUtil.getSocialId(access); - return joinService.findUserBySocialId(socialId).getId(); - } @Operation(summary = "사용자의 취약음소 제공", description = "사용자의 취약음소 4개를 제공한다.") @ApiResponses(value = { @@ -49,7 +45,7 @@ private Long extractUserIdFromToken(String access) { }) @GetMapping("/test/phonemes") public ResponseEntity> getWeakPhonemesByUserId(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); List weakPhonemes = phonemeService.getWeakPhonemes(userId); if (weakPhonemes.isEmpty()) { throw new ResponseNotFoundException("취약음소가 없습니다."); @@ -64,7 +60,7 @@ public ResponseEntity> getWeakPhonemesByUserId(@R }) @GetMapping("/test/all") public ResponseEntity> getAllPhonemesWithWeakStatus(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); return ResponseEntity.ok(phonemeService.getAllPhonemes(userId)); } @@ -75,7 +71,7 @@ public ResponseEntity> getAllPhonemesWithWeakStatus(@Re }) @PostMapping("/test/add") public ResponseEntity addWeakPhonemes(@RequestHeader("access") String access, @RequestBody List phonemeIds) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); phonemeService.addWeakPhonemes(userId, phonemeIds); return ResponseEntity.ok("취약음소가 추가되었습니다."); } @@ -87,7 +83,7 @@ public ResponseEntity addWeakPhonemes(@RequestHeader("access") String access, }) @DeleteMapping("test/phonemes/{phonemeId}") public ResponseEntity deleteWeakPhoneme(@RequestHeader("access") String access, @PathVariable Long phonemeId) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); phonemeService.deleteWeakPhoneme(userId, phonemeId); return ResponseEntity.ok("사용자의 취약음소가 삭제되었습니다."); } diff --git a/src/main/java/com/potato/balbambalbam/user/home/controller/HomeController.java b/src/main/java/com/potato/balbambalbam/user/home/controller/HomeController.java index 4be03d5..11c65b9 100644 --- a/src/main/java/com/potato/balbambalbam/user/home/controller/HomeController.java +++ b/src/main/java/com/potato/balbambalbam/user/home/controller/HomeController.java @@ -28,10 +28,6 @@ public class HomeController { private final HomeInfoService homeInfoService; private final NotificationService notificationService; - private Long extractUserIdFromToken(String access) { // access 토큰으로부터 userId 추출하는 함수 - String socialId = jwtUtil.getSocialId(access); - return joinService.findUserBySocialId(socialId).getId(); - } @Operation(summary = "홈 화면 정보 조회", description = "사용자의 홈 화면에 필요한 모든 정보를 반환한다.") @ApiResponses(value = { @@ -40,7 +36,7 @@ private Long extractUserIdFromToken(String access) { // access 토큰으로부 }) @GetMapping("/home") public ResponseEntity getHomeInfo(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); HomeInfoDto response = homeInfoService.getHomeInfo(userId); return ResponseEntity.ok(response); } diff --git a/src/main/java/com/potato/balbambalbam/user/join/controller/JoinController.java b/src/main/java/com/potato/balbambalbam/user/join/controller/JoinController.java index e8c87f3..609a2ec 100644 --- a/src/main/java/com/potato/balbambalbam/user/join/controller/JoinController.java +++ b/src/main/java/com/potato/balbambalbam/user/join/controller/JoinController.java @@ -1,10 +1,10 @@ package com.potato.balbambalbam.user.join.controller; import com.potato.balbambalbam.exception.dto.ExceptionDto; -import com.potato.balbambalbam.user.setting.dto.EditResponseDto; import com.potato.balbambalbam.user.join.dto.JoinResponseDto; -import com.potato.balbambalbam.user.token.jwt.JWTUtil; import com.potato.balbambalbam.user.join.service.JoinService; +import com.potato.balbambalbam.user.setting.dto.EditResponseDto; +import com.potato.balbambalbam.user.token.jwt.JWTUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.ExampleObject; @@ -18,7 +18,13 @@ import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; @RequiredArgsConstructor @Controller @@ -55,11 +61,22 @@ public ResponseEntity createUser(@Validated @RequestBody JoinResponseDto join //회원정보 출력 @GetMapping("/users") public ResponseEntity getUserById(@RequestHeader("access") String access) { - Long userId = jwtUtil.getUserId(access); - EditResponseDto editUser = joinService.findUserById(userId); - - return ResponseEntity.ok().body(editUser); //200 + EditResponseDto userInfo = joinService.findUserById(userId); + return ResponseEntity.ok(userInfo); } + @Operation(summary = "탈퇴 계정 복구", description = "탈퇴된 회원의 계정을 복구한다.") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "계정이 성공적으로 복구된 경우", content = @Content(mediaType = "application/json")), + @ApiResponse(responseCode = "404", description = "사용자를 찾을 수 없는 경우", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ExceptionDto.class))), + @ApiResponse(responseCode = "400", description = "탈퇴 상태가 아닌 사용자에 대한 복구 시도", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ExceptionDto.class))), + @ApiResponse(responseCode = "500", description = "서버 오류로 인해 복구에 실패한 경우", content = @Content(mediaType = "application/json", schema = @Schema(implementation = ExceptionDto.class))) + }) + @PostMapping("/users/recover") + public ResponseEntity recoverUser(@RequestParam("socialId") String socialId, HttpServletResponse response) { + String message = joinService.recoverDeletedUser(socialId, response); + return ResponseEntity.ok(message); // 복구 성공 시 성공 메시지 반환 + + } } diff --git a/src/main/java/com/potato/balbambalbam/user/join/service/JoinService.java b/src/main/java/com/potato/balbambalbam/user/join/service/JoinService.java index abda83a..3335f16 100644 --- a/src/main/java/com/potato/balbambalbam/user/join/service/JoinService.java +++ b/src/main/java/com/potato/balbambalbam/user/join/service/JoinService.java @@ -85,36 +85,43 @@ public EditResponseDto findUserById(Long userId) { User editUser = userRepository.findById(userId) .orElseThrow(() -> new UserNotFoundException("사용자를 찾을 수 없습니다.")); //404 - // Fetch user level by userId - UserLevel editUserLevel = userLevelRepository.findByUserId(userId) - .orElseThrow(() -> new UserNotFoundException("사용자 레벨 정보를 찾을 수 없습니다.")); - - // 비활성화된 회원인 경우 예외 처리 if (editUser.getStatusId()==2L) { throw new UserNotFoundException("비활성화된 회원입니다."); } // 탈퇴한 회원인 경우 예외 처리 if (editUser.getStatusId()==3L) { - throw new UserNotFoundException("탈퇴한 회원입니다."); + throw new IllegalStateException("탈퇴한 회원입니다."); } + // Fetch user level by userId + UserLevel editUserLevel = userLevelRepository.findByUserId(userId) + .orElseThrow(() -> new UserNotFoundException("사용자 레벨 정보를 찾을 수 없습니다.")); + return new EditResponseDto(editUser.getName(), editUser.getAge(), editUser.getGender(), editUserLevel.getCategoryId()); } - public User findUserBySocialId(String socialId) { - User user = userRepository.findBySocialId(socialId).orElseThrow(() -> new UserNotFoundException("사용자를 찾을 수 없습니다.")); + @Transactional + public String recoverDeletedUser(String socialId, HttpServletResponse response) { + User user = userRepository.findBySocialId(socialId) + .orElseThrow(() -> new UserNotFoundException("해당 사용자를 찾을 수 없습니다.")); - // 비활성화된 회원인 경우 예외 처리 - if (user.getStatusId()==2L) { - throw new UserNotFoundException("비활성화된 회원입니다."); - } - // 탈퇴한 회원인 경우 예외 처리 - if (user.getStatusId()==3L) { - throw new UserNotFoundException("탈퇴한 회원입니다."); + if (user.getStatusId() != 3L) { + throw new IllegalStateException("해당 사용자는 탈퇴 상태가 아닙니다."); // 예외 처리: 탈퇴 상태가 아니면 복구 불가 } - return user; - } + // 계정 복구: 상태를 ACTIVE(1)로 변경 + user.setStatusId(1L); // ACTIVE 상태로 변경 + userRepository.save(user); + // 복구 시 새 토큰 발급 + String access = jwtUtil.createJwt("access", user.getId(), user.getSocialId(), user.getRoleId(), 7200000L); + String refresh = jwtUtil.createJwt("refresh", user.getId(), user.getSocialId(), user.getRoleId(), 8640000000L); + + // 토큰을 응답 헤더에 추가 + response.setHeader("access", access); + response.setHeader("refresh", refresh); + + return "계정이 성공적으로 복구되었습니다."; + } } \ No newline at end of file diff --git a/src/main/java/com/potato/balbambalbam/user/notification/controller/NotificationController.java b/src/main/java/com/potato/balbambalbam/user/notification/controller/NotificationController.java index e105c4f..4698d42 100644 --- a/src/main/java/com/potato/balbambalbam/user/notification/controller/NotificationController.java +++ b/src/main/java/com/potato/balbambalbam/user/notification/controller/NotificationController.java @@ -28,11 +28,6 @@ public class NotificationController { private final JWTUtil jwtUtil; private final NotificationService notificationService; - private Long extractUserIdFromToken(String access) { // access 토큰으로부터 userId 추출하는 함수 - String socialId = jwtUtil.getSocialId(access); - return joinService.findUserBySocialId(socialId).getId(); - } - @Operation(summary = "알림 목록 조회", description = "알림을 반환한다.") @ApiResponses(value = { @ApiResponse(responseCode = "200", description = "알림 반환 성공", content = @Content(mediaType = "application/json", schema = @Schema(implementation = NotificationDto.class))), @@ -40,7 +35,7 @@ private Long extractUserIdFromToken(String access) { // access 토큰으로부 }) @GetMapping("/notification") public ResponseEntity> getNotification(@RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); List notifications = notificationService.getActiveNotifications(userId); return ResponseEntity.ok(notifications); } @@ -52,7 +47,7 @@ public ResponseEntity> getNotification(@RequestHeader("acc }) @PostMapping("/notification/{notificationId}") public ResponseEntity readNotification(@PathVariable Long notificationId, @RequestHeader("access") String access) { - Long userId = extractUserIdFromToken(access); + Long userId = jwtUtil.getUserId(access); notificationService.markAsRead(notificationId, userId); return ResponseEntity.ok().build(); } diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index a996e1a..220aaa8 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -3,13 +3,13 @@ spring.application.name=balbambalbam spring.servlet.multipart.max-file-size=3MB # prod -#spring.profiles.active=prod +spring.profiles.active=prod # local #spring.profiles.active=local #dev -spring.profiles.active=dev +#spring.profiles.active=dev # log level logging.level.root=info