Skip to content

Commit

Permalink
Feat: 한줄요약 리스트 응답 시 자세한 정보가 아닌 간략한 정보를 응답하는 부분 수정 (#150)
Browse files Browse the repository at this point in the history
* #143 - feat: 한줄요약 응답을 자세하게 하지 않고 있던 부분 수정

* #143 - feat: 한줄요약 단건 응답에 Status 추가
  • Loading branch information
morenow98 authored Feb 19, 2024
1 parent a08cfd8 commit f22e678
Show file tree
Hide file tree
Showing 8 changed files with 90 additions and 30 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@
import cotato.bookitlist.review.dto.request.ReviewRegisterRequest;
import cotato.bookitlist.review.dto.request.ReviewUpdateRequest;
import cotato.bookitlist.review.dto.response.ReviewCountResponse;
import cotato.bookitlist.review.dto.response.ReviewDetailResponse;
import cotato.bookitlist.review.dto.response.ReviewListResponse;
import cotato.bookitlist.review.dto.response.ReviewResponse;
import cotato.bookitlist.review.service.ReviewFacade;
import cotato.bookitlist.review.service.ReviewService;
import jakarta.servlet.http.Cookie;
Expand Down Expand Up @@ -63,17 +63,17 @@ public ResponseEntity<Void> updateReview(
}

@GetMapping("/{review-id}")
public ResponseEntity<ReviewResponse> getReview(
public ResponseEntity<ReviewDetailResponse> getReview(
HttpServletRequest request,
HttpServletResponse response,
@PathVariable("review-id") Long reviewId,
@AuthenticationPrincipal AuthDetails details
) {
ResponseEntity<ReviewResponse> responseEntity;
ResponseEntity<ReviewDetailResponse> responseEntity;
if (details == null) {
responseEntity = ResponseEntity.ok(ReviewResponse.from(reviewService.getReview(reviewId, DEFAULT_USER_ID), DEFAULT_USER_ID));
responseEntity = ResponseEntity.ok(ReviewDetailResponse.from(reviewService.getReview(reviewId, DEFAULT_USER_ID), DEFAULT_USER_ID));
} else {
responseEntity = ResponseEntity.ok(ReviewResponse.from(reviewService.getReview(reviewId, details.getId()), details.getId()));
responseEntity = ResponseEntity.ok(ReviewDetailResponse.from(reviewService.getReview(reviewId, details.getId()), details.getId()));
}

handleReviewViewCount(request, response, reviewId);
Expand All @@ -82,9 +82,13 @@ public ResponseEntity<ReviewResponse> getReview(

@GetMapping("/all")
public ResponseEntity<ReviewListResponse> getAllReview(
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable
@PageableDefault(sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable,
@AuthenticationPrincipal AuthDetails details
) {
return ResponseEntity.ok(reviewService.getAllReview(pageable));
if (details == null) {
return ResponseEntity.ok(reviewService.getAllReview(pageable, DEFAULT_USER_ID));
}
return ResponseEntity.ok(reviewService.getAllReview(pageable, details.getId()));
}

@GetMapping
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package cotato.bookitlist.review.dto;

import cotato.bookitlist.review.domain.ReviewStatus;

import java.time.LocalDateTime;

public record ReviewDetailDto(
Expand All @@ -11,6 +13,7 @@ public record ReviewDetailDto(
int viewCount,
LocalDateTime createdAt,
LocalDateTime modifiedAt,
boolean liked
boolean liked,
ReviewStatus reviewStatus
) {
}
7 changes: 5 additions & 2 deletions src/main/java/cotato/bookitlist/review/dto/ReviewDto.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package cotato.bookitlist.review.dto;

import cotato.bookitlist.review.domain.ReviewStatus;
import cotato.bookitlist.review.domain.entity.Review;

public record ReviewDto(
Expand All @@ -9,7 +10,8 @@ public record ReviewDto(
String content,
int likeCount,
int viewCount,
boolean liked
boolean liked,
ReviewStatus reviewStatus
) {
public static ReviewDto from(Review entity) {
return new ReviewDto(
Expand All @@ -19,7 +21,8 @@ public static ReviewDto from(Review entity) {
entity.getContent(),
entity.getLikeCount(),
entity.getViewCount(),
false
false,
entity.getStatus()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package cotato.bookitlist.review.dto.response;

import cotato.bookitlist.review.domain.ReviewStatus;
import cotato.bookitlist.review.dto.ReviewDetailDto;

import java.time.LocalDateTime;

public record ReviewDetailResponse(
Long reviewId,
Long memberId,
Long bookId,
String content,
int likeCount,
int viewCount,
LocalDateTime createdAt,
LocalDateTime modifiedAt,
boolean liked,
boolean isMine,
ReviewStatus reviewStatus
) {
public static ReviewDetailResponse from(ReviewDetailDto dto, Long memberId) {
return new ReviewDetailResponse(
dto.reviewId(),
dto.memberId(),
dto.bookId(),
dto.content(),
dto.likeCount(),
dto.viewCount(),
dto.createdAt(),
dto.modifiedAt(),
dto.liked(),
dto.memberId().equals(memberId),
dto.reviewStatus()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,25 +11,25 @@ public record ReviewListResponse(
int totalPages,
int startIndex,
int itemsPerPage,
List<ReviewDto> reviewList
List<ReviewResponse> reviewList
) {
public static ReviewListResponse from(Page<Review> page) {
public static ReviewListResponse from(Page<Review> page, Long memberId) {
return new ReviewListResponse(
(int) page.getTotalElements(),
page.getTotalPages(),
page.getNumber(),
page.getSize(),
page.stream().map(ReviewDto::from).toList()
page.stream().map(r -> ReviewResponse.from(r, memberId)).toList()
);
}

public static ReviewListResponse fromDto(Page<ReviewDto> page) {
public static ReviewListResponse fromDto(Page<ReviewDto> page, Long memberId) {
return new ReviewListResponse(
(int) page.getTotalElements(),
page.getTotalPages(),
page.getNumber(),
page.getSize(),
page.toList()
page.stream().map(r -> ReviewResponse.from(r, memberId)).toList()
);
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package cotato.bookitlist.review.dto.response;

import cotato.bookitlist.review.dto.ReviewDetailDto;

import java.time.LocalDateTime;
import cotato.bookitlist.review.domain.ReviewStatus;
import cotato.bookitlist.review.domain.entity.Review;
import cotato.bookitlist.review.dto.ReviewDto;

public record ReviewResponse(
Long reviewId,
Expand All @@ -11,23 +11,35 @@ public record ReviewResponse(
String content,
int likeCount,
int viewCount,
LocalDateTime createdAt,
LocalDateTime modifiedAt,
boolean liked,
boolean isMine
boolean isMine,
ReviewStatus status
) {
public static ReviewResponse from(ReviewDetailDto dto, Long memberId) {
public static ReviewResponse from(Review entity, Long memberId) {
return new ReviewResponse(
entity.getId(),
entity.getMember().getId(),
entity.getBook().getId(),
entity.getContent(),
entity.getLikeCount(),
entity.getViewCount(),
false,
entity.getMember().getId().equals(memberId),
entity.getStatus()
);
}

public static ReviewResponse from(ReviewDto dto, Long memberId) {
return new ReviewResponse(
dto.reviewId(),
dto.memberId(),
dto.bookId(),
dto.content(),
dto.likeCount(),
dto.viewCount(),
dto.createdAt(),
dto.modifiedAt(),
dto.liked(),
dto.memberId().equals(memberId)
dto.memberId().equals(memberId),
dto.reviewStatus()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ public Page<ReviewDto> findPublicReviewWithLikedByIsbn13(String isbn13, Long mem
.when(isLikedByMember(memberId, review.id))
.then(true)
.otherwise(false)
.as("liked")
.as("liked"),
review.status
)
)
.from(review)
Expand Down Expand Up @@ -81,7 +82,8 @@ public Optional<ReviewDetailDto> findPublicReviewDetailByReviewId(Long reviewId,
.when(isLikedByMember(memberId, review.id))
.then(true)
.otherwise(false)
.as("liked")
.as("liked"),
review.status
)
)
.from(review)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,13 +57,13 @@ public ReviewDetailDto getReview(Long reviewId, Long memberId) {
}

@Transactional(readOnly = true)
public ReviewListResponse getAllReview(Pageable pageable) {
return ReviewListResponse.from(reviewRepository.findPublicReviewAll(pageable));
public ReviewListResponse getAllReview(Pageable pageable, Long memberId) {
return ReviewListResponse.from(reviewRepository.findPublicReviewAll(pageable), memberId);
}

@Transactional(readOnly = true)
public ReviewListResponse searchReview(String isbn13, Long memberId, Pageable pageable) {
return ReviewListResponse.fromDto(reviewRepository.findPublicReviewWithLikedByIsbn13(isbn13, memberId, pageable));
return ReviewListResponse.fromDto(reviewRepository.findPublicReviewWithLikedByIsbn13(isbn13, memberId, pageable), memberId);
}

@Transactional(readOnly = true)
Expand Down

0 comments on commit f22e678

Please sign in to comment.