Skip to content

Commit

Permalink
fix : 비 로그인 시 LikeState 제대로 안뜨는 오류 해결
Browse files Browse the repository at this point in the history
  • Loading branch information
dltjdgh0428 committed Mar 28, 2024
1 parent 52732aa commit 2c1945b
Show file tree
Hide file tree
Showing 5 changed files with 32 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.book_everywhere.pin.dto.PinDto;
import com.book_everywhere.pin.dto.PinWithTagCountRespDto;
import com.book_everywhere.review.dto.ReviewDto;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
Expand All @@ -22,45 +23,50 @@ public class PinController {
private final PinService pinService;
private final ReviewService reviewService;


@Operation(summary = "전체지도조회", description = "조건에 상관없는 전체 지도를 조회합니다.")
@GetMapping("/api/map")
public CMRespDto<?> allPin() {
List<PinDto> result = pinService.전체지도조회();
return new CMRespDto<>(HttpStatus.OK, result,"전체 지도 조회 성공!");
}

@Operation(summary = "핀+핀의 상위 5개 태그를 함께 조회", description = "전체지도와 그에따른 태그 5개를 조회합니다")
@GetMapping("/api/map/tag/count")
public CMRespDto<?> allPinWithTagCount() {
List<PinWithTagCountRespDto> result = pinService.핀의상위5개태그개수와함께조회();
return new CMRespDto<>(HttpStatus.OK, result, "전체 지도 상위 5개 태그와 함께 조회 성공");
}

@Operation(summary = "핀+핀의 상위 5개 태그를 함께 조회 [공유된것]", description = "공유/개인 핀+핀의 상위 5개 태그를 함께 조회합니다.")
@GetMapping("/api/map/tag/count/{isPrivate}")
public CMRespDto<?> allPublicPinWithTagCount(@PathVariable boolean isPrivate) {
List<PinWithTagCountRespDto> result = pinService.공유또는개인핀의상위5개태그개수와함께조회(isPrivate);
return new CMRespDto<>(HttpStatus.OK, result, "공유/개인 지도 상위 5개 태그와 함께 조회 성공");
}

//핀을 눌렀을때 핀에 해당하는 독후감 정보 조회
@Operation(summary = "단일 핀 독후감 조회", description = "핀Id를 통해 단일 핀 조회.")
@GetMapping("/api/pin/{pinId}")
public CMRespDto<?> pinDetails(@PathVariable Long pinId, @AuthenticationPrincipal OAuth2User oAuth2User) {
List<ReviewDto> result = reviewService.단일핀독후감조회((Long) oAuth2User.getAttributes().get("id"),pinId);
public CMRespDto<?> pinDetails(@RequestParam Long socialId,@PathVariable Long pinId) {
List<ReviewDto> result = reviewService.단일핀독후감조회(socialId,pinId);
return new CMRespDto<>(HttpStatus.OK, result,"단일 핀 종속 독후감 조회 성공!");
}

//나만의 지도 기능
@Operation(summary = "단일 나만의 지도 조회", description = "나만의 지도 기능 구현")
@GetMapping("/api/map/{socialId}")
public CMRespDto<?> userMap(@PathVariable Long socialId) {
List<PinDto> result = pinService.나만의지도조회(socialId);
return new CMRespDto<>(HttpStatus.OK, result,"유저 독후감 조회 성공!");
return new CMRespDto<>(HttpStatus.OK, result,"나만의 지도 조회 성공!");
}

//태그String에 대한 pin 추출
@Operation(summary = "태그된 Pin 호출", description = "특정 태그가 있는 핀만 호출합니다")
@GetMapping("/api/pin/tag/{content}")
public CMRespDto<?> taggedPin(@PathVariable String content) {
List<PinDto> result = pinService.태그조회(content);
return new CMRespDto<>(HttpStatus.OK, result,"태그 조회 성공!"); // 이 부분 논의
}

@Operation(summary = "내 서재 독후감 호출", description = "내 모든 독후감을 조회합니다.")
@GetMapping("/api/mypage/review")
public CMRespDto<?> userReview(@RequestParam Long socialId) {
List<ReviewDto> result = reviewService.유저모든독후감조회(socialId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,26 +58,29 @@ public CMRespDto<?> addReview(@RequestBody ReviewRespDto reviewRespDto) {

//조회
//공개 독후감 조회
@Operation(summary = "모든 독후감 조회", description = "조건에 없이 모든 독후감을 조회합니다 return = List<ReviewDto>")
@GetMapping("/api/reviews")
public CMRespDto<?> publicReviews(@RequestParam Long socialId) {
List<ReviewDto> result = reviewService.모든독후감조회(socialId);
return new CMRespDto<>(HttpStatus.OK, result, "전체 공유 독후감 조회");
}

@Operation(summary = "모든 공유 독후감 조회", description = "공유 독후감을 조회합니다 return = List<ReviewDto>")
@GetMapping("/api/review/public")
public CMRespDto<?> findPublicReviews(@RequestParam Long socialId) {
List<ReviewDto> result = reviewService.모든공유독후감조회(socialId);
return new CMRespDto<>(HttpStatus.OK, result, "모든 공유 독후감 조회 완료");
}


@Operation(summary = "단일 책 독후감 조회", description = "단일 책 독후감을 조회합니다 return = List<ReviewDto>")
@GetMapping("/api/detail/{bookId}")
public CMRespDto<?> bookReviews(@RequestParam Long socialId, @PathVariable Long bookId) {
List<ReviewDto> result = reviewService.책에따른모든리뷰(socialId, bookId);
return new CMRespDto<>(HttpStatus.OK, result, "책에 따른 전체 독후감 조회");
}

//수정
@Operation(summary = "단일 독후감 조회", description = "특정 독후감을 조회합니다 return = ReviewDto")
@GetMapping("/api/review/{reviewId}")
public CMRespDto<?> getReview(@RequestParam Long socialId, @PathVariable Long reviewId) {
ReviewDto reviewDto = reviewService.단일독후감조회(socialId, reviewId);
Expand All @@ -101,7 +104,7 @@ public CMRespDto<?> updateReview(@PathVariable Long reviewId,
reviewService.독후감개수검증후핀삭제(prevAddress, reviewRespDto.getSocialId());
return new CMRespDto<>(HttpStatus.OK, null, "독후감 수정 완료");
}

@Operation(summary = "단일 독후감 삭제", description = "특정 독후감을 삭제합니다.")
@DeleteMapping("/api/review/delete/{reviewId}")
public CMRespDto<?> deleteReview(@PathVariable Long reviewId,
@RequestParam Long socialId,
Expand All @@ -115,13 +118,14 @@ public CMRespDto<?> deleteReview(@PathVariable Long reviewId,
}

// 좋아요 구현

@Operation(summary = "좋아요", description = "특정 독후감을 좋아요합니다. 중복불가")
@PostMapping("/api/review/{reviewId}/likes")
public CMRespDto<?> like(@RequestParam Long socialId, @PathVariable Long reviewId) {
likesService.좋아요(socialId, reviewId);
return new CMRespDto<>(HttpStatus.OK, null, "좋아요 등록 완료!");
}

@Operation(summary = "좋아요", description = "특정 독후감의 좋아요를 삭제합니다.")
@DeleteMapping("/api/review/{reviewId}/likes")
public CMRespDto<?> unLike(@RequestParam Long socialId, @PathVariable Long reviewId) {
likesService.좋아요취소(socialId, reviewId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.Optional;

@RequiredArgsConstructor
@Transactional(readOnly = true)
Expand Down Expand Up @@ -123,23 +124,29 @@ public class ReviewServiceImpl implements ReviewService {
//등록된 모든 리뷰 조회
public List<ReviewDto> 모든독후감조회(Long socialId) {
List<Review> init = reviewRepository.findAll();
User user = userRepository.findBySocialId(socialId).orElseThrow();

Optional<User> optionalUser = userRepository.findBySocialId(socialId);

return init.stream().map(review -> {
Long likeCount = likesRepository.countByReviewId(review.getId());
boolean likeState = likesRepository.existsByUserIdAndReviewId(user.getId(), review.getId());
boolean likeState = optionalUser
.map(user -> likesRepository.existsByUserIdAndReviewId(user.getId(), review.getId()))
.orElse(false);
return ReviewDto.toDto(review, likeCount, likeState);
}).toList();
}



public List<ReviewDto> 모든공유독후감조회(Long socialId) {
List<Review> init = reviewRepository.findByIsPrivateOrderByCreatedDateDesc(false);
User user = userRepository.findBySocialId(socialId).orElseThrow();
Optional<User> optionalUser = userRepository.findBySocialId(socialId);

return init.stream().map(review -> {
Long likeCount = likesRepository.countByReviewId(review.getId());
boolean likeState = likesRepository.existsByUserIdAndReviewId(user.getId(), review.getId());
boolean likeState = optionalUser
.map(user -> likesRepository.existsByUserIdAndReviewId(user.getId(), review.getId()))
.orElse(false);
return ReviewDto.toDto(review, likeCount, likeState);
}).toList();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ public class UserTestBuilder {
public static User createDefault() {
return User.builder()
.id(123456L)
.socialId(123456L) // 가짜 socialId 설정
.socialId(123L) // 가짜 socialId 설정
.nickname("testUser") // 가짜 닉네임 설정
.image("default_image.jpg") // 가짜 이미지 경로 설정
.role(Role.ROLE_MEMBER) // 가짜 역할 설정
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public class ReviewRespDtoTestBuilder {

public static ReviewRespDto createDefault(PinRespDto pinRespDto, BookRespDto bookRespDto) {
return new ReviewRespDto(
123456L,
123L,
"Default Review Title",
"Default Author",
true,
Expand Down

0 comments on commit 2c1945b

Please sign in to comment.