From 87902eb236427d72c21f7590d7a9216dc526c317 Mon Sep 17 00:00:00 2001 From: devchanki Date: Thu, 10 Oct 2024 21:07:43 +0900 Subject: [PATCH 1/5] =?UTF-8?q?=EC=98=88=EC=99=B8=20=EC=B2=98=EB=A6=AC=20/?= =?UTF-8?q?=20=EC=95=88=EC=93=B0=EB=8A=94=20DTO=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/store/command/StoreListCommand.kt | 8 ++--- .../infrastructure/client/StoreReadImpl.kt | 9 +++-- .../store/presentation/api/StoreController.kt | 23 ++++++------- .../store/presentation/dto/StoreDto.kt | 34 ++++++++++++------- 4 files changed, 39 insertions(+), 35 deletions(-) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt index d5a2452..a77cada 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt @@ -1,11 +1,11 @@ package org.inner.circle.o2oserver.store.domain.store.command -import org.inner.circle.o2oserver.store.domain.Address +import org.springframework.data.domain.Pageable class StoreListCommand( - val address: Address, + val longitude: Double, + val latitude: Double, val category: String?, val keyword: String, - val page: Int, - val size: Int, + val pageable: Pageable ) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt index fdd13f1..421f819 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt @@ -92,13 +92,12 @@ class StoreReadImpl(private val storeApiClient: StoreApiClient, private val mong } override fun getStoreListWithLocationAndName(command: StoreListCommand): StoreListInfo { - val pageable = PageRequest.of(command.page, command.size) + val pageable = command.pageable + val keyword = command.keyword - val keyword = command.keyword ?: "" - val (latitude, longitude) = command.address - - val point = Point(longitude, latitude) + val point = Point(command.longitude, command.latitude) val distance = Distance(5.0, Metrics.KILOMETERS) + val mongo = mongoRepository.findByStoreNameContainingAndLocationNear(keyword, point, distance, pageable) return StoreListInfo(totalCount = mongo.totalElements, stores = mongo.content.map { it.toDomain() }) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt index baf208c..a54b408 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt @@ -1,13 +1,14 @@ package org.inner.circle.o2oserver.store.presentation.api +import jakarta.validation.Valid import org.inner.circle.o2oserver.store.application.ReviewFacade import org.inner.circle.o2oserver.store.application.StoreFacade import org.inner.circle.o2oserver.store.domain.review.ReviewQueryObject -import org.inner.circle.o2oserver.store.domain.store.command.StoreListCommand import org.inner.circle.o2oserver.store.presentation.dto.CommonListResponse import org.inner.circle.o2oserver.store.presentation.dto.CommonResponse import org.inner.circle.o2oserver.store.presentation.dto.StoreListRequest import org.inner.circle.o2oserver.store.presentation.dto.StoreReviewDTO +import org.springframework.validation.BindingResult import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping @@ -31,23 +32,19 @@ class StoreController( } @PostMapping("") - fun getStoreDetail( - @RequestBody request: StoreListRequest, + fun storeList( + @Valid @RequestBody request: StoreListRequest, + bindingResult: BindingResult ): CommonListResponse { - val command = - StoreListCommand( - address = request.address.toDomain(), - category = request.category, - keyword = request.keyword, - page = request.page, - size = request.size, - ) - + if (bindingResult.hasErrors()) { + throw RuntimeException(bindingResult.fieldErrors.joinToString { el -> el.defaultMessage.toString() }) + } + val command = request.toCommand() val storeListInfo = storeFacade.getStoreList(command) return CommonListResponse( response = storeListInfo.stores, totalCount = storeListInfo.totalCount, - size = request.size ?: 0, + size = request.size, page = request.page, statusCode = 200, msg = "음식점 목록을 조회했습니다.", diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt index b3a3ed8..6f6fb8b 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt @@ -1,7 +1,13 @@ package org.inner.circle.o2oserver.store.presentation.dto -import org.inner.circle.o2oserver.store.domain.Address + +import jakarta.validation.constraints.Max +import jakarta.validation.constraints.Min +import jakarta.validation.constraints.NotNull +import jakarta.validation.constraints.Positive import org.inner.circle.o2oserver.store.domain.review.ReviewInfo +import org.inner.circle.o2oserver.store.domain.store.command.StoreListCommand +import org.springframework.data.domain.PageRequest data class CommonResponse( val response: Any, @@ -19,22 +25,24 @@ data class CommonListResponse( ) data class StoreListRequest( - val address: AddressDTO, + @field:Positive(message = "위경도 값을 다시 확인해주세요") @Max(value = 38, message = "위경도 값을 다시 확인해주세요") + val latitude: Double, + + @field:Positive(message = "위경도 값을 다시 확인해주세요") @Max(value = 129, message = "위경도 값을 다시 확인해주세요") + val longitude: Double, val category: String?, - val page: Int = 1, + val page: Int = 0, val size: Int = 10, val keyword: String = "", -) - -data class AddressDTO( - val latitude: Double, - val longitude: Double, - val address: String, - val addressDetail: String?, - val zipCode: String, ) { - fun toDomain(): Address { - return Address(latitude, longitude, address, addressDetail, zipCode) + fun toCommand():StoreListCommand { + return StoreListCommand( + pageable = PageRequest.of(page, size), + longitude = longitude, + latitude = latitude, + category = category, + keyword = keyword + ) } } From 4f9571b1247f179d4f6dd3ed24d39097b756b9d1 Mon Sep 17 00:00:00 2001 From: devchanki Date: Thu, 10 Oct 2024 21:10:40 +0900 Subject: [PATCH 2/5] formatting --- .../repository/OrderRepository.kt | 1 - .../presentation/dto/OrderCreateRequest.kt | 18 ------------------ .../presentation/dto/OrderReviewRequest.kt | 1 - .../store/domain/review/ReviewInfo.kt | 2 -- .../domain/store/command/StoreListCommand.kt | 2 +- .../infrastructure/client/StoreReadImpl.kt | 1 - .../store/presentation/api/StoreController.kt | 4 ++-- .../store/presentation/dto/StoreDto.kt | 8 ++------ 8 files changed, 5 insertions(+), 32 deletions(-) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/order/infrastructure/repository/OrderRepository.kt b/src/main/kotlin/org/inner/circle/o2oserver/order/infrastructure/repository/OrderRepository.kt index 43867f6..afba073 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/order/infrastructure/repository/OrderRepository.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/order/infrastructure/repository/OrderRepository.kt @@ -2,7 +2,6 @@ package org.inner.circle.o2oserver.order.infrastructure.repository import org.bson.types.ObjectId import org.springframework.data.mongodb.repository.MongoRepository -import org.springframework.data.mongodb.repository.Query import org.springframework.stereotype.Repository @Repository diff --git a/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderCreateRequest.kt b/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderCreateRequest.kt index 6699664..7df13ed 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderCreateRequest.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderCreateRequest.kt @@ -13,19 +13,14 @@ class OrderCreateRequest { data class OrderCreate( @field:NotNull(message = "스토어 ID는 필수입니다.") val storeId: Long, - @field:NotBlank(message = "스토어 이름은 필수입니다.") val storeName: String, - @field:NotEmpty(message = "메뉴는 비어 있을 수 없습니다.") val menus: List, - @field:Min(value = 0, message = "주문 금액은 0 이상이어야 합니다.") val orderPrice: Long, - @field:Pattern(regexp = "CARD", message = "주문방식은 CARD만 가능합니다.") val payment: String? = "CARD", - @field:Valid val address: AddressCreate, ) { @@ -77,16 +72,12 @@ class OrderCreateRequest { data class MenuCreate( @field:NotNull(message = "메뉴 ID는 필수입니다.") val menuId: Long, - @field:NotBlank(message = "메뉴명은 필수입니다.") val menuName: String, - @field:Min(value = 1, message = "메뉴 개수는 1 이상이어야 합니다.") val menuCount: Int, - @field:Min(value = 0, message = "메뉴 금액은 0 이상이어야 합니다.") val menuPrice: Long, - @field:NotEmpty(message = "옵션 그룹은 비어 있을 수 없습니다.") val optionGroups: List, ) @@ -94,10 +85,8 @@ class OrderCreateRequest { data class OptionGroupCreate( @field:NotNull(message = "옵션 그룹 ID는 필수입니다.") val optionGroupId: Long, - @field:NotBlank(message = "옵션 그룹 이름은 필수입니다.") val optionGroupName: String, - @field:NotEmpty(message = "옵션은 비어 있을 수 없습니다.") val options: List, ) @@ -105,10 +94,8 @@ class OrderCreateRequest { data class OptionCreate( @field:NotNull(message = "옵션 상세 ID는 필수입니다.") val optionId: Long, - @field:NotBlank(message = "옵션 상세 이름은 필수입니다.") val optionName: String, - @field:Min(value = 0, message = "옵션 가격은 0 이상이어야 합니다.") val optionPrice: Long, ) @@ -116,19 +103,14 @@ class OrderCreateRequest { data class AddressCreate( @field:NotNull(message = "주소 ID는 필수입니다.") val addressId: Long, - @field:NotBlank(message = "주소는 필수입니다.") val address: String, - @field:NotBlank(message = "상세 주소는 필수입니다.") val addressDetail: String, - @field:NotBlank(message = "우편번호는 필수입니다.") val zipCode: String, - @field:DecimalMin(value = "0.0", message = "위도는 0.0 이상이어야 합니다.") val latitude: Double, - @field:DecimalMin(value = "0.0", message = "경도는 0.0 이상이어야 합니다.") val longitude: Double, ) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderReviewRequest.kt b/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderReviewRequest.kt index af374fe..9c3fd4c 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderReviewRequest.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/order/presentation/dto/OrderReviewRequest.kt @@ -9,7 +9,6 @@ class OrderReviewRequest { data class ReviewCreate( @field:NotBlank(message = "리뷰 내용은 필수입니다.") val content: String, - @field:Min(value = 0, message = "평점은 0 이상이어야 합니다.") @field:Max(value = 5, message = "평점은 5 이하이어야 합니다.") val rating: Double, diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewInfo.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewInfo.kt index cd8449e..cfca261 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewInfo.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewInfo.kt @@ -1,7 +1,5 @@ package org.inner.circle.o2oserver.store.domain.review -import java.time.LocalDateTime - class ReviewInfo( review: Review, ) { diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt index a77cada..b0f1ac6 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/store/command/StoreListCommand.kt @@ -7,5 +7,5 @@ class StoreListCommand( val latitude: Double, val category: String?, val keyword: String, - val pageable: Pageable + val pageable: Pageable, ) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt index 421f819..5aa8f30 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/StoreReadImpl.kt @@ -8,7 +8,6 @@ import org.inner.circle.o2oserver.store.domain.store.StoreListInfo import org.inner.circle.o2oserver.store.domain.store.StoreReader import org.inner.circle.o2oserver.store.domain.store.command.StoreListCommand import org.inner.circle.o2oserver.store.infrastructure.repository.mongo.MongoRepository -import org.springframework.data.domain.PageRequest import org.springframework.data.geo.Distance import org.springframework.data.geo.Metrics import org.springframework.data.geo.Point diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt index a54b408..5e7991b 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt @@ -34,7 +34,7 @@ class StoreController( @PostMapping("") fun storeList( @Valid @RequestBody request: StoreListRequest, - bindingResult: BindingResult + bindingResult: BindingResult, ): CommonListResponse { if (bindingResult.hasErrors()) { throw RuntimeException(bindingResult.fieldErrors.joinToString { el -> el.defaultMessage.toString() }) @@ -61,7 +61,7 @@ class StoreController( ReviewQueryObject( storeId = storeId, page = page, - limit = size?: 10, + limit = size ?: 10, ) val reviews = reviewFacade.getStoreReviewList(queryObject) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt index 6f6fb8b..8aea208 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt @@ -1,9 +1,6 @@ package org.inner.circle.o2oserver.store.presentation.dto - import jakarta.validation.constraints.Max -import jakarta.validation.constraints.Min -import jakarta.validation.constraints.NotNull import jakarta.validation.constraints.Positive import org.inner.circle.o2oserver.store.domain.review.ReviewInfo import org.inner.circle.o2oserver.store.domain.store.command.StoreListCommand @@ -27,7 +24,6 @@ data class CommonListResponse( data class StoreListRequest( @field:Positive(message = "위경도 값을 다시 확인해주세요") @Max(value = 38, message = "위경도 값을 다시 확인해주세요") val latitude: Double, - @field:Positive(message = "위경도 값을 다시 확인해주세요") @Max(value = 129, message = "위경도 값을 다시 확인해주세요") val longitude: Double, val category: String?, @@ -35,13 +31,13 @@ data class StoreListRequest( val size: Int = 10, val keyword: String = "", ) { - fun toCommand():StoreListCommand { + fun toCommand(): StoreListCommand { return StoreListCommand( pageable = PageRequest.of(page, size), longitude = longitude, latitude = latitude, category = category, - keyword = keyword + keyword = keyword, ) } } From b976e963cb29e2b5b1dc113b2f1b6f9a673b807f Mon Sep 17 00:00:00 2001 From: devchanki Date: Fri, 11 Oct 2024 00:21:31 +0900 Subject: [PATCH 3/5] Review Refactoring --- .../store/application/ReviewFacade.kt | 6 ++--- .../store/domain/review/ReviewReader.kt | 4 +++- .../store/domain/review/ReviewService.kt | 4 +++- .../store/domain/review/ReviewServiceImpl.kt | 5 ++-- .../infrastructure/client/ReviewApiClient.kt | 2 +- .../infrastructure/client/ReviewReaderImpl.kt | 6 ++--- .../store/presentation/api/StoreController.kt | 24 +++++++------------ 7 files changed, 24 insertions(+), 27 deletions(-) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/application/ReviewFacade.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/application/ReviewFacade.kt index 49fe3fd..81a734f 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/application/ReviewFacade.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/application/ReviewFacade.kt @@ -1,15 +1,15 @@ package org.inner.circle.o2oserver.store.application import org.inner.circle.o2oserver.store.domain.review.ReviewInfo -import org.inner.circle.o2oserver.store.domain.review.ReviewQueryObject import org.inner.circle.o2oserver.store.domain.review.ReviewService +import org.springframework.data.domain.Pageable import org.springframework.stereotype.Service @Service class ReviewFacade( private val reviewService: ReviewService, ) { - fun getStoreReviewList(queryObject: ReviewQueryObject): List { - return reviewService.getStoreReviewList(queryObject) + fun getStoreReviewList(storeId: Long, pageable: Pageable): List { + return reviewService.getStoreReviewList(storeId, pageable) } } diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewReader.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewReader.kt index 3e15c24..447d8fe 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewReader.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewReader.kt @@ -1,5 +1,7 @@ package org.inner.circle.o2oserver.store.domain.review +import org.springframework.data.domain.Pageable + interface ReviewReader { - fun getStoreReviewList(queryObject: ReviewQueryObject): List + fun getStoreReviewList(storeId: Long, pageable: Pageable): List } diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewService.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewService.kt index 8fbdd0f..0494571 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewService.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewService.kt @@ -1,5 +1,7 @@ package org.inner.circle.o2oserver.store.domain.review +import org.springframework.data.domain.Pageable + interface ReviewService { - fun getStoreReviewList(queryObject: ReviewQueryObject): List + fun getStoreReviewList(storeId: Long, pageable: Pageable): List } diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewServiceImpl.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewServiceImpl.kt index 382735a..7eee9b7 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewServiceImpl.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/domain/review/ReviewServiceImpl.kt @@ -1,11 +1,12 @@ package org.inner.circle.o2oserver.store.domain.review +import org.springframework.data.domain.Pageable import org.springframework.stereotype.Service @Service class ReviewServiceImpl(private val reviewReader: ReviewReader) : ReviewService { - override fun getStoreReviewList(queryObject: ReviewQueryObject): List { - val reviews = reviewReader.getStoreReviewList(queryObject) + override fun getStoreReviewList(storeId: Long, pageable: Pageable): List { + val reviews = reviewReader.getStoreReviewList(storeId, pageable) return reviews.map { ReviewInfo(it) } } } diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewApiClient.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewApiClient.kt index 11dbe9b..8a20334 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewApiClient.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewApiClient.kt @@ -7,7 +7,7 @@ import org.springframework.stereotype.Component @Component class ReviewApiClient { - fun getStoreReviewList(storeId: Int, page: Int, size: Int): ReviewResponseDto { + fun getStoreReviewList(storeId: Long, page: Int, size: Int): ReviewResponseDto { val reviews = listOf( ReviewListResponseDto( diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewReaderImpl.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewReaderImpl.kt index 0c859e1..dbcf0e8 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewReaderImpl.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/infrastructure/client/ReviewReaderImpl.kt @@ -1,14 +1,14 @@ package org.inner.circle.o2oserver.store.infrastructure.client import org.inner.circle.o2oserver.store.domain.review.Review -import org.inner.circle.o2oserver.store.domain.review.ReviewQueryObject import org.inner.circle.o2oserver.store.domain.review.ReviewReader +import org.springframework.data.domain.Pageable import org.springframework.stereotype.Component @Component class ReviewReaderImpl(private val reviewApiClient: ReviewApiClient) : ReviewReader { - override fun getStoreReviewList(queryObject: ReviewQueryObject): List { - val response = reviewApiClient.getStoreReviewList(queryObject.storeId, queryObject.page, queryObject.limit) + override fun getStoreReviewList(storeId: Long, pageable: Pageable): List { + val response = reviewApiClient.getStoreReviewList(storeId, pageable.pageNumber, pageable.pageSize) return response.reviews.map { it.toDomain() } } } diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt index 5e7991b..38341c7 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/api/StoreController.kt @@ -3,18 +3,18 @@ package org.inner.circle.o2oserver.store.presentation.api import jakarta.validation.Valid import org.inner.circle.o2oserver.store.application.ReviewFacade import org.inner.circle.o2oserver.store.application.StoreFacade -import org.inner.circle.o2oserver.store.domain.review.ReviewQueryObject import org.inner.circle.o2oserver.store.presentation.dto.CommonListResponse import org.inner.circle.o2oserver.store.presentation.dto.CommonResponse import org.inner.circle.o2oserver.store.presentation.dto.StoreListRequest import org.inner.circle.o2oserver.store.presentation.dto.StoreReviewDTO +import org.springframework.data.domain.Pageable +import org.springframework.data.web.PageableDefault import org.springframework.validation.BindingResult import org.springframework.web.bind.annotation.GetMapping import org.springframework.web.bind.annotation.PathVariable import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestMapping -import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RestController @RestController @@ -25,7 +25,7 @@ class StoreController( ) { @GetMapping("/{storeId}") fun getStoreDetail( - @PathVariable storeId: Long, + @PathVariable @Valid storeId: Long, ): CommonResponse { val store = storeFacade.getStoreDetail(storeId) return CommonResponse(response = store, msg = "조회 되었습니다", statusCode = 200) @@ -53,18 +53,10 @@ class StoreController( @GetMapping("/{storeId}/reviews") fun getStoreDetail( - @PathVariable("storeId") storeId: Int, - @RequestParam("page") page: Int, - @RequestParam("limit") size: Int?, + @PathVariable("storeId") storeId: Long, + @PageableDefault(size = 10, page = 0) pageable: Pageable, ): CommonListResponse { - val queryObject = - ReviewQueryObject( - storeId = storeId, - page = page, - limit = size ?: 10, - ) - - val reviews = reviewFacade.getStoreReviewList(queryObject) + val reviews = reviewFacade.getStoreReviewList(storeId, pageable) return CommonListResponse( response = StoreReviewDTO( @@ -72,8 +64,8 @@ class StoreController( storeName = "임시 가게 이름", ), totalCount = 100, - size = size ?: 10, - page = page, + size = pageable.pageSize, + page = pageable.pageNumber, statusCode = 200, msg = "목록을 조회했습니다.", ) From 1824b0d898ffd822f2a2d58e5b4f548468ef6473 Mon Sep 17 00:00:00 2001 From: devchanki Date: Sat, 12 Oct 2024 09:56:48 +0900 Subject: [PATCH 4/5] =?UTF-8?q?=EC=9C=84=EB=8F=84=20=EA=B2=BD=EB=8F=84=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inner/circle/o2oserver/store/presentation/dto/StoreDto.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt index 8aea208..5a32106 100644 --- a/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt +++ b/src/main/kotlin/org/inner/circle/o2oserver/store/presentation/dto/StoreDto.kt @@ -22,9 +22,9 @@ data class CommonListResponse( ) data class StoreListRequest( - @field:Positive(message = "위경도 값을 다시 확인해주세요") @Max(value = 38, message = "위경도 값을 다시 확인해주세요") + @field:Positive(message = "위도 값을 다시 확인해주세요") @Max(value = 39, message = "위도 값을 다시 확인해주세요") val latitude: Double, - @field:Positive(message = "위경도 값을 다시 확인해주세요") @Max(value = 129, message = "위경도 값을 다시 확인해주세요") + @field:Positive(message = "경도 값을 다시 확인해주세요") @Max(value = 129, message = "경도 값을 다시 확인해주세요") val longitude: Double, val category: String?, val page: Int = 0, From 7f9e6d72f38e4dc50efb0163d3b92697877c7e14 Mon Sep 17 00:00:00 2001 From: devchanki Date: Sat, 12 Oct 2024 09:59:13 +0900 Subject: [PATCH 5/5] =?UTF-8?q?=EB=B0=B0=ED=8F=AC=20=EC=A0=84=20=EB=AF=B8?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/after-deploy.sh | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/scripts/after-deploy.sh b/scripts/after-deploy.sh index 614437b..f84bd18 100644 --- a/scripts/after-deploy.sh +++ b/scripts/after-deploy.sh @@ -3,9 +3,10 @@ REPOSITORY=/home/ec2-user cd $REPOSITORY/o2o-backend -#echo "> 🔵 Stop & Remove docker services." -#cd .. -#docker compose down +echo "> 🔵 Remove docker services." +docker system prune --all -f + + echo "> 🟢 Run new docker services." sudo docker load -i o2o-backend.tar.gz