Skip to content

Commit

Permalink
refacator: 태그 이름만 반환하는게 아닌 태그 정보 전체를 반환하도록 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
70825 committed Sep 13, 2023
1 parent 0fb3260 commit 76d449f
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 109 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import com.funeat.review.dto.RankingReviewsResponse;
import com.funeat.review.dto.ReviewCreateRequest;
import com.funeat.review.dto.ReviewFavoriteRequest;
import com.funeat.review.dto.SortingReviewDtoFuture;
import com.funeat.review.dto.SortingReviewDtoWithoutTag;
import com.funeat.review.dto.SortingReviewResponsesFuture;
import com.funeat.review.dto.SortingReviewRequestFuture;
Expand All @@ -34,6 +33,7 @@
import com.funeat.review.persistence.ReviewRepository;
import com.funeat.review.persistence.ReviewTagRepository;
import com.funeat.tag.domain.Tag;
import com.funeat.tag.dto.TagDto;
import com.funeat.tag.persistence.TagRepository;
import java.util.List;
import java.util.Optional;
Expand All @@ -42,7 +42,6 @@
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
Expand Down Expand Up @@ -185,19 +184,19 @@ public MemberReviewsResponse findReviewByMember(final Long memberId, final Pagea
public SortingReviewResponsesFuture sortingReviewsFuture(final Long memberId,
final Long productId,
final SortingReviewRequestFuture request) {
final Member member = memberRepository.findById(memberId)
final Member findMember = memberRepository.findById(memberId)
.orElseThrow(() -> new MemberNotFoundException(MEMBER_NOT_FOUND, memberId));
final Product product = productRepository.findById(productId)
final Product findProduct = productRepository.findById(productId)
.orElseThrow(() -> new ProductNotFoundException(PRODUCT_NOT_FOUND, productId));

final Long lastReviewId = request.getLastReviewId();
final Pageable pageable = request.getPageable();

final List<SortingReviewDtoWithoutTag> sortingReviews
= reviewRepository.findSortingReviews(product, lastReviewId, pageable);
= reviewRepository.findSortingReviews(findProduct, lastReviewId, pageable);

final List<SortingReviewDtoFuture> sortingReviewDtoFutures = sortingReviews.stream()
.map(sortingReviewDtoWithoutTag -> SortingReviewDtoFuture.toDto(sortingReviewDtoWithoutTag, tagRepository.findTagNamesByReview(sortingReviewDtoWithoutTag.getId())))
final List<SortingReviewDto> sortingReviewDtoFutures = sortingReviews.stream()
.map(review -> SortingReviewDto.toDto(review, tagRepository.findTagsByReviewId(review.getId())))
.collect(Collectors.toList());

final Boolean hasNextReview = checkLastReview(pageable.getPageSize(), sortingReviews.size());
Expand Down
19 changes: 19 additions & 0 deletions backend/src/main/java/com/funeat/review/dto/SortingReviewDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.funeat.member.domain.favorite.ReviewFavorite;
import com.funeat.review.domain.Review;
import com.funeat.review.domain.ReviewTag;
import com.funeat.tag.domain.Tag;
import com.funeat.tag.dto.TagDto;
import java.time.LocalDateTime;
import java.util.List;
Expand Down Expand Up @@ -40,6 +41,24 @@ public SortingReviewDto(final Long id, final String userName, final String profi
this.createdAt = createdAt;
}

public static SortingReviewDto toDto(final SortingReviewDtoWithoutTag sortingReviewDtoWithoutTag, final List<Tag> tags) {
final List<TagDto> tagDtos = tags.stream()
.map(TagDto::toDto)
.collect(Collectors.toList());

return new SortingReviewDto(sortingReviewDtoWithoutTag.getId(),
sortingReviewDtoWithoutTag.getUserName(),
sortingReviewDtoWithoutTag.getProfileImage(),
sortingReviewDtoWithoutTag.getImage(),
sortingReviewDtoWithoutTag.getRating(),
tagDtos,
sortingReviewDtoWithoutTag.getContent(),
sortingReviewDtoWithoutTag.isRebuy(),
sortingReviewDtoWithoutTag.getFavoriteCount(),
sortingReviewDtoWithoutTag.isFavorite(),
sortingReviewDtoWithoutTag.getCreatedAt());
}

public static SortingReviewDto toDto(final Review review, final Member member) {
return new SortingReviewDto(
review.getId(),
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,20 @@

public class SortingReviewResponsesFuture {

private final List<SortingReviewDtoFuture> reviews;
private final List<SortingReviewDto> reviews;
private final Boolean hasNextReview;

public SortingReviewResponsesFuture(final List<SortingReviewDtoFuture> reviews, final Boolean hasNextReview) {
public SortingReviewResponsesFuture(final List<SortingReviewDto> reviews, final Boolean hasNextReview) {
this.reviews = reviews;
this.hasNextReview = hasNextReview;
}

public static SortingReviewResponsesFuture toResponse(final List<SortingReviewDtoFuture> reviewDtos,
public static SortingReviewResponsesFuture toResponse(final List<SortingReviewDto> reviewDtos,
final Boolean hasNextItem) {
return new SortingReviewResponsesFuture(reviewDtos, hasNextItem);
}

public List<SortingReviewDtoFuture> getReviews() {
public List<SortingReviewDto> getReviews() {
return reviews;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,10 @@ public interface TagRepository extends JpaRepository<Tag, Long> {

List<Tag> findTagsByTagType(final TagType tagType);

@Query("SELECT t.name "
@Query("SELECT t "
+ "FROM ReviewTag rt "
+ "JOIN rt.tag t "
+ "WHERE rt.review.id = :reviewId")
List<String> findTagNamesByReview(@Param("reviewId") final Long reviewId);
List<Tag> findTagsByReviewId(@Param("reviewId") final Long reviewId);

}

0 comments on commit 76d449f

Please sign in to comment.