diff --git a/src/main/java/MARKETFUBY/Product/controller/ProductController.java b/src/main/java/MARKETFUBY/Product/controller/ProductController.java index f8e64c9..e695cde 100644 --- a/src/main/java/MARKETFUBY/Product/controller/ProductController.java +++ b/src/main/java/MARKETFUBY/Product/controller/ProductController.java @@ -4,6 +4,7 @@ import MARKETFUBY.Member.service.MemberService; import MARKETFUBY.Product.domain.Product; import MARKETFUBY.Product.dto.*; +import MARKETFUBY.Review.service.ReviewService; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; @@ -15,6 +16,7 @@ public class ProductController { private final ProductService productService; private final MemberService memberService; + private final ReviewService reviewService; @GetMapping(value = "/main") @ResponseStatus(value = HttpStatus.OK) @@ -84,4 +86,12 @@ public LikeProductListResponseDto getLikeProductList(@RequestParam Long memberId LikeProductListResponseDto likeProductListDto = productService.getLikeProductListDto(member); return likeProductListDto; } + + @GetMapping("mypage/reviewhelp/list") + @ResponseStatus(value = HttpStatus.OK) + public HelpReviewListResponseDto getHelpReviewList(@RequestParam Long memberId){ + Member member = memberService.findMemberById(memberId); + HelpReviewListResponseDto helpReviewListDto = reviewService.getHelpReviewListDto(member); + return helpReviewListDto; + } } diff --git a/src/main/java/MARKETFUBY/Product/dto/HelpReviewDto.java b/src/main/java/MARKETFUBY/Product/dto/HelpReviewDto.java new file mode 100644 index 0000000..271a82e --- /dev/null +++ b/src/main/java/MARKETFUBY/Product/dto/HelpReviewDto.java @@ -0,0 +1,29 @@ +package MARKETFUBY.Product.dto; + +import MARKETFUBY.Review.domain.Review; +import lombok.*; + +import java.time.LocalDate; + +@Getter +@Setter +@Builder +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class HelpReviewDto { + private String name; + private String level; + private String brand; + private String title; + private String content; + private LocalDate date; + + public static HelpReviewDto from(Review review){ + return HelpReviewDto.builder() + .name(review.getWriter().getName()) + .level(review.getWriter().getLevel()) + .brand(review.getProduct().getTitle()) + .content(review.getContent()) + .date(review.getCreatedAt().toLocalDate()) + .build(); + } +} diff --git a/src/main/java/MARKETFUBY/Product/dto/HelpReviewListResponseDto.java b/src/main/java/MARKETFUBY/Product/dto/HelpReviewListResponseDto.java new file mode 100644 index 0000000..7e39fa7 --- /dev/null +++ b/src/main/java/MARKETFUBY/Product/dto/HelpReviewListResponseDto.java @@ -0,0 +1,20 @@ +package MARKETFUBY.Product.dto; + +import lombok.Builder; +import lombok.Getter; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +public class HelpReviewListResponseDto { + private Integer helpReviewsNum; + private List helpReviews; + + @Builder + public HelpReviewListResponseDto(Integer helpReviewsNum, List helpReviews){ + this.helpReviewsNum = helpReviewsNum; + this.helpReviews = helpReviews; + } +} diff --git a/src/main/java/MARKETFUBY/Review/service/ReviewService.java b/src/main/java/MARKETFUBY/Review/service/ReviewService.java index ade9ff4..8a5ba1b 100644 --- a/src/main/java/MARKETFUBY/Review/service/ReviewService.java +++ b/src/main/java/MARKETFUBY/Review/service/ReviewService.java @@ -3,6 +3,10 @@ import java.util.ArrayList; import java.util.List; +import MARKETFUBY.Product.dto.HelpReviewDto; +import MARKETFUBY.Product.dto.HelpReviewListResponseDto; +import MARKETFUBY.ReviewHelp.domain.ReviewHelp; +import MARKETFUBY.ReviewHelp.repository.ReviewHelpRepository; import org.springframework.stereotype.Service; import MARKETFUBY.Member.domain.Member; @@ -29,6 +33,7 @@ public class ReviewService { private final ReviewRepository reviewRepository; private final ReviewImageRepository reviewImageRepository; private final MemberService memberService; + private final ReviewHelpRepository reviewHelpRepository; public ReviewResponseDto getReviewList(){ ReviewResponseDto reviewResponseDto=new ReviewResponseDto(); @@ -83,11 +88,30 @@ public void update(Long reviewId, ReviewRequestDto reviewRequestDto){ reviewRepository.save(review); } + public HelpReviewListResponseDto getHelpReviewListDto(Member member){ + List helpReviewDtos = findHelpReviewsByMember(member); + Integer helpReviewsNum = helpReviewDtos.size(); + return new HelpReviewListResponseDto(helpReviewsNum, helpReviewDtos); + } + public List findHelpReviewsByMember(Member member){ + List reviewHelpList = reviewHelpRepository.findAllByMember(member); + List helpReviews = new ArrayList<>(); + List helpReviewDtos = new ArrayList<>(); + reviewHelpList.forEach(reviewHelp -> { + Review review = reviewHelp.getReview(); + helpReviews.add(review); + }); + helpReviews.forEach(review -> { + HelpReviewDto helpReviewDto = HelpReviewDto.from(review); + helpReviewDtos.add(helpReviewDto); + }); + return helpReviewDtos; + } + // 도움돼요에서 사용 @Transactional(readOnly = true) public Review findReviewById(Long reviewId){ return reviewRepository.findById(reviewId) .orElseThrow(()->new EntityNotFoundException("해당 리뷰가 존재하지 않습니다.")); } - } diff --git a/src/main/java/MARKETFUBY/ReviewHelp/repository/ReviewHelpRepository.java b/src/main/java/MARKETFUBY/ReviewHelp/repository/ReviewHelpRepository.java index 478c952..6749c44 100644 --- a/src/main/java/MARKETFUBY/ReviewHelp/repository/ReviewHelpRepository.java +++ b/src/main/java/MARKETFUBY/ReviewHelp/repository/ReviewHelpRepository.java @@ -1,15 +1,18 @@ package MARKETFUBY.ReviewHelp.repository; +import MARKETFUBY.Like.domain.Like; import MARKETFUBY.Member.domain.Member; import MARKETFUBY.Review.domain.Review; import MARKETFUBY.ReviewHelp.domain.ReviewHelp; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; +import java.util.List; import java.util.Optional; @Repository public interface ReviewHelpRepository extends JpaRepository { boolean existsByMemberAndReview(Member member, Review review); Optional findByMemberAndReview(Member member, Review review); + List findAllByMember(Member member); }