feat(gift): 선물 받을 주소 관리자 API를 추가한다
This commit is contained in:
+10
@@ -5,6 +5,8 @@ import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftCategoryRequest
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftCategoryResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftDetailResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftListResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftMailboxRequest
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftMailboxResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftMarkUndeliverableRequest
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftOperationStatusResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.admin.gift.dto.AdminGiftSizePriceRequest
|
||||
@@ -45,6 +47,14 @@ class AdminGiftController(
|
||||
AdminGiftDetailResponse.from(queryService.getGiftDetail(applicationNo))
|
||||
)
|
||||
|
||||
@GetMapping("/gift-mailbox")
|
||||
fun getMailbox() = ApiResponse.ok(service.getMailbox()?.let { AdminGiftMailboxResponse.from(it) })
|
||||
|
||||
@PutMapping("/gift-mailbox")
|
||||
fun updateMailbox(@RequestBody request: AdminGiftMailboxRequest) = ApiResponse.ok(
|
||||
AdminGiftMailboxResponse.from(service.updateMailbox(request.toCommand()))
|
||||
)
|
||||
|
||||
@GetMapping("/gift-categories")
|
||||
fun getCategories() = ApiResponse.ok(service.getCategories().map { AdminGiftCategoryResponse.from(it) })
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.admin.gift.dto
|
||||
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftCategoryCommand
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftMailboxCommand
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftSizePriceCommand
|
||||
|
||||
data class AdminGiftCategoryRequest(
|
||||
@@ -35,6 +36,22 @@ data class AdminGiftSizePriceRequest(
|
||||
)
|
||||
}
|
||||
|
||||
data class AdminGiftMailboxRequest(
|
||||
val name: String,
|
||||
val phoneNumber: String,
|
||||
val zipCode: String,
|
||||
val address: String,
|
||||
val addressDetail: String?
|
||||
) {
|
||||
fun toCommand() = GiftMailboxCommand(
|
||||
name = name,
|
||||
phoneNumber = phoneNumber,
|
||||
zipCode = zipCode,
|
||||
address = address,
|
||||
addressDetail = addressDetail
|
||||
)
|
||||
}
|
||||
|
||||
data class AdminGiftMarkUndeliverableRequest(
|
||||
val reason: String
|
||||
)
|
||||
|
||||
@@ -8,6 +8,7 @@ import kr.co.vividnext.sodalive.v2.gift.application.AdminGiftListResult
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.AdminGiftMemberInfoResult
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.AdminGiftProductInfoResult
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftCategoryResult
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftMailboxResult
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftOperationStatusResult
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftSizePriceResult
|
||||
import kr.co.vividnext.sodalive.v2.gift.domain.GiftStatus
|
||||
@@ -70,6 +71,20 @@ data class AdminGiftOperationStatusResponse(
|
||||
}
|
||||
}
|
||||
|
||||
data class AdminGiftMailboxResponse(
|
||||
val name: String,
|
||||
val address: String,
|
||||
val phoneNumber: String
|
||||
) {
|
||||
companion object {
|
||||
fun from(result: GiftMailboxResult) = AdminGiftMailboxResponse(
|
||||
name = result.name,
|
||||
address = result.address,
|
||||
phoneNumber = result.phoneNumber
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
data class AdminGiftListResponse(
|
||||
val totalCount: Long,
|
||||
val items: List<AdminGiftListItemResponse>,
|
||||
|
||||
+48
@@ -59,6 +59,54 @@ class AdminGiftControllerTest @Autowired constructor(
|
||||
categoryRepository.deleteAll()
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("관리자는 받을 주소를 조회하고 저장한다")
|
||||
fun shouldManageGiftMailbox() {
|
||||
mockMvc.perform(get("/api/v2/admin/gift-mailbox").with(user("admin").roles("ADMIN")))
|
||||
.andExpect(status().isOk)
|
||||
.andExpect(jsonPath("$.success").value(true))
|
||||
.andExpect(jsonPath("$.data").isEmpty)
|
||||
|
||||
mockMvc.perform(
|
||||
put("/api/v2/admin/gift-mailbox")
|
||||
.with(user("admin").roles("ADMIN"))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content(
|
||||
"""
|
||||
{
|
||||
"name":"소다라이브 선물 담당자",
|
||||
"phoneNumber":"01012345678",
|
||||
"zipCode":"06234",
|
||||
"address":"서울시 강남구",
|
||||
"addressDetail":"3층 선물 접수처"
|
||||
}
|
||||
""".trimIndent()
|
||||
)
|
||||
)
|
||||
.andExpect(status().isOk)
|
||||
.andExpect(jsonPath("$.success").value(true))
|
||||
.andExpect(jsonPath("$.data.name").value("소다라이브 선물 담당자"))
|
||||
.andExpect(jsonPath("$.data.phoneNumber").value("01012345678"))
|
||||
.andExpect(jsonPath("$.data.address").value("(06234) 서울시 강남구, 3층 선물 접수처"))
|
||||
|
||||
mockMvc.perform(get("/api/v2/admin/gift-mailbox").with(user("admin").roles("ADMIN")))
|
||||
.andExpect(status().isOk)
|
||||
.andExpect(jsonPath("$.data.name").value("소다라이브 선물 담당자"))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("관리자는 공백 받을 주소를 저장할 수 없다")
|
||||
fun shouldRejectInvalidGiftMailbox() {
|
||||
mockMvc.perform(
|
||||
put("/api/v2/admin/gift-mailbox")
|
||||
.with(user("admin").roles("ADMIN"))
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content("""{"name":" ","phoneNumber":"01012345678","zipCode":"06234","address":"서울시 강남구"}""")
|
||||
)
|
||||
.andExpect(status().isOk)
|
||||
.andExpect(jsonPath("$.success").value(false))
|
||||
}
|
||||
|
||||
@Test
|
||||
@DisplayName("관리자는 전체 선물함 목록을 필터링해 조회한다")
|
||||
fun shouldListAdminGifts() {
|
||||
|
||||
Reference in New Issue
Block a user