[#44] 매장 기능 도입 #45

Merged
pricelees merged 116 commits from feat/#44 into main 2025-09-20 03:15:06 +00:00
10 changed files with 27 additions and 23 deletions
Showing only changes of commit dcb4233f5d - Show all commits

View File

@ -11,7 +11,7 @@ import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestBody
import roomescape.auth.web.LoginRequest import roomescape.auth.web.LoginRequest
import roomescape.auth.web.LoginSuccessResponse import roomescape.auth.web.LoginSuccessResponse
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.auth.web.support.Public import roomescape.auth.web.support.Public
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
import roomescape.common.dto.response.CommonApiResponse import roomescape.common.dto.response.CommonApiResponse
@ -34,7 +34,7 @@ interface AuthAPI {
ApiResponse(responseCode = "200"), ApiResponse(responseCode = "200"),
) )
fun logout( fun logout(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
servletResponse: HttpServletResponse servletResponse: HttpServletResponse
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
} }

View File

@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
import roomescape.auth.business.AuthService import roomescape.auth.business.AuthService
import roomescape.auth.docs.AuthAPI import roomescape.auth.docs.AuthAPI
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
import roomescape.common.dto.response.CommonApiResponse import roomescape.common.dto.response.CommonApiResponse
@ -30,7 +30,7 @@ class AuthController(
@PostMapping("/logout") @PostMapping("/logout")
override fun logout( override fun logout(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
servletResponse: HttpServletResponse servletResponse: HttpServletResponse
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
return ResponseEntity.ok().build() return ResponseEntity.ok().build()

View File

@ -22,4 +22,8 @@ annotation class Public
@Target(AnnotationTarget.VALUE_PARAMETER) @Target(AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME) @Retention(AnnotationRetention.RUNTIME)
annotation class CurrentUser annotation class User
@Target(AnnotationTarget.VALUE_PARAMETER)
@Retention(AnnotationRetention.RUNTIME)
annotation class Admin

View File

@ -13,7 +13,7 @@ import roomescape.auth.business.AuthService
import roomescape.auth.exception.AuthErrorCode import roomescape.auth.exception.AuthErrorCode
import roomescape.auth.exception.AuthException import roomescape.auth.exception.AuthException
import roomescape.auth.infrastructure.jwt.JwtUtils import roomescape.auth.infrastructure.jwt.JwtUtils
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.auth.web.support.accessToken import roomescape.auth.web.support.accessToken
private val log: KLogger = KotlinLogging.logger {} private val log: KLogger = KotlinLogging.logger {}
@ -25,7 +25,7 @@ class CurrentUserContextResolver(
) : HandlerMethodArgumentResolver { ) : HandlerMethodArgumentResolver {
override fun supportsParameter(parameter: MethodParameter): Boolean { override fun supportsParameter(parameter: MethodParameter): Boolean {
return parameter.hasParameterAnnotation(CurrentUser::class.java) return parameter.hasParameterAnnotation(User::class.java)
} }
override fun resolveArgument( override fun resolveArgument(

View File

@ -7,7 +7,7 @@ import jakarta.validation.Valid
import org.springframework.http.ResponseEntity import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RequestParam
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.auth.web.support.UserOnly import roomescape.auth.web.support.UserOnly
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
import roomescape.common.dto.response.CommonApiResponse import roomescape.common.dto.response.CommonApiResponse
@ -29,7 +29,7 @@ interface PaymentAPI {
@Operation(summary = "결제 취소", tags = ["로그인이 필요한 API"]) @Operation(summary = "결제 취소", tags = ["로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun cancelPayment( fun cancelPayment(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
@Valid @RequestBody request: PaymentCancelRequest @Valid @RequestBody request: PaymentCancelRequest
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
} }

View File

@ -7,7 +7,7 @@ import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
import roomescape.common.dto.response.CommonApiResponse import roomescape.common.dto.response.CommonApiResponse
import roomescape.payment.business.PaymentService import roomescape.payment.business.PaymentService
@ -31,7 +31,7 @@ class PaymentController(
@PostMapping("/cancel") @PostMapping("/cancel")
override fun cancelPayment( override fun cancelPayment(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
@Valid @RequestBody request: PaymentCancelRequest @Valid @RequestBody request: PaymentCancelRequest
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
paymentService.cancel(user.id, request) paymentService.cancel(user.id, request)

View File

@ -9,7 +9,7 @@ import org.springframework.web.bind.annotation.PathVariable
import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestParam import org.springframework.web.bind.annotation.RequestParam
import roomescape.auth.web.support.Authenticated import roomescape.auth.web.support.Authenticated
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.auth.web.support.Public import roomescape.auth.web.support.Public
import roomescape.auth.web.support.UserOnly import roomescape.auth.web.support.UserOnly
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
@ -29,7 +29,7 @@ interface ReservationAPI {
@Operation(summary = "결제 대기 예약 저장", tags = ["로그인이 필요한 API"]) @Operation(summary = "결제 대기 예약 저장", tags = ["로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun createPendingReservation( fun createPendingReservation(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
@Valid @RequestBody request: PendingReservationCreateRequest @Valid @RequestBody request: PendingReservationCreateRequest
): ResponseEntity<CommonApiResponse<PendingReservationCreateResponse>> ): ResponseEntity<CommonApiResponse<PendingReservationCreateResponse>>
@ -44,7 +44,7 @@ interface ReservationAPI {
@Operation(summary = "예약 취소", tags = ["로그인이 필요한 API"]) @Operation(summary = "예약 취소", tags = ["로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun cancelReservation( fun cancelReservation(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
@PathVariable id: Long, @PathVariable id: Long,
@Valid @RequestBody request: ReservationCancelRequest @Valid @RequestBody request: ReservationCancelRequest
): ResponseEntity<CommonApiResponse<Unit>> ): ResponseEntity<CommonApiResponse<Unit>>
@ -53,7 +53,7 @@ interface ReservationAPI {
@Operation(summary = "회원별 예약 요약 목록 조회", tags = ["로그인이 필요한 API"]) @Operation(summary = "회원별 예약 요약 목록 조회", tags = ["로그인이 필요한 API"])
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true)) @ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
fun findSummaryByMemberId( fun findSummaryByMemberId(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
): ResponseEntity<CommonApiResponse<ReservationSummaryListResponse>> ): ResponseEntity<CommonApiResponse<ReservationSummaryListResponse>>
@UserOnly @UserOnly

View File

@ -3,7 +3,7 @@ package roomescape.reservation.web
import jakarta.validation.Valid import jakarta.validation.Valid
import org.springframework.http.ResponseEntity import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.* import org.springframework.web.bind.annotation.*
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
import roomescape.common.dto.response.CommonApiResponse import roomescape.common.dto.response.CommonApiResponse
import roomescape.reservation.business.ReservationService import roomescape.reservation.business.ReservationService
@ -26,7 +26,7 @@ class ReservationController(
@PostMapping("/pending") @PostMapping("/pending")
override fun createPendingReservation( override fun createPendingReservation(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
@Valid @RequestBody request: PendingReservationCreateRequest @Valid @RequestBody request: PendingReservationCreateRequest
): ResponseEntity<CommonApiResponse<PendingReservationCreateResponse>> { ): ResponseEntity<CommonApiResponse<PendingReservationCreateResponse>> {
val response = reservationService.createPendingReservation(user, request) val response = reservationService.createPendingReservation(user, request)
@ -45,7 +45,7 @@ class ReservationController(
@PostMapping("/{id}/cancel") @PostMapping("/{id}/cancel")
override fun cancelReservation( override fun cancelReservation(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
@PathVariable id: Long, @PathVariable id: Long,
@Valid @RequestBody request: ReservationCancelRequest @Valid @RequestBody request: ReservationCancelRequest
): ResponseEntity<CommonApiResponse<Unit>> { ): ResponseEntity<CommonApiResponse<Unit>> {
@ -56,7 +56,7 @@ class ReservationController(
@GetMapping("/summary") @GetMapping("/summary")
override fun findSummaryByMemberId( override fun findSummaryByMemberId(
@CurrentUser user: CurrentUserContext, @User user: CurrentUserContext,
): ResponseEntity<CommonApiResponse<ReservationSummaryListResponse>> { ): ResponseEntity<CommonApiResponse<ReservationSummaryListResponse>> {
val response = reservationService.findUserSummaryReservation(user) val response = reservationService.findUserSummaryReservation(user)

View File

@ -7,7 +7,7 @@ import io.swagger.v3.oas.annotations.tags.Tag
import jakarta.validation.Valid import jakarta.validation.Valid
import org.springframework.http.ResponseEntity import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestBody
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.auth.web.support.Public import roomescape.auth.web.support.Public
import roomescape.auth.web.support.UserOnly import roomescape.auth.web.support.UserOnly
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
@ -42,7 +42,7 @@ interface UserAPI {
) )
) )
fun findContact( fun findContact(
@CurrentUser user: CurrentUserContext @User user: CurrentUserContext
): ResponseEntity<CommonApiResponse<UserContactResponse>> ): ResponseEntity<CommonApiResponse<UserContactResponse>>
} }

View File

@ -7,7 +7,7 @@ import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController import org.springframework.web.bind.annotation.RestController
import roomescape.auth.web.support.CurrentUser import roomescape.auth.web.support.User
import roomescape.common.dto.CurrentUserContext import roomescape.common.dto.CurrentUserContext
import roomescape.common.dto.response.CommonApiResponse import roomescape.common.dto.response.CommonApiResponse
import roomescape.user.business.UserService import roomescape.user.business.UserService
@ -30,7 +30,7 @@ class UserController(
@GetMapping("/contact") @GetMapping("/contact")
override fun findContact( override fun findContact(
@CurrentUser user: CurrentUserContext @User user: CurrentUserContext
): ResponseEntity<CommonApiResponse<UserContactResponse>> { ): ResponseEntity<CommonApiResponse<UserContactResponse>> {
val response = userService.findContactById(user.id) val response = userService.findContactById(user.id)