Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import EatPic.spring.global.common.ApiResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

Expand All @@ -26,16 +27,18 @@ public class BookmarkController {
summary = "카드 저장",
description = "해당 카드를 저장합니다.")
@PostMapping("/{cardId}")
public ApiResponse<BookmarkResponseDTO.BookmarkResponseDto> saveBookmark(@PathVariable("cardId") Long cardId) {
return ApiResponse.onSuccess(bookmarkService.saveBookmark(cardId));
public ApiResponse<BookmarkResponseDTO.BookmarkResponseDto> saveBookmark(HttpServletRequest request,
@PathVariable("cardId") Long cardId) {
return ApiResponse.onSuccess(bookmarkService.saveBookmark(request,cardId));
}

@Operation(
summary = "카드 저장 취소",
description = "해당 카드의 저장을 취소합니다.")
@DeleteMapping("/{cardId}")
public ApiResponse<BookmarkResponseDTO.BookmarkResponseDto> deleteBookmark(@PathVariable("cardId") Long cardId) {
return ApiResponse.onSuccess(bookmarkService.deleteBookmark(cardId));
public ApiResponse<BookmarkResponseDTO.BookmarkResponseDto> deleteBookmark(HttpServletRequest request,
@PathVariable("cardId") Long cardId) {
return ApiResponse.onSuccess(bookmarkService.deleteBookmark(request, cardId));
}

}
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package EatPic.spring.domain.bookmark.service;

import EatPic.spring.domain.bookmark.dto.BookmarkResponseDTO;
import jakarta.servlet.http.HttpServletRequest;

public interface BookmarkService {
BookmarkResponseDTO.BookmarkResponseDto saveBookmark(Long cardId);
BookmarkResponseDTO.BookmarkResponseDto deleteBookmark(Long cardId);
BookmarkResponseDTO.BookmarkResponseDto saveBookmark(HttpServletRequest request, Long cardId);
BookmarkResponseDTO.BookmarkResponseDto deleteBookmark(HttpServletRequest request,Long cardId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,11 @@
import EatPic.spring.domain.user.converter.UserConverter;
import EatPic.spring.domain.user.entity.User;
import EatPic.spring.domain.user.repository.UserRepository;
import EatPic.spring.domain.user.service.UserService;
import EatPic.spring.global.common.code.status.ErrorStatus;
import EatPic.spring.global.common.exception.GeneralException;
import io.swagger.v3.oas.annotations.tags.Tags;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.transaction.Transactional;
import lombok.NoArgsConstructor;
import lombok.RequiredArgsConstructor;
Expand All @@ -26,13 +28,13 @@
@Transactional
public class BookmarkServiceImpl implements BookmarkService{
private final BookmarkRepository bookmarkRepository;
private final UserRepository userRepository;
private final CardRepository cardRepository;
private final UserService userService;


@Override
public BookmarkResponseDTO.BookmarkResponseDto saveBookmark(Long cardId) {
User user = userRepository.findUserById(1L);
public BookmarkResponseDTO.BookmarkResponseDto saveBookmark(HttpServletRequest request, Long cardId) {
User user = userService.getLoginUser(request);
Card card = cardRepository.findById(cardId).orElseThrow(()-> new GeneralException(CARD_NOT_FOUND));

Bookmark bookmark = Bookmark.builder()
Expand All @@ -48,8 +50,8 @@ public BookmarkResponseDTO.BookmarkResponseDto saveBookmark(Long cardId) {
}

@Override
public BookmarkResponseDTO.BookmarkResponseDto deleteBookmark(Long cardId) {
User user = userRepository.findUserById(1L);
public BookmarkResponseDTO.BookmarkResponseDto deleteBookmark(HttpServletRequest request,Long cardId) {
User user = userService.getLoginUser(request);
Card card = cardRepository.findById(cardId).orElseThrow(()-> new GeneralException(CARD_NOT_FOUND));

Bookmark bookmark = bookmarkRepository.findById(new BookmarkId(1L,cardId))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,10 +129,11 @@ public ResponseEntity<ApiResponse<CardDetailResponse>> updateCard(
summary = "피드 조회",
description = "특정 사용자(null이면 전체 사용자)의 최근 7일 동안의 피드를 조회합니다.(전체, 본인의 경우 전체 피드를 조회합니다)")
@GetMapping("/feeds")
public ApiResponse<CardResponse.PagedCardFeedResponseDto> getFeeds(@RequestParam(required = false) Long userId,
public ApiResponse<CardResponse.PagedCardFeedResponseDto> getFeeds(HttpServletRequest request,
@RequestParam(required = false) Long userId,
@RequestParam(required = false) Long cursor,
@RequestParam(defaultValue = "15") int size) {
return ApiResponse.onSuccess(cardService.getCardFeedByCursor(userId,size,cursor));
return ApiResponse.onSuccess(cardService.getCardFeedByCursor(request,userId,size,cursor));
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import EatPic.spring.domain.card.dto.response.CardResponse.RecommendCardResponse;
import EatPic.spring.domain.card.dto.response.CardResponse.TodayCardResponse;
import EatPic.spring.domain.user.entity.User;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.multipart.MultipartFile;


Expand All @@ -20,6 +21,6 @@ public interface CardService {
void deleteCard(Long cardId, Long userId);
List<TodayCardResponse> getTodayCards(Long userId);
CardDetailResponse updateCard(Long cardId, Long userId, CardUpdateRequest request);
CardResponse.PagedCardFeedResponseDto getCardFeedByCursor(Long userId, int size, Long cursor);
CardResponse.PagedCardFeedResponseDto getCardFeedByCursor(HttpServletRequest request, Long userId, int size, Long cursor);
List<RecommendCardResponse> getRecommendedCardPreviews();
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import EatPic.spring.domain.user.entity.User;
import EatPic.spring.domain.user.repository.UserRepository;
import EatPic.spring.domain.user.service.UserBadgeService;
import EatPic.spring.domain.user.service.UserService;
import EatPic.spring.global.aws.s3.AmazonS3Manager;
import EatPic.spring.domain.user.service.UserBadgeService;
import EatPic.spring.global.common.code.status.ErrorStatus;
Expand All @@ -36,6 +37,8 @@
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;

import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.domain.PageRequest;
Expand Down Expand Up @@ -64,6 +67,7 @@ public class CardServiceImpl implements CardService {
private final BookmarkRepository bookmarkRepository;
private final UserBadgeService userBadgeService;
private final HashtagRepository hashtagRepository;
private final UserService userService;

private void connectHashtagsToCard(Card card, List<String> hashtags, User user) {
if (hashtags == null || hashtags.isEmpty()) return;
Expand Down Expand Up @@ -306,7 +310,8 @@ public CardDetailResponse updateCard(Long cardId, Long userId, CardUpdateRequest

@Override
@Transactional(readOnly = true)
public CardResponse.PagedCardFeedResponseDto getCardFeedByCursor(Long userId, int size, Long cursor) {
public CardResponse.PagedCardFeedResponseDto getCardFeedByCursor(HttpServletRequest request, Long userId, int size, Long cursor) {
User me = userService.getLoginUser(request);

Slice<Card> cardSlice;
Pageable pageable = PageRequest.of(0, size);
Expand All @@ -316,7 +321,7 @@ public CardResponse.PagedCardFeedResponseDto getCardFeedByCursor(Long userId, in
} else {
cardSlice = cardRepository.findByIsDeletedFalseAndIsSharedTrueAndIdLessThanOrderByIdDesc(cursor, pageable);
}
}else if(userId == 1L){ // 내 피드 조회 todo: 로그인 유저로
}else if(userId.equals(me.getId())){ // 내 피드 조회
// 전체 기록
if(cursor == null){
cardSlice = cardRepository.findByIsDeletedFalseAndUserIdOrderByIdDesc(userId,pageable);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import EatPic.spring.global.common.ApiResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
Expand All @@ -25,9 +26,10 @@ public class CommentRestController {
summary = "카드 댓글 작성",
description = "parent_comment_id가 null이면 댓글, non-null이면 답글 입니다.")
@PostMapping("/{cardId}")
public ApiResponse<CommentResponseDTO.WriteCommentResponseDTO> writeComment(@PathVariable("cardId") Long cardId,
public ApiResponse<CommentResponseDTO.WriteCommentResponseDTO> writeComment(HttpServletRequest request,
@PathVariable("cardId") Long cardId,
@Valid @RequestBody CommentRequestDTO.WriteCommentDto requestDto) {
Comment comment = commentService.writeComment(requestDto,cardId);
Comment comment = commentService.writeComment(request,requestDto,cardId);

return ApiResponse.onSuccess(CommentConverter.CommentToWriteCommentResponseDTO(comment));
}
Expand Down Expand Up @@ -58,9 +60,9 @@ public ApiResponse<CommentResponseDTO.commentListDTO> getReplies(@PathVariable("
summary = "카드 댓글 삭제",
description = "댓글이면 답글까지 전체 삭제, 답글이면 해당 답글만 삭제합니다.")
@DeleteMapping("/{commentId}")
public ApiResponse<CommentResponseDTO.DeleteCommentResponseDTO> deleteComment(@PathVariable("cardId") Long cardId,
public ApiResponse<CommentResponseDTO.DeleteCommentResponseDTO> deleteComment(HttpServletRequest request,
@PathVariable("commentId") Long commentId) {

return ApiResponse.onSuccess(commentService.deleteComments(commentId));
return ApiResponse.onSuccess(commentService.deleteComments(request,commentId));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,13 @@
import EatPic.spring.domain.comment.dto.CommentRequestDTO;
import EatPic.spring.domain.comment.dto.CommentResponseDTO;
import EatPic.spring.domain.comment.entity.Comment;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

public interface CommentService {
Comment writeComment(CommentRequestDTO.WriteCommentDto commentDto, Long cardId);
Comment writeComment(HttpServletRequest request, CommentRequestDTO.WriteCommentDto commentDto, Long cardId);
CommentResponseDTO.commentListDTO getComments(Long cardId, int size, Long cursor);
CommentResponseDTO.commentListDTO getReplies(Long commentId, int size, Long cursor);
CommentResponseDTO.DeleteCommentResponseDTO deleteComments(Long commentId);
CommentResponseDTO.DeleteCommentResponseDTO deleteComments(HttpServletRequest request,Long commentId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,11 @@
import EatPic.spring.domain.comment.repository.CommentRepository;
import EatPic.spring.domain.user.entity.User;
import EatPic.spring.domain.user.repository.UserRepository;
import EatPic.spring.domain.user.service.UserService;
import EatPic.spring.global.common.code.status.ErrorStatus;
import EatPic.spring.global.common.exception.GeneralException;
import EatPic.spring.global.common.exception.handler.ExceptionHandler;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
Expand All @@ -31,11 +34,12 @@ public class CommentServiceImpl implements CommentService {
private final CardRepository cardRepository;
private final UserRepository userRepository;
private final CommentRepository commentRepository;
private final UserService userService;

@Override
public Comment writeComment(CommentRequestDTO.WriteCommentDto writeCommentDto, Long cardId) {
public Comment writeComment(HttpServletRequest request, CommentRequestDTO.WriteCommentDto writeCommentDto, Long cardId) {
// 작성자
User user = userRepository.findUserById(1L);
User user = userService.getLoginUser(request);
// 카드(피드)
Card card = cardRepository.findById(cardId)
.orElseThrow(() -> new ExceptionHandler(CARD_NOT_FOUND));
Expand Down Expand Up @@ -82,10 +86,14 @@ public CommentResponseDTO.commentListDTO getReplies(Long commentId, int size, Lo
}

@Override
public CommentResponseDTO.DeleteCommentResponseDTO deleteComments(Long commentId) {
public CommentResponseDTO.DeleteCommentResponseDTO deleteComments(HttpServletRequest request,Long commentId) {
User user = userService.getLoginUser(request);

Comment comment = commentRepository.findById(commentId)
.orElseThrow(()->new GeneralException(COMMENT_NOT_FOUND));
if(!comment.getUser().getId().equals(user.getId())){ // 자신이 작성한 댓글만 삭제 가능
throw new ExceptionHandler(_FORBIDDEN);
}

List<Comment> childComments = commentRepository.findAllByParentComment(comment);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import EatPic.spring.global.common.ApiResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
Expand All @@ -22,8 +23,8 @@ public class GreetingController {
@Operation(summary = "홈화면 인사말 조회",
description = "홈화면에 접근할 때, 요청되는 API")
@GetMapping
public ApiResponse<GreetingResponse> getGreeting() {
GreetingResponse response = greetingService.getGreeting();
public ApiResponse<GreetingResponse> getGreeting(HttpServletRequest request) {
GreetingResponse response = greetingService.getGreeting(request);
return ApiResponse.onSuccess(response);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import EatPic.spring.domain.user.entity.User;
import EatPic.spring.domain.user.repository.UserRepository;
import java.time.LocalTime;

import EatPic.spring.domain.user.service.UserService;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -17,15 +20,12 @@ public class GreetingService {

private final GreetingMessageRepository greetingMessageRepository;
private final UserRepository userRepository;
private final UserService userService;

@Transactional
public GreetingResponse getGreeting() {
// 임시 사용자 (로그인 구현 전)
Long userId = 1L;

public GreetingResponse getGreeting(HttpServletRequest request) {
// 사용자 조회
User user = userRepository.findById(userId)
.orElseThrow(() -> new RuntimeException("User not found"));
User user = userService.getLoginUser(request);

// 현재 시간대 계산
TimeType timeType = getCurrentTimeType();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import EatPic.spring.global.common.ApiResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

Expand All @@ -24,21 +25,23 @@ public class ReactionRestController {
summary = "카드 반응 작성/수정/삭제",
description = "카드에 반응을 작성합니다. 기존에 작성한 반응이 존재하고 같은 반응을 요청하면 해당 반응이 삭제됩니다")
@PostMapping("/{cardId}/{reactionType}")
public ApiResponse<ReactionResponseDTO.ReactionHandleResponseDto> handleReaction(@PathVariable("cardId") Long cardId,
public ApiResponse<ReactionResponseDTO.ReactionHandleResponseDto> handleReaction(HttpServletRequest request,
@PathVariable("cardId") Long cardId,
@PathVariable("reactionType") ReactionType reactionType) {
return ApiResponse.onSuccess(reactionService.handleReaction(cardId,reactionType));
return ApiResponse.onSuccess(reactionService.handleReaction(request,cardId,reactionType));
}

@Operation(
summary = "해당 카드에 작성된 반응 별 유저정보",
description = "reactionType에 따라 반응을 작성한 유저 리스트를 반환합니다")
@GetMapping("/{cardId}/users")
public ApiResponse<ReactionResponseDTO.CardReactionUserListDto> CardReactionUsersList(@PathVariable("cardId") Long cardId,
public ApiResponse<ReactionResponseDTO.CardReactionUserListDto> CardReactionUsersList(HttpServletRequest request,
@PathVariable("cardId") Long cardId,
@RequestParam("reactionType") ReactionType reactionType,
@RequestParam(defaultValue = "1") int page,
@RequestParam(defaultValue = "15") int size) {

return ApiResponse.onSuccess(reactionService.getCardUsersByReactionType(cardId, reactionType, page-1, size));
return ApiResponse.onSuccess(reactionService.getCardUsersByReactionType(request,cardId, reactionType, page-1, size));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
import EatPic.spring.domain.reaction.dto.ReactionResponseDTO;
import EatPic.spring.domain.reaction.entity.Reaction;
import EatPic.spring.domain.reaction.entity.ReactionType;
import jakarta.servlet.http.HttpServletRequest;

import java.net.http.HttpRequest;

public interface ReactionService {
ReactionResponseDTO.ReactionHandleResponseDto handleReaction(Long cardId, ReactionType reactionType);
ReactionResponseDTO.CardReactionUserListDto getCardUsersByReactionType(Long cardId, ReactionType reactionType, Integer page, Integer size);
ReactionResponseDTO.ReactionHandleResponseDto handleReaction(HttpServletRequest request, Long cardId, ReactionType reactionType);
ReactionResponseDTO.CardReactionUserListDto getCardUsersByReactionType(HttpServletRequest request,Long cardId, ReactionType reactionType, Integer page, Integer size);
}
Loading
Loading