From 0e934c8c8baf314ae92bc19037ee2196d19be50b Mon Sep 17 00:00:00 2001 From: Jongwon Date: Sat, 5 Nov 2022 20:02:15 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A6=AC=EB=B7=B0=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=EC=97=90=20=ED=82=A4=EC=9B=8C=EB=93=9C,=20=EC=A2=8B=EC=95=84?= =?UTF-8?q?=EC=9A=94=20=EC=88=98,=20=EB=8C=93=EA=B8=80=20=EC=88=98=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/kotlin/zip/cafe/api/dto/Review.kt | 10 +++++++++- src/main/kotlin/zip/cafe/service/ReviewService.kt | 3 +++ src/test/kotlin/zip/cafe/api/ReviewControllerTest.kt | 8 ++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/zip/cafe/api/dto/Review.kt b/src/main/kotlin/zip/cafe/api/dto/Review.kt index b59b68b..42695ac 100644 --- a/src/main/kotlin/zip/cafe/api/dto/Review.kt +++ b/src/main/kotlin/zip/cafe/api/dto/Review.kt @@ -34,13 +34,21 @@ data class ReviewInfo( val id: Long, val finalScore: Double, val description: String, - val visitPurpose : ReviewVisitPurposeInfo, + val visitPurpose: ReviewVisitPurposeInfo, val foods: List, val images: List, + val keywords: List, + val likeCount: Long, + val commentCount: Long, @JsonFormat(pattern = defaultDateFormat) val createdAt: LocalDateTime, ) +data class ReviewKeywordInfo( + val id: Long, + val keyword: String, +) + data class ReviewVisitPurposeInfo( val purpose: Purpose, val score: Int, diff --git a/src/main/kotlin/zip/cafe/service/ReviewService.kt b/src/main/kotlin/zip/cafe/service/ReviewService.kt index 75ab3a8..cc42e85 100644 --- a/src/main/kotlin/zip/cafe/service/ReviewService.kt +++ b/src/main/kotlin/zip/cafe/service/ReviewService.kt @@ -42,6 +42,9 @@ class ReviewService( ), foods = review.foodInfos.map { ReviewFoodInfo(it.food, it.score.score) }, images = review.images.map { ReviewImageInfo(it.id, it.cloudFrontURL) }, + keywords = review.cafeKeywords.map { ReviewKeywordInfo(it.id, it.keyword) }, + likeCount = review.likeCount, + commentCount = review.commentCount, createdAt = review.createdAt ), member = ReviewMemberInfo( diff --git a/src/test/kotlin/zip/cafe/api/ReviewControllerTest.kt b/src/test/kotlin/zip/cafe/api/ReviewControllerTest.kt index 3ef2115..fed9d9c 100644 --- a/src/test/kotlin/zip/cafe/api/ReviewControllerTest.kt +++ b/src/test/kotlin/zip/cafe/api/ReviewControllerTest.kt @@ -36,6 +36,9 @@ class ReviewControllerTest : WebMvcTestAdapter() { visitPurpose = ReviewVisitPurposeInfo(purpose = Purpose.DATE, score = 3), foods = listOf(ReviewFoodInfo(Food.BAKERY, 3), ReviewFoodInfo(Food.COFFEE, 4)), images = listOf(ReviewImageInfo(1L, "https://image.com/1"), ReviewImageInfo(2L, "https://image.com/2")), + keywords = listOf(ReviewKeywordInfo(1L, "좋은"), ReviewKeywordInfo(2L, "카페")), + likeCount = 3, + commentCount = 2, createdAt = LocalDateTime.now() ), member = ReviewMemberInfo(id = memberId, nickname = "길동길동홍길동", profileImageUrl = "https://image.com/123"), @@ -67,6 +70,11 @@ class ReviewControllerTest : WebMvcTestAdapter() { "review.images" type ARRAY means "리뷰에 올라온 이미지 목록", "review.images[].id" type NUMBER means "리뷰 이미지 id" example reviewDetailInfo.review.images[0].id, "review.images[].url" type STRING means "리뷰 이미지 url" example reviewDetailInfo.review.images[0].url, + "review.keywords" type ARRAY means "리뷰에 올라온 키워드 목록", + "review.keywords[].id" type NUMBER means "키워드 id" example reviewDetailInfo.review.keywords[0].id, + "review.keywords[].keyword" type STRING means "키워드 이름" example reviewDetailInfo.review.keywords[0].keyword, + "review.likeCount" type NUMBER means "좋아요 수" example reviewDetailInfo.review.likeCount, + "review.commentCount" type NUMBER means "댓글 수" example reviewDetailInfo.review.commentCount, "review.createdAt" type STRING means "리뷰 작성 시간" example reviewDetailInfo.review.createdAt.formatAsDefault(), "member.id" type NUMBER means "작성자 id" example reviewDetailInfo.member.id, "member.nickname" type STRING means "작성자 닉네임" example reviewDetailInfo.member.nickname,