Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE-121] Job Enum class 추가 및 리뷰 상세 조회 API 리팩토링 #122

Merged
merged 3 commits into from
Dec 21, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,97 @@
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import com.example.betteriter.fo_domain.review.domain.Review;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.global.common.entity.BaseEntity;
import com.example.betteriter.global.constant.Status;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import com.example.betteriter.fo_domain.review.domain.Review;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.global.common.entity.BaseEntity;
import com.example.betteriter.global.constant.Status;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import com.example.betteriter.fo_domain.review.domain.Review;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.global.common.entity.BaseEntity;
import com.example.betteriter.global.constant.Status;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import com.example.betteriter.fo_domain.review.domain.Review;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.global.common.entity.BaseEntity;
import com.example.betteriter.global.constant.Status;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import com.example.betteriter.fo_domain.review.domain.Review;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.global.common.entity.BaseEntity;
import com.example.betteriter.global.constant.Status;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import com.example.betteriter.fo_domain.review.domain.Review;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.global.common.entity.BaseEntity;
import com.example.betteriter.global.constant.Status;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;
import com.example.betteriter.fo_domain.review.domain.Review;
import com.example.betteriter.fo_domain.user.domain.Users;
import com.example.betteriter.global.common.entity.BaseEntity;
import com.example.betteriter.global.constant.Status;
import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.hibernate.annotations.ColumnDefault;
import org.hibernate.annotations.Where;

import javax.persistence.*;

@Slf4j
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ public ReviewDetailResponse(GetReviewDetailResponseDto getReviewDetailResponseDt
this.reviewCommentInfo = reviewCommentInfo;
}

public static ReviewDetailResponse of(Review review, List<Review> relatedReviews) {
public static ReviewDetailResponse of(Review review, List<Review> relatedReviews, Users currentUser) {
GetReviewDetailResponseDto reviewDetail = GetReviewDetailResponseDto.from(review); // 리뷰 상세
GetUserResponseDto writerInfo = GetUserResponseDto.from(review.getWriter()); // 리뷰 작성자 데이터
List<GetRelatedReviewResponseDto> getRelatedReviewResponseDto = GetRelatedReviewResponseDto.from(relatedReviews); // 연관 리뷰 데이터
ReviewLikeInfo reviewLikeInfo = ReviewLikeInfo.from(review); // 리뷰 좋아요 데이터
ReviewCommentInfo reviewCommentInfo = ReviewCommentInfo.from(review); // 리뷰 댓글 데이터
ReviewCommentInfo reviewCommentInfo = ReviewCommentInfo.from(review, currentUser); // 리뷰 댓글 데이터

return ReviewDetailResponse.builder()
.getReviewDetailResponseDto(reviewDetail)
Expand Down Expand Up @@ -120,6 +120,7 @@ public GetUserResponseDto(Long id, String nickName, Job job,

public static ReviewDetailResponse.GetUserResponseDto from(Users writer) {
return ReviewDetailResponse.GetUserResponseDto.builder()
.id(writer.getId())
.nickName(writer.getUsersDetail().getNickName())
.job(writer.getUsersDetail().getJob())
.isExpert(writer.isExpert())
Expand Down Expand Up @@ -163,6 +164,7 @@ public static ReviewLikeInfo from(Review review) {
@Getter
@NoArgsConstructor
public static class ReviewCommentInfo {
@JsonProperty("reviewComments")
private List<ReviewCommentResponse> reviewCommentResponses;
private long reviewCommentCount;

Expand All @@ -172,9 +174,9 @@ public ReviewCommentInfo(List<ReviewCommentResponse> reviewCommentResponses, lon
this.reviewCommentCount = reviewCommentCount;
}

public static ReviewCommentInfo from(Review review) {
public static ReviewCommentInfo from(Review review, Users currentUser) {
return ReviewCommentInfo.builder()
.reviewCommentResponses(ReviewCommentResponse.from(review.getReviewComment()))
.reviewCommentResponses(ReviewCommentResponse.from(review.getReviewComment(),currentUser))
.reviewCommentCount(review.getReviewComment().size())
.build();
}
Expand All @@ -186,25 +188,28 @@ public static class ReviewCommentResponse {
private GetUserResponseForLikeAndComment reviewCommentUserInfo;
private String comment;
private LocalDate commentCreatedAt;
private boolean isMine; // 로그인한 유저의 댓글인지 여부

@Builder
public ReviewCommentResponse(Long id, GetUserResponseForLikeAndComment reviewCommentUserInfo,
String comment, LocalDate commentCreatedAt
String comment, LocalDate commentCreatedAt, boolean isMine
) {
this.id = id;
this.reviewCommentUserInfo = reviewCommentUserInfo;
this.comment = comment;
this.commentCreatedAt = commentCreatedAt;
this.isMine = isMine;
}

public static List<ReviewCommentResponse> from(List<Comment> comments) {
public static List<ReviewCommentResponse> from(List<Comment> comments, Users users) {
return comments.stream()
.map(c -> ReviewCommentResponse.builder()
.id(c.getId())
.reviewCommentUserInfo(GetUserResponseForLikeAndComment.from(c.getUsers()))
.comment(c.getComment())
.commentCreatedAt(c.getCreatedAt().toLocalDate()).build()
)
.commentCreatedAt(c.getCreatedAt().toLocalDate())
.isMine(c.getUsers().getId().equals(users.getId()))
.build())
.collect(Collectors.toList());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ public ReviewDetailResponse getReviewDetail(Long reviewId) {
= this.reviewRepository.findTop4ByProductNameOrderByScrapedCntPlusLikedCntDesc(review.getProductName());

if (relatedReviews.size() == 4) {
return ReviewDetailResponse.of(review, relatedReviews);
return ReviewDetailResponse.of(review, relatedReviews, getCurrentUser());
}
int remain = 4 - relatedReviews.size();
// 3. 동일한 카테고리 중 좋아요 + 스크랩 순 정렬 조회 (나머지)
Expand All @@ -125,7 +125,7 @@ public ReviewDetailResponse getReviewDetail(Long reviewId) {
List<Review> totalRelatedReviews = Stream.concat(relatedReviews.stream(), restRelatedReviews.stream())
.collect(Collectors.toList());

return ReviewDetailResponse.of(review, totalRelatedReviews);
return ReviewDetailResponse.of(review, totalRelatedReviews, getCurrentUser());
}

/* 리뷰 좋아요 */
Expand Down
10 changes: 8 additions & 2 deletions src/main/java/com/example/betteriter/global/constant/Job.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,16 @@
@Getter
@RequiredArgsConstructor
public enum Job {
DEVELOPER("개발자"),
SW_DEVELOPER("SW 개발자"),
GAME_DEVELOPER("게임 개발자"),
STUDENT("학생"),
TEACHER("선생님"),
DESIGNER("디자이너");
VIDEO_DESIGNER("영상 디자이너"),
VISUAL_DESIGNER("시각 디자이너"),
DATA_ANALYST("데이터 분석가"),
PLANNER("기획자"),
EDITOR("에디터"),
CEO("CEO");
private final String jobName;

@JsonCreator
Expand Down
Loading
Loading