feat(gift): 선물 사용자 API를 추가한다
This commit is contained in:
+153
@@ -0,0 +1,153 @@
|
||||
package kr.co.vividnext.sodalive.v2.api.gift.adapter.`in`.web
|
||||
|
||||
import kr.co.vividnext.sodalive.common.ApiResponse
|
||||
import kr.co.vividnext.sodalive.common.SodaException
|
||||
import kr.co.vividnext.sodalive.member.Member
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftApplicationRequest
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftApplicationResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftCancellationResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftDeliveryConfirmationResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftDetailResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftFormOptionsResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftListResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftRecipientAddressRegistrationRequest
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftRecipientAddressRegistrationResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftReviewRequest
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftReviewResponse
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftTrackingRegistrationRequest
|
||||
import kr.co.vividnext.sodalive.v2.api.gift.dto.GiftTrackingRegistrationResponse
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftCommandService
|
||||
import kr.co.vividnext.sodalive.v2.gift.application.GiftQueryService
|
||||
import kr.co.vividnext.sodalive.v2.gift.domain.GiftListType
|
||||
import org.springframework.security.core.annotation.AuthenticationPrincipal
|
||||
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
|
||||
@RequestMapping("/api/v2/gifts")
|
||||
class GiftController(
|
||||
private val queryService: GiftQueryService,
|
||||
private val commandService: GiftCommandService
|
||||
) {
|
||||
@GetMapping("/form-options")
|
||||
fun getFormOptions() = ApiResponse.ok(GiftFormOptionsResponse.from(queryService.getFormOptions()))
|
||||
|
||||
@GetMapping
|
||||
fun getGifts(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@RequestParam(defaultValue = "ALL") type: GiftListType,
|
||||
@RequestParam(defaultValue = "0") page: Int,
|
||||
@RequestParam(defaultValue = "20") size: Int
|
||||
) = ApiResponse.ok(
|
||||
GiftListResponse.from(
|
||||
queryService.getGifts(
|
||||
memberId = member?.id ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
type = type,
|
||||
page = page,
|
||||
size = size
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@GetMapping("/{applicationNo}")
|
||||
fun getGiftDetail(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@PathVariable applicationNo: String
|
||||
) = ApiResponse.ok(
|
||||
GiftDetailResponse.from(
|
||||
queryService.getGiftDetail(
|
||||
memberId = member?.id ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
applicationNo = applicationNo
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@PostMapping
|
||||
fun registerGift(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@RequestBody request: GiftApplicationRequest
|
||||
) = ApiResponse.ok(
|
||||
GiftApplicationResponse.from(
|
||||
commandService.registerGift(
|
||||
member = member ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
command = request.toCommand()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@PostMapping("/{applicationNo}/cancel")
|
||||
fun cancelGift(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@PathVariable applicationNo: String
|
||||
) = ApiResponse.ok(
|
||||
GiftCancellationResponse.from(
|
||||
commandService.cancelGift(
|
||||
member = member ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
applicationNo = applicationNo
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@PostMapping("/{applicationNo}/tracking")
|
||||
fun registerTracking(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@PathVariable applicationNo: String,
|
||||
@RequestBody request: GiftTrackingRegistrationRequest
|
||||
) = ApiResponse.ok(
|
||||
GiftTrackingRegistrationResponse.from(
|
||||
commandService.registerTracking(
|
||||
member = member ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
applicationNo = applicationNo,
|
||||
command = request.toCommand()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@PostMapping("/{applicationNo}/recipient-address")
|
||||
fun registerRecipientAddress(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@PathVariable applicationNo: String,
|
||||
@RequestBody request: GiftRecipientAddressRegistrationRequest
|
||||
) = ApiResponse.ok(
|
||||
GiftRecipientAddressRegistrationResponse.from(
|
||||
commandService.registerRecipientAddress(
|
||||
member = member ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
applicationNo = applicationNo,
|
||||
command = request.toCommand()
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@PostMapping("/{applicationNo}/delivery-complete")
|
||||
fun confirmDelivery(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@PathVariable applicationNo: String
|
||||
) = ApiResponse.ok(
|
||||
GiftDeliveryConfirmationResponse.from(
|
||||
commandService.confirmDelivery(
|
||||
member = member ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
applicationNo = applicationNo
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@PostMapping("/{applicationNo}/review")
|
||||
fun writeReview(
|
||||
@AuthenticationPrincipal(expression = "#this == 'anonymousUser' ? null : member") member: Member?,
|
||||
@PathVariable applicationNo: String,
|
||||
@RequestBody request: GiftReviewRequest
|
||||
) = ApiResponse.ok(
|
||||
GiftReviewResponse.from(
|
||||
commandService.writeReview(
|
||||
member = member ?: throw SodaException(messageKey = "common.error.bad_credentials"),
|
||||
applicationNo = applicationNo,
|
||||
command = request.toCommand()
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user