Skip to content

Commit 0aeb79a

Browse files
committed
Refactor: 로그인 처리 관련 수정
1 parent 41874dc commit 0aeb79a

File tree

9 files changed

+66
-41
lines changed

9 files changed

+66
-41
lines changed

src/main/java/EatPic/spring/domain/calendar/controller/CalendarController.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
import EatPic.spring.domain.calendar.dto.CalendarDayResponse;
44
import EatPic.spring.domain.calendar.service.CalendarService;
55
import EatPic.spring.domain.card.repository.CardRepository;
6+
import EatPic.spring.domain.user.entity.User;
7+
import EatPic.spring.domain.user.service.UserService;
68
import EatPic.spring.global.common.ApiResponse;
79
import io.swagger.v3.oas.annotations.Operation;
810
import io.swagger.v3.oas.annotations.tags.Tag;
11+
import jakarta.servlet.http.HttpServletRequest;
912
import java.util.List;
1013
import lombok.RequiredArgsConstructor;
1114
import org.springframework.web.bind.annotation.GetMapping;
@@ -20,19 +23,22 @@
2023
public class CalendarController {
2124

2225
private final CalendarService calendarService;
26+
private final UserService userService;
2327

2428

2529
@Operation(summary = "캘린더 화면 데이터 조회", //Operation의 구성요소 중 하나로, API에 대한 한줄요약.
2630
description = "캘린더에서 기록이 있는 날짜에 해당하는 대표이미지를 불러오는 API") //상세설명
2731
@GetMapping
2832
public ApiResponse<List<CalendarDayResponse>> getCalendar(
2933
//@AuthenticationPrincipal CustomUserDetails userDetails,
34+
HttpServletRequest request,
3035
@RequestParam int year,
3136
@RequestParam int month
3237
) {
33-
Long userId = 1L; //Long userId = userDetails.getUser().getId(); //로그인 구현 시 이렇게 바꾸기
38+
User user = userService.getLoginUser(request);
39+
//Long userId = 1L; //Long userId = userDetails.getUser().getId(); //로그인 구현 시 이렇게 바꾸기
3440
//User user = userDetails.getUser(); //아니면 이렇게 해서 객체 자체를 넘기기 (이게 일반적인 방법)
35-
return ApiResponse.onSuccess(calendarService.getCalendar(userId, year, month));
41+
return ApiResponse.onSuccess(calendarService.getCalendar(user, year, month));
3642
}
3743

3844

src/main/java/EatPic/spring/domain/calendar/service/CalendarService.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import EatPic.spring.domain.card.entity.Card;
55
import EatPic.spring.domain.card.entity.Meal;
66
import EatPic.spring.domain.card.repository.CardRepository;
7+
import EatPic.spring.domain.user.entity.User;
78
import java.time.LocalDate;
89
import java.time.LocalDateTime;
910
import java.time.LocalTime;
@@ -24,7 +25,9 @@
2425
public class CalendarService {
2526
private final CardRepository cardRepository;
2627

27-
public List<CalendarDayResponse> getCalendar(Long userId, int year, int month) {
28+
public List<CalendarDayResponse> getCalendar(User user, int year, int month) {
29+
Long userId = user.getId();
30+
2831
// 현재 월과 이전 월 구하기
2932
YearMonth currentMonth = YearMonth.of(year, month);
3033
YearMonth previousMonth = currentMonth.minusMonths(1);

src/main/java/EatPic/spring/domain/card/controller/CardController.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ public class CardController {
4646
@PostMapping(value = "", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
4747
@Operation(summary = "픽카드 생성하기 (픽카드 기록 작성)", description = "픽카드를 생성할 때 호출되는 api")
4848
public ApiResponse<CreateCardResponse> createCard(
49+
HttpServletRequest req,
4950
@RequestParam("request") String requestJson,
5051
@RequestPart(value = "cardImageFile", required = false) MultipartFile cardImageFile) {
5152

@@ -57,12 +58,13 @@ public ApiResponse<CreateCardResponse> createCard(
5758
throw new GeneralException(ErrorStatus.REQUEST_BODY_INVALID);
5859
}
5960

60-
Long userId = 1L;
61+
//Long userId = 1L;
62+
User user = userService.getLoginUser(req);
6163

6264
if (cardImageFile == null || cardImageFile.isEmpty()) {
6365
throw new GeneralException(ErrorStatus.IMAGE_REQUIRED);
6466
}
65-
CardResponse.CreateCardResponse response = cardService.createNewCard(request, userId, cardImageFile);
67+
CardResponse.CreateCardResponse response = cardService.createNewCard(request, user, cardImageFile);
6668
return ApiResponse.onSuccess(response);
6769
}
6870

@@ -115,12 +117,13 @@ public ApiResponse<List<TodayCardResponse>> getTodayCards(
115117
@Operation(summary = "픽카드 수정", description = "카드의 메모, 레시피, 위치 정보 등을 수정합니다.")
116118
@PutMapping("/api/cards/{cardId}")
117119
public ResponseEntity<ApiResponse<CardDetailResponse>> updateCard(
120+
HttpServletRequest req,
118121
@Parameter(description = "수정할 카드 ID", example = "12")
119122
@PathVariable(name = "cardId") Long cardId,
120123
@RequestBody CardUpdateRequest request)
121124
{
122-
Long userId = 1L;
123-
return ResponseEntity.ok(ApiResponse.onSuccess(cardService.updateCard(cardId, userId, request)));
125+
User user = userService.getLoginUser(req);
126+
return ResponseEntity.ok(ApiResponse.onSuccess(cardService.updateCard(cardId, user, request)));
124127
}
125128

126129
@Operation(

src/main/java/EatPic/spring/domain/card/service/CardService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
import java.util.List;
1616

1717
public interface CardService {
18-
CardResponse.CreateCardResponse createNewCard(CardCreateRequest.CreateCardRequest request, Long userId, MultipartFile cardImageFile);
18+
CardResponse.CreateCardResponse createNewCard(CardCreateRequest.CreateCardRequest request, User user, MultipartFile cardImageFile);
1919
CardDetailResponse getCardDetail(Long cardId, Long userId);
2020
CardFeedResponse getCardFeed(Long cardId, Long userId);
2121
void deleteCard(Long cardId, Long userId);
2222
List<TodayCardResponse> getTodayCards(Long userId);
23-
CardDetailResponse updateCard(Long cardId, Long userId, CardUpdateRequest request);
23+
CardDetailResponse updateCard(Long cardId, User user, CardUpdateRequest request);
2424
CardResponse.PagedCardFeedResponseDto getCardFeedByCursor(HttpServletRequest request, Long userId, int size, Long cursor);
2525
List<RecommendCardResponse> getRecommendedCardPreviews(Long userId);
2626
}

src/main/java/EatPic/spring/domain/card/service/CardServiceImpl.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,10 +98,11 @@ private void connectHashtagsToCard(Card card, List<String> hashtags, User user)
9898

9999
@Override
100100
@Transactional
101-
public CardResponse.CreateCardResponse createNewCard(CardCreateRequest.CreateCardRequest request, Long userId, MultipartFile cardImageFile) {
101+
public CardResponse.CreateCardResponse createNewCard(CardCreateRequest.CreateCardRequest request, User user, MultipartFile cardImageFile) {
102102

103+
Long userId = user.getId();
103104
// 아직 유저 관련 처리 안했음
104-
User user = userRepository.findUserById(userId);
105+
//User user = userRepository.findUserById(userId);
105106

106107
// 오늘 날짜 00:00부터 23:59:59까지 범위 계산
107108
LocalDate today = LocalDate.now();
@@ -287,11 +288,11 @@ public List<TodayCardResponse> getTodayCards(Long userId) {
287288

288289
@Override
289290
@Transactional
290-
public CardDetailResponse updateCard(Long cardId, Long userId, CardUpdateRequest request) {
291+
public CardDetailResponse updateCard(Long cardId, User user, CardUpdateRequest request) {
291292
Card card = cardRepository.findById(cardId)
292293
.orElseThrow(() -> new ExceptionHandler(ErrorStatus.CARD_NOT_FOUND));
293294

294-
if (!card.getUser().getId().equals(userId)) {
295+
if (!card.getUser().getId().equals(user.getId())) {
295296
throw new ExceptionHandler(ErrorStatus.CARD_UPDATE_FORBIDDEN);
296297
}
297298

src/main/java/EatPic/spring/domain/notification/controller/NotificationController.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import EatPic.spring.global.common.ApiResponse;
88
import io.swagger.v3.oas.annotations.Operation;
99
import io.swagger.v3.oas.annotations.tags.Tag;
10+
import jakarta.servlet.http.HttpServletRequest;
1011
import java.util.List;
1112
import java.util.Map;
1213
import lombok.RequiredArgsConstructor;
@@ -25,25 +26,34 @@ public class NotificationController {
2526

2627
@GetMapping("/recent")
2728
@Operation(summary = "최근 알림 목록 조회 (7일 이내)", description = "현재 로그인한 사용자의 최근 알림을 조회합니다.")
28-
public ApiResponse<List<RecentNotificationResponse>> getRecentNotifications() {
29-
Long userId = 1L; //Long userId = userDetails.getUser().getId(); //로그인 구현 시 이렇게 바꾸기
29+
public ApiResponse<List<RecentNotificationResponse>> getRecentNotifications(
30+
HttpServletRequest request
31+
) {
32+
User user = userService.getLoginUser(request);
33+
//Long userId = 1L; //Long userId = userDetails.getUser().getId(); //로그인 구현 시 이렇게 바꾸기
3034
//User user = userDetails.getUser(); //아니면 이렇게 해서 객체 자체를 넘기기 (이게 일반적인 방법)
31-
return ApiResponse.onSuccess(notificationService.getRecentNotifications(userId));
35+
return ApiResponse.onSuccess(notificationService.getRecentNotifications(user));
3236
}
3337

3438
@PostMapping("/check")
3539
@Operation(summary = "알림 확인 시간 업데이트", description = "사용자가 알림 화면에 들어가면 마지막 확인 시간을 업데이트합니다.")
36-
public ApiResponse<Void> checkNotifications() {
37-
Long userId = 1L; // 로그인 기능 구현 전 임시 사용자
38-
notificationService.checkNotifications(userId);
40+
public ApiResponse<Void> checkNotifications(
41+
HttpServletRequest request
42+
) {
43+
User user = userService.getLoginUser(request);
44+
//Long userId = 1L; // 로그인 기능 구현 전 임시 사용자
45+
notificationService.checkNotifications(user);
3946
return ApiResponse.onSuccess(null);
4047
}
4148

4249
@GetMapping("/unread-status")
4350
@Operation(summary = "새 알림 여부 확인", description = "최근 알림 생성 시각과 마지막 확인 시각을 비교하여 새 알림 여부를 반환합니다.")
44-
public ApiResponse<Map<String, Boolean>> getUnreadStatus() {
45-
Long userId = 1L; // 로그인 기능 구현 전 임시 사용자
46-
boolean isUnread = notificationService.isUnreadNotification(userId);
51+
public ApiResponse<Map<String, Boolean>> getUnreadStatus(
52+
HttpServletRequest request
53+
) {
54+
User user = userService.getLoginUser(request);
55+
//Long userId = 1L; // 로그인 기능 구현 전 임시 사용자
56+
boolean isUnread = notificationService.isUnreadNotification(user);
4757
return ApiResponse.onSuccess(Map.of("isUnread", isUnread));
4858
}
4959

src/main/java/EatPic/spring/domain/notification/service/NotificationService.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import EatPic.spring.domain.user.repository.UserFollowRepository;
1212
import EatPic.spring.domain.user.repository.UserRepository;
1313
import EatPic.spring.global.common.code.status.ErrorStatus;
14+
import EatPic.spring.global.common.exception.GeneralException;
1415
import EatPic.spring.global.common.exception.handler.ExceptionHandler;
1516
import java.time.LocalDateTime;
1617
import java.util.List;
@@ -27,8 +28,7 @@ public class NotificationService {
2728
private final UserRepository userRepository;
2829

2930

30-
public List<RecentNotificationResponse> getRecentNotifications(Long userId) {
31-
User currentUser = userRepository.findById(userId).orElse(null);
31+
public List<RecentNotificationResponse> getRecentNotifications(User currentUser) {
3232
// 7일 전 기준 시각
3333
LocalDateTime sevenDaysAgo = LocalDateTime.now().minusDays(7);
3434

@@ -62,18 +62,12 @@ private RecentNotificationResponse convertToDto(Notification notification, User
6262
return NotificationConverter.toRecentNotificationResponse(notification, cardImageUrl, isFollowing);
6363
}
6464

65-
public void checkNotifications(Long userId) {
66-
User user = userRepository.findById(userId)
67-
.orElseThrow(() -> new ExceptionHandler(ErrorStatus.USER_NOT_FOUND));
68-
65+
public void checkNotifications(User user) {
6966
user.updateLastNotificationCheckAt(LocalDateTime.now());
7067
userRepository.save(user);
7168
}
7269

73-
public boolean isUnreadNotification(Long userId) {
74-
User user = userRepository.findById(userId)
75-
.orElseThrow(() -> new ExceptionHandler(ErrorStatus.USER_NOT_FOUND));
76-
70+
public boolean isUnreadNotification(User user) {
7771
LocalDateTime lastChecked = user.getLastNotificationCheckAt();
7872
Notification latest = notificationRepository.findTopByReceiverOrderByCreatedAtDesc(user);
7973

src/main/java/EatPic/spring/domain/user/controller/UserBadgeController.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,11 @@
55
import EatPic.spring.domain.user.entity.User;
66
import EatPic.spring.domain.user.repository.UserBadgeRepository;
77
import EatPic.spring.domain.user.service.UserBadgeService;
8+
import EatPic.spring.domain.user.service.UserService;
89
import EatPic.spring.global.common.ApiResponse;
910
import io.swagger.v3.oas.annotations.Operation;
1011
import io.swagger.v3.oas.annotations.tags.Tag;
12+
import jakarta.servlet.http.HttpServletRequest;
1113
import java.util.List;
1214
import lombok.RequiredArgsConstructor;
1315
import org.springframework.web.bind.annotation.GetMapping;
@@ -23,21 +25,27 @@ public class UserBadgeController {
2325

2426
private final UserBadgeRepository userBadgeRepository;
2527
private final UserBadgeService userBadgeService;
28+
private final UserService userService;
2629

2730
@GetMapping("/home")
2831
@Operation(summary = "홈화면 진입 시 유저 뱃지 리스트 이행률순 조회 ", description = "홈화면에서 유저가 보유한 뱃지 리스트를 이행률 기준으로 정렬하여 조회합니다.")
29-
public ApiResponse<List<HomeBadgeResponse>> getUserBadgesForHome() {
30-
Long userId = 1L;
31-
List<HomeBadgeResponse> responses = userBadgeService.getUserBadgesForHome(userId);
32+
public ApiResponse<List<HomeBadgeResponse>> getUserBadgesForHome(
33+
HttpServletRequest request
34+
) {
35+
User user = userService.getLoginUser(request);
36+
//Long userId = 1L;
37+
List<HomeBadgeResponse> responses = userBadgeService.getUserBadgesForHome(user);
3238
return ApiResponse.onSuccess(responses);
3339
}
3440

3541
@Operation(summary = "유저 뱃지 상세 조회", description = "뱃지 팝업에 들어갈 상세 정보를 조회합니다.")
3642
@GetMapping("/my/{userBadgeId}")
3743
public ApiResponse<BadgeDetailResponseDTO> getBadgeDetail(
44+
HttpServletRequest request,
3845
@PathVariable Long userBadgeId) {
39-
Long userId = 1L;
40-
return ApiResponse.onSuccess(userBadgeService.getBadgeDetail(userId, userBadgeId));
46+
User user = userService.getLoginUser(request);
47+
//Long userId = 1L;
48+
return ApiResponse.onSuccess(userBadgeService.getBadgeDetail(user, userBadgeId));
4149
}
4250

4351
}

src/main/java/EatPic/spring/domain/user/service/UserBadgeService.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ public class UserBadgeService {
3434
private final ReactionRepository reactionRepository;
3535

3636
// 홈화면 뱃지 리스트 조회
37-
public List<HomeBadgeResponse> getUserBadgesForHome(Long userId) {
38-
User user = userRepository.findUserById(userId); // 로그인 적용할 때 바꾸기!! 인자 User로 받기!
37+
@Transactional
38+
public List<HomeBadgeResponse> getUserBadgesForHome(User user) {
3939
List<UserBadge> userBadges = userBadgeRepository.findByUser(user);
4040
return UserBadgeConverter.toHomeBadgeDTOList(userBadges);
4141
}
4242

43-
public BadgeDetailResponseDTO getBadgeDetail(Long userId, Long userBadgeId) {
44-
User user = userRepository.findUserById(userId);
43+
@Transactional
44+
public BadgeDetailResponseDTO getBadgeDetail(User user, Long userBadgeId) {
4545
UserBadge userBadge = userBadgeRepository.findByUser_IdAndUserBadgeId(user.getId(), userBadgeId)
4646
.orElseThrow(() -> new ExceptionHandler(ErrorStatus._BAD_REQUEST));
4747
return UserBadgeConverter.toBadgeDetailResponse(userBadge);

0 commit comments

Comments
 (0)