generated from pricelees/issue-pr-template
[#44] 매장 기능 도입 #45
@ -9,37 +9,59 @@ import org.springframework.http.ResponseEntity
|
|||||||
import org.springframework.web.bind.annotation.PathVariable
|
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.admin.infrastructure.persistence.AdminType
|
||||||
import roomescape.admin.infrastructure.persistence.Privilege
|
import roomescape.admin.infrastructure.persistence.Privilege
|
||||||
import roomescape.auth.web.support.AdminOnly
|
import roomescape.auth.web.support.AdminOnly
|
||||||
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.AuditInfo
|
||||||
import roomescape.common.dto.response.CommonApiResponse
|
import roomescape.common.dto.response.CommonApiResponse
|
||||||
import roomescape.schedule.web.*
|
import roomescape.schedule.web.*
|
||||||
import java.time.LocalDate
|
import java.time.LocalDate
|
||||||
|
|
||||||
interface ScheduleAPI {
|
interface AdminScheduleAPI {
|
||||||
|
|
||||||
@Public
|
@AdminOnly(privilege = Privilege.READ_SUMMARY)
|
||||||
@Operation(summary = "입력된 날짜에 가능한 테마 목록 조회")
|
@Operation(summary = "일정 검색", tags = ["관리자 로그인이 필요한 API"])
|
||||||
@ApiResponses(ApiResponse(responseCode = "200", description = "입력된 날짜에 가능한 테마 목록 조회", useReturnTypeSchema = true))
|
@ApiResponses(ApiResponse(responseCode = "200", useReturnTypeSchema = true))
|
||||||
fun findAvailableThemes(
|
fun searchSchedules(
|
||||||
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate
|
@PathVariable("storeId") storeId: Long,
|
||||||
): ResponseEntity<CommonApiResponse<AvailableThemeIdListResponse>>
|
@RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate?,
|
||||||
|
@RequestParam(required = false) themeId: Long?,
|
||||||
|
): ResponseEntity<CommonApiResponse<AdminScheduleSummaryListResponse>>
|
||||||
|
|
||||||
@Public
|
@AdminOnly(privilege = Privilege.READ_DETAIL)
|
||||||
@Operation(summary = "입력된 날짜, 테마에 대한 모든 시간 조회")
|
@Operation(summary = "일정 상세 조회", tags = ["관리자 로그인이 필요한 API"])
|
||||||
@ApiResponses(
|
@ApiResponses(ApiResponse(responseCode = "200", useReturnTypeSchema = true))
|
||||||
ApiResponse(
|
fun findScheduleAudit(
|
||||||
responseCode = "200",
|
@PathVariable("id") id: Long
|
||||||
description = "입력된 날짜, 테마에 대한 모든 시간 조회",
|
): ResponseEntity<CommonApiResponse<AuditInfo>>
|
||||||
useReturnTypeSchema = true
|
|
||||||
)
|
|
||||||
)
|
|
||||||
fun findAllTime(
|
|
||||||
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate,
|
|
||||||
@RequestParam("themeId") themeId: Long
|
|
||||||
): ResponseEntity<CommonApiResponse<ScheduleListByDateResponse>>
|
|
||||||
|
|
||||||
|
@AdminOnly(type = AdminType.STORE, privilege = Privilege.CREATE)
|
||||||
|
@Operation(summary = "일정 생성", tags = ["관리자 로그인이 필요한 API"])
|
||||||
|
@ApiResponses(ApiResponse(responseCode = "200", useReturnTypeSchema = true))
|
||||||
|
fun createSchedule(
|
||||||
|
@PathVariable("storeId") storeId: Long,
|
||||||
|
@Valid @RequestBody request: ScheduleCreateRequest
|
||||||
|
): ResponseEntity<CommonApiResponse<ScheduleCreateResponse>>
|
||||||
|
|
||||||
|
@AdminOnly(type = AdminType.STORE, privilege = Privilege.UPDATE)
|
||||||
|
@Operation(summary = "일정 수정", tags = ["관리자 로그인이 필요한 API"])
|
||||||
|
@ApiResponses(ApiResponse(responseCode = "200", useReturnTypeSchema = true))
|
||||||
|
fun updateSchedule(
|
||||||
|
@PathVariable("id") id: Long,
|
||||||
|
@Valid @RequestBody request: ScheduleUpdateRequest
|
||||||
|
): ResponseEntity<CommonApiResponse<Unit>>
|
||||||
|
|
||||||
|
@AdminOnly(type = AdminType.STORE, privilege = Privilege.DELETE)
|
||||||
|
@Operation(summary = "일정 삭제", tags = ["관리자 로그인이 필요한 API"])
|
||||||
|
@ApiResponses(ApiResponse(responseCode = "204", useReturnTypeSchema = true))
|
||||||
|
fun deleteSchedule(
|
||||||
|
@PathVariable("id") id: Long
|
||||||
|
): ResponseEntity<CommonApiResponse<Unit>>
|
||||||
|
}
|
||||||
|
|
||||||
|
interface UserScheduleAPI {
|
||||||
@UserOnly
|
@UserOnly
|
||||||
@Operation(summary = "일정을 Hold 상태로 변경", tags = ["로그인이 필요한 API"])
|
@Operation(summary = "일정을 Hold 상태로 변경", tags = ["로그인이 필요한 API"])
|
||||||
@ApiResponses(
|
@ApiResponses(
|
||||||
@ -52,33 +74,14 @@ interface ScheduleAPI {
|
|||||||
fun holdSchedule(
|
fun holdSchedule(
|
||||||
@PathVariable("id") id: Long
|
@PathVariable("id") id: Long
|
||||||
): ResponseEntity<CommonApiResponse<Unit>>
|
): ResponseEntity<CommonApiResponse<Unit>>
|
||||||
|
}
|
||||||
@AdminOnly(privilege = Privilege.READ_DETAIL)
|
|
||||||
@Operation(summary = "일정 상세 조회", tags = ["관리자 로그인이 필요한 API"])
|
interface PublicScheduleAPI {
|
||||||
@ApiResponses(ApiResponse(responseCode = "200", description = "감사 정보를 포함하여 일정 상세 조회", useReturnTypeSchema = true))
|
@Public
|
||||||
fun findScheduleDetail(
|
@Operation(summary = "특정 날짜 + 매장의 일정 조회")
|
||||||
@PathVariable("id") id: Long
|
@ApiResponses(ApiResponse(useReturnTypeSchema = true))
|
||||||
): ResponseEntity<CommonApiResponse<ScheduleDetailResponse>>
|
fun getStoreSchedulesByDate(
|
||||||
|
@PathVariable("storeId") storeId: Long,
|
||||||
@AdminOnly(privilege = Privilege.CREATE)
|
@RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate
|
||||||
@Operation(summary = "일정 생성", tags = ["관리자 로그인이 필요한 API"])
|
): ResponseEntity<CommonApiResponse<ScheduleWithThemeListResponse>>
|
||||||
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
||||||
fun createSchedule(
|
|
||||||
@Valid @RequestBody request: ScheduleCreateRequest
|
|
||||||
): ResponseEntity<CommonApiResponse<ScheduleCreateResponse>>
|
|
||||||
|
|
||||||
@AdminOnly(privilege = Privilege.UPDATE)
|
|
||||||
@Operation(summary = "일정 수정", tags = ["관리자 로그인이 필요한 API"])
|
|
||||||
@ApiResponses(ApiResponse(responseCode = "200", description = "성공", useReturnTypeSchema = true))
|
|
||||||
fun updateSchedule(
|
|
||||||
@PathVariable("id") id: Long,
|
|
||||||
@Valid @RequestBody request: ScheduleUpdateRequest
|
|
||||||
): ResponseEntity<CommonApiResponse<Unit>>
|
|
||||||
|
|
||||||
@AdminOnly(privilege = Privilege.DELETE)
|
|
||||||
@Operation(summary = "일정 삭제", tags = ["관리자 로그인이 필요한 API"])
|
|
||||||
@ApiResponses(ApiResponse(responseCode = "204", description = "성공", useReturnTypeSchema = true))
|
|
||||||
fun deleteSchedule(
|
|
||||||
@PathVariable("id") id: Long
|
|
||||||
): ResponseEntity<CommonApiResponse<Unit>>
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user