Skip to content

Commit

Permalink
Merge pull request #109 from Team-2m4t/refact/#108
Browse files Browse the repository at this point in the history
[refactor] 리뷰 조회 API 리팩토링
  • Loading branch information
yujin113 authored May 16, 2022
2 parents bc169e5 + 0ab6e1a commit 8fe4c6f
Show file tree
Hide file tree
Showing 15 changed files with 133 additions and 158 deletions.
82 changes: 25 additions & 57 deletions src/main/java/hyangyu/server/api/ReviewApi.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,12 @@
package hyangyu.server.api;

import hyangyu.server.domain.*;
import hyangyu.server.dto.*;
import hyangyu.server.dto.review.*;
import hyangyu.server.dto.user.UserDto;
import hyangyu.server.exception.CustomException;
import hyangyu.server.service.*;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

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

import static hyangyu.server.constants.ExceptionCode.EVENT_NOT_FOUND;
import static hyangyu.server.constants.SuccessCode.*;

Expand All @@ -25,10 +18,6 @@ public class ReviewApi {
private final DisplayReviewService displayReviewService;
private final FairReviewService fairReviewService;
private final FestivalReviewService festivalReviewService;
private final DisplayService displayService;
private final FairService fairService;
private final FestivalService festivalService;
private final UserService userService;

@PostMapping("/review/display/{displayId}")
public ResponseEntity<ReviewResponse> saveDisplayReview(@PathVariable Long displayId, @RequestBody RequestReviewDto requestReviewDto) throws Exception {
Expand Down Expand Up @@ -113,61 +102,40 @@ public ResponseEntity<ReviewResponse> accuseReview(@PathVariable Long reviewId,
}

@GetMapping("/show/review/display/{displayId}")
public ResponseEntity getDisplayReviews(@PathVariable Long displayId) throws Exception {
//전시 검색
Optional<Display> display = displayService.findOne(displayId);
if (display.isEmpty()) {
return new ResponseEntity(new ErrorDto(404, "잘못된 전시 번호입니다."), HttpStatus.BAD_REQUEST);
}
public ResponseEntity<ReviewListResponse> getDisplayReviews(@PathVariable Long displayId) throws Exception {
ReviewListResponseDto response = displayReviewService.getDisplayReviews(displayId);

List<ReviewDto> displayReviews = displayReviewService.getDisplayReviews(displayId);
ShowReviewsDto showReviewsDto = new ShowReviewsDto(displayReviews);
ReviewsResponseDto reviewResponseDto = new ReviewsResponseDto(200, showReviewsDto);
return new ResponseEntity(reviewResponseDto, HttpStatus.OK);
return ReviewListResponse.newResponse(REVIEW_READ_SUCCESS, response);
}

@GetMapping("/show/review/fair/{fairId}")
public ResponseEntity getFairReviews(@PathVariable Long fairId) throws Exception {
//전시 검색
Optional<Fair> fair = fairService.findOne(fairId);
if (fair.isEmpty()) {
return new ResponseEntity(new ErrorDto(404, "잘못된 박람회 번호입니다."), HttpStatus.BAD_REQUEST);
}
public ResponseEntity<ReviewListResponse> getFairReviews(@PathVariable Long fairId) throws Exception {
ReviewListResponseDto response = fairReviewService.getFairReviews(fairId);

List<ReviewDto> fairReviews = fairReviewService.getFairReviews(fairId);
ShowReviewsDto showReviewsDto = new ShowReviewsDto(fairReviews);
ReviewsResponseDto reviewResponseDto = new ReviewsResponseDto(200, showReviewsDto);
return new ResponseEntity(reviewResponseDto, HttpStatus.OK);
return ReviewListResponse.newResponse(REVIEW_READ_SUCCESS, response);
}

@GetMapping("/show/review/festival/{festivalId}")
public ResponseEntity getFestivalReviews(@PathVariable Long festivalId) throws Exception {
//전시 검색
Optional<Festival> festival = festivalService.findOne(festivalId);
if (festival.isEmpty()) {
return new ResponseEntity(new ErrorDto(404, "잘못된 페스티벌 번호입니다."), HttpStatus.BAD_REQUEST);
}
public ResponseEntity<ReviewListResponse> getFestivalReviews(@PathVariable Long festivalId) throws Exception {
ReviewListResponseDto response = festivalReviewService.getFestivalReviews(festivalId);

List<ReviewDto> festivalReviews = festivalReviewService.getFestivalReviews(festivalId);
ShowReviewsDto showReviewsDto = new ShowReviewsDto(festivalReviews);
ReviewsResponseDto reviewResponseDto = new ReviewsResponseDto(200, showReviewsDto);
return new ResponseEntity(reviewResponseDto, HttpStatus.OK);
return ReviewListResponse.newResponse(REVIEW_READ_SUCCESS, response);
}

@GetMapping("/myreview")
public ResponseEntity getMyReviews() throws Exception {
//사용자 검색
UserDto user = userService.getMyUserWithAuthorities();
if (user == null) {
return new ResponseEntity(new ErrorDto(401, "유효하지 않은 사용자입니다."), HttpStatus.BAD_REQUEST);
}

List<MyReviewDto> myDisplayReviews = displayReviewService.getMyDisplayReviews(user.getUserId());
List<MyReviewDto> myFairReviews = fairReviewService.getMyFairReviews(user.getUserId());
List<MyReviewDto> myFestivalReviews = festivalReviewService.getMyFestivalReviews(user.getUserId());

MyReviewsDto myReviewsDto = new MyReviewsDto(myDisplayReviews, myFairReviews, myFestivalReviews);
MyReviewsResponseDto myReviewsResponseDto = new MyReviewsResponseDto(200, myReviewsDto);
return new ResponseEntity(myReviewsResponseDto, HttpStatus.OK);
}
// @GetMapping("/myreview")
// public ResponseEntity getMyReviews() throws Exception {
// //사용자 검색
// UserDto user = userService.getMyUserWithAuthorities();
// if (user == null) {
// return new ResponseEntity(new ErrorDto(401, "유효하지 않은 사용자입니다."), HttpStatus.BAD_REQUEST);
// }
//
// List<MyReviewDto> myDisplayReviews = displayReviewService.getMyDisplayReviews(user.getUserId());
// List<MyReviewDto> myFairReviews = fairReviewService.getMyFairReviews(user.getUserId());
// List<MyReviewDto> myFestivalReviews = festivalReviewService.getMyFestivalReviews(user.getUserId());
//
// MyReviewsDto myReviewsDto = new MyReviewsDto(myDisplayReviews, myFairReviews, myFestivalReviews);
// MyReviewsResponseDto myReviewsResponseDto = new MyReviewsResponseDto(200, myReviewsDto);
// return new ResponseEntity(myReviewsResponseDto, HttpStatus.OK);
// }
}
3 changes: 2 additions & 1 deletion src/main/java/hyangyu/server/constants/SuccessCode.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ public enum SuccessCode {
REVIEW_SAVE_SUCCESS(OK, "리뷰 작성에 성공했습니다."),
REVIEW_UPDATE_SUCCESS(OK, "리뷰 수정에 성공했습니다."),
REVIEW_DELETE_SUCCESS(OK, "리뷰 삭제에 성공했습니다."),
REVIEW_WARN_SUCCESS(OK, "리뷰 신고에 성공했습니다.");
REVIEW_WARN_SUCCESS(OK, "리뷰 신고에 성공했습니다."),
REVIEW_READ_SUCCESS(OK, "리뷰 조회에 성공했습니다.");

private final HttpStatus status;
private final String message;
Expand Down
14 changes: 0 additions & 14 deletions src/main/java/hyangyu/server/dto/review/MyReviewsDto.java

This file was deleted.

11 changes: 0 additions & 11 deletions src/main/java/hyangyu/server/dto/review/MyReviewsResponseDto.java

This file was deleted.

21 changes: 16 additions & 5 deletions src/main/java/hyangyu/server/dto/review/ReviewDto.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
package hyangyu.server.dto.review;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;

import java.time.LocalDateTime;

@Data
@AllArgsConstructor
@Getter
public class ReviewDto {

Long reviewId;

String photo;
String image;

String username;

Expand All @@ -22,4 +20,17 @@ public class ReviewDto {
String content;

int score;

private ReviewDto(Long reviewId, String image, String username, LocalDateTime createTime, String content, int score) {
this.reviewId = reviewId;
this.image = image;
this.username = username;
this.createTime = createTime;
this.content = content;
this.score = score;
}

public static ReviewDto of(Long reviewId, String image, String username, LocalDateTime createTime, String content, int score) {
return new ReviewDto(reviewId, image, username, createTime, content, score);
}
}
25 changes: 25 additions & 0 deletions src/main/java/hyangyu/server/dto/review/ReviewListResponse.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package hyangyu.server.dto.review;

import hyangyu.server.constants.SuccessCode;
import hyangyu.server.dto.BaseResponse;
import lombok.Getter;
import org.springframework.http.ResponseEntity;

@Getter
public class ReviewListResponse extends BaseResponse {
ReviewListResponseDto data;

private ReviewListResponse(Boolean success, String msg, ReviewListResponseDto data) {
super(success, msg);
this.data = data;
}

public static ReviewListResponse of(Boolean success, String message, ReviewListResponseDto data) {
return new ReviewListResponse(success, message, data);
}

public static ResponseEntity<ReviewListResponse> newResponse(SuccessCode code, ReviewListResponseDto data) {
ReviewListResponse response = ReviewListResponse.of(true, code.getMessage(), data);
return new ResponseEntity<ReviewListResponse>(response, code.getStatus());
}
}
20 changes: 20 additions & 0 deletions src/main/java/hyangyu/server/dto/review/ReviewListResponseDto.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package hyangyu.server.dto.review;

import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

@Getter
@NoArgsConstructor
public class ReviewListResponseDto {
List<ReviewDto> reviews;

private ReviewListResponseDto(List<ReviewDto> reviews) {
this.reviews = reviews;
}

public static ReviewListResponseDto of(List<ReviewDto> reviews) {
return new ReviewListResponseDto(reviews);
}
}
13 changes: 0 additions & 13 deletions src/main/java/hyangyu/server/dto/review/ReviewsResponseDto.java

This file was deleted.

12 changes: 0 additions & 12 deletions src/main/java/hyangyu/server/dto/review/ShowReviewsDto.java

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package hyangyu.server.repository;

import hyangyu.server.domain.Display;
import hyangyu.server.domain.DisplayReview;
import hyangyu.server.dto.review.MyReviewDto;
import hyangyu.server.dto.review.ReviewDto;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

Expand All @@ -11,14 +10,10 @@
public interface DisplayReviewRepository extends JpaRepository<DisplayReview, Long> {

@Query("select count(r) from DisplayReview r where r.display.displayId=?1 and r.user.userId=?2")
public int getCount(Long displayId, Long userId);
int getCount(Long displayId, Long userId);

@Query("select r from DisplayReview r where r.display.displayId=?1 and r.user.userId=?2")
public DisplayReview getDisplayReview(Long displayId, Long userId);
DisplayReview getDisplayReview(Long displayId, Long userId);

@Query("select new hyangyu.server.dto.review.ReviewDto(r.reviewId, r.user.image ,r.user.username, r.createTime, r.content, r.score) from DisplayReview r where r.display.displayId=?1 order by r.createTime desc")
public List<ReviewDto> getDisplayReviews(Long displayId);

@Query("select new hyangyu.server.dto.review.MyReviewDto(r.reviewId, r.display.title, r.user.image, r.user.username, r.createTime, r.content, r.score) from DisplayReview r where r.user.userId=?1 order by r.createTime desc")
public List<MyReviewDto> getMyDisplayReviews(Long userId);
List<DisplayReview> findAllByDisplayOrderByCreateTimeDesc(Display display);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package hyangyu.server.repository;

import hyangyu.server.domain.Fair;
import hyangyu.server.domain.FairReview;
import hyangyu.server.dto.review.MyReviewDto;
import hyangyu.server.dto.review.ReviewDto;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

Expand All @@ -11,14 +10,10 @@
public interface FairReviewRepository extends JpaRepository<FairReview, Long> {

@Query("select count(r) from FairReview r where r.fair.fairId=?1 and r.user.userId=?2")
public int getCount(Long fairId, Long userId);
int getCount(Long fairId, Long userId);

@Query("select r from FairReview r where r.fair.fairId=?1 and r.user.userId=?2")
public FairReview getFairReview(Long fairId, Long userId);
FairReview getFairReview(Long fairId, Long userId);

@Query("select new hyangyu.server.dto.review.ReviewDto(r.reviewId, r.user.image, r.user.username, r.createTime, r.content, r.score) from FairReview r where r.fair.fairId=?1 order by r.createTime desc")
public List<ReviewDto> getFairReviews(Long fairId);

@Query("select new hyangyu.server.dto.review.MyReviewDto(r.reviewId, r.fair.title, r.user.image, r.user.username, r.createTime, r.content, r.score) from FairReview r where r.user.userId=?1 order by r.createTime desc")
public List<MyReviewDto> getMyFairReviews(Long userId);
List<FairReview> findAllByFairOrderByCreateTimeDesc(Fair fair);
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package hyangyu.server.repository;

import hyangyu.server.domain.Festival;
import hyangyu.server.domain.FestivalReview;
import hyangyu.server.dto.review.MyReviewDto;
import hyangyu.server.dto.review.ReviewDto;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

Expand All @@ -11,14 +10,10 @@
public interface FestivalReviewRepository extends JpaRepository<FestivalReview, Long> {

@Query("select count(r) from FestivalReview r where r.festival.festivalId=?1 and r.user.userId=?2")
public int getCount(Long festivalId, Long userId);
int getCount(Long festivalId, Long userId);

@Query("select r from FestivalReview r where r.festival.festivalId=?1 and r.user.userId=?2")
public FestivalReview getFestivalReview(Long festivalId, Long userId);
FestivalReview getFestivalReview(Long festivalId, Long userId);

@Query("select new hyangyu.server.dto.review.ReviewDto(r.reviewId, r.user.image, r.user.username, r.createTime, r.content, r.score) from FestivalReview r where r.festival.festivalId=?1 order by r.createTime desc")
public List<ReviewDto> getFestivalReviews(Long festivalId);

@Query("select new hyangyu.server.dto.review.MyReviewDto(r.reviewId, r.festival.title, r.user.image, r.user.username, r.createTime, r.content, r.score) from FestivalReview r where r.user.userId=?1 order by r.createTime desc")
public List<MyReviewDto> getMyFestivalReviews(Long userId);
List<FestivalReview> findAllByFestivalOrderByCreateTimeDesc(Festival festival);
}
17 changes: 11 additions & 6 deletions src/main/java/hyangyu/server/service/DisplayReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@
import hyangyu.server.domain.DisplayReview;
import hyangyu.server.domain.DisplayWarn;
import hyangyu.server.domain.User;
import hyangyu.server.dto.review.MyReviewDto;
import hyangyu.server.dto.review.RequestReviewDto;
import hyangyu.server.dto.review.ReviewDto;
import hyangyu.server.dto.review.ReviewListResponseDto;
import hyangyu.server.exception.CustomException;
import hyangyu.server.jwt.SecurityUtil;
import hyangyu.server.repository.DisplayRepository;
Expand All @@ -20,6 +20,7 @@
import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

import static hyangyu.server.constants.ExceptionCode.*;

Expand Down Expand Up @@ -110,12 +111,16 @@ public void accuseDisplayReview(Long reviewId) {
}
}

public List<ReviewDto> getDisplayReviews(Long displayId) {
return displayReviewRepository.getDisplayReviews(displayId);
}
public ReviewListResponseDto getDisplayReviews(Long displayId) {
User user = getUser();

Display display = getDisplay(displayId);

List<ReviewDto> reviews = displayReviewRepository.findAllByDisplayOrderByCreateTimeDesc(display).stream()
.map(review -> ReviewDto.of(review.getReviewId(), review.getUser().getImage(), review.getUser().getUsername(), review.getCreateTime(), review.getContent(), review.getScore()))
.collect(Collectors.toList());

public List<MyReviewDto> getMyDisplayReviews(Long userId) {
return displayReviewRepository.getMyDisplayReviews(userId);
return ReviewListResponseDto.of(reviews);
}

private User getUser() {
Expand Down
Loading

0 comments on commit 8fe4c6f

Please sign in to comment.