From afb6e7cf11f33f8b5e746d9de732ee2b2f6a0170 Mon Sep 17 00:00:00 2001 From: unagi-zoso Date: Mon, 2 Sep 2024 00:00:17 +0900 Subject: [PATCH] =?UTF-8?q?ROFO-193=20enum=20class=20description=20?= =?UTF-8?q?=EC=9D=84=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kotlin/kr/weit/roadyfoody/badge/domain/Badge.kt | 2 ++ .../presentation/api/FoodSpotsController.kt | 5 +++-- .../presentation/spec/FoodSpotsControllerSpec.kt | 12 ++++++++++-- .../user/application/dto/UserReviewResponse.kt | 7 +++---- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/kr/weit/roadyfoody/badge/domain/Badge.kt b/src/main/kotlin/kr/weit/roadyfoody/badge/domain/Badge.kt index aa1c8a99..9ed1a244 100644 --- a/src/main/kotlin/kr/weit/roadyfoody/badge/domain/Badge.kt +++ b/src/main/kotlin/kr/weit/roadyfoody/badge/domain/Badge.kt @@ -31,5 +31,7 @@ enum class Badge( prevBadge: Badge, newBadge: Badge, ): Boolean = prevBadge > newBadge + + fun fromDescriptionOrNull(description: String): Badge? = entries.find { it.description == description } } } diff --git a/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/api/FoodSpotsController.kt b/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/api/FoodSpotsController.kt index 29f256e1..a6f69204 100644 --- a/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/api/FoodSpotsController.kt +++ b/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/api/FoodSpotsController.kt @@ -101,8 +101,9 @@ class FoodSpotsController( @RequestParam(required = false, defaultValue = "LATEST") sortType: ReviewSortType, @RequestParam(required = false) - badge: Badge?, - ): SliceResponse = foodSpotsQueryService.getFoodSpotsReview(foodSpotsId, size, lastId, sortType, badge) + badge: String?, + ): SliceResponse = + foodSpotsQueryService.getFoodSpotsReview(foodSpotsId, size, lastId, sortType, badge?.let { Badge.fromDescriptionOrNull(it) }) @GetMapping("/{foodSpotsId}") override fun getFoodSpotsDetail( diff --git a/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/spec/FoodSpotsControllerSpec.kt b/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/spec/FoodSpotsControllerSpec.kt index bbbfabd6..bc64e47b 100644 --- a/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/spec/FoodSpotsControllerSpec.kt +++ b/src/main/kotlin/kr/weit/roadyfoody/foodSpots/presentation/spec/FoodSpotsControllerSpec.kt @@ -2,6 +2,7 @@ package kr.weit.roadyfoody.foodSpots.presentation.spec import io.swagger.v3.oas.annotations.Operation import io.swagger.v3.oas.annotations.Parameter +import io.swagger.v3.oas.annotations.enums.ParameterIn import io.swagger.v3.oas.annotations.media.Content import io.swagger.v3.oas.annotations.media.Schema import io.swagger.v3.oas.annotations.responses.ApiResponse @@ -10,7 +11,6 @@ import jakarta.validation.Valid import jakarta.validation.constraints.Positive import jakarta.validation.constraints.Size import kr.weit.roadyfoody.auth.security.LoginUser -import kr.weit.roadyfoody.badge.domain.Badge import kr.weit.roadyfoody.common.dto.SliceResponse import kr.weit.roadyfoody.common.exception.ErrorCode import kr.weit.roadyfoody.foodSpots.application.dto.FoodSpotsDetailResponse @@ -168,6 +168,14 @@ interface FoodSpotsControllerSpec { @Operation( description = "음식점의 리뷰 리스트 조회 API", + parameters = [ + Parameter( + name = "badge", + description = "사용자 배지 필터", + `in` = ParameterIn.QUERY, + schema = Schema(type = "string", allowableValues = ["초심자", "중수", "고수", "초고수"]), + ), + ], responses = [ ApiResponse( responseCode = "200", @@ -204,7 +212,7 @@ interface FoodSpotsControllerSpec { @RequestParam(defaultValue = "LATEST", required = false) sortType: ReviewSortType, @RequestParam(required = false) - badge: Badge?, + badge: String?, ): SliceResponse @Operation( diff --git a/src/main/kotlin/kr/weit/roadyfoody/user/application/dto/UserReviewResponse.kt b/src/main/kotlin/kr/weit/roadyfoody/user/application/dto/UserReviewResponse.kt index 263b17cf..58da253d 100644 --- a/src/main/kotlin/kr/weit/roadyfoody/user/application/dto/UserReviewResponse.kt +++ b/src/main/kotlin/kr/weit/roadyfoody/user/application/dto/UserReviewResponse.kt @@ -1,7 +1,6 @@ package kr.weit.roadyfoody.user.application.dto import io.swagger.v3.oas.annotations.media.Schema -import kr.weit.roadyfoody.badge.domain.Badge import kr.weit.roadyfoody.review.application.dto.ReviewPhotoResponse import kr.weit.roadyfoody.review.domain.FoodSpotsReview import kr.weit.roadyfoody.user.domain.User @@ -12,8 +11,8 @@ data class ReviewerInfoResponse( val id: Long, @Schema(description = "유저 닉네임", example = "TestNickname") val nickname: String, - @Schema(description = "유저 뱃지", example = "BEGINNER") - val badge: Badge, + @Schema(description = "유저 뱃지", example = "초심자") + val badge: String, @Schema(description = "프로필 URL") val url: String?, ) { @@ -21,7 +20,7 @@ data class ReviewerInfoResponse( fun of( user: User, url: String?, - ) = ReviewerInfoResponse(user.id, user.profile.nickname, user.badge, url) + ) = ReviewerInfoResponse(user.id, user.profile.nickname, user.badge.description, url) } }