From cb9125ef1d8629e2e6accdfefd342e993093407d Mon Sep 17 00:00:00 2001 From: pricelees Date: Wed, 17 Sep 2025 10:36:38 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20ScheduleController=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=20/=20=EB=B9=84=20=EA=B4=80=EB=A6=AC?= =?UTF-8?q?=EC=9E=90=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/web/AdminScheduleController.kt | 66 ++++++++++++++++++ .../schedule/web/ScheduleController.kt | 68 +++---------------- 2 files changed, 77 insertions(+), 57 deletions(-) create mode 100644 src/main/kotlin/roomescape/schedule/web/AdminScheduleController.kt diff --git a/src/main/kotlin/roomescape/schedule/web/AdminScheduleController.kt b/src/main/kotlin/roomescape/schedule/web/AdminScheduleController.kt new file mode 100644 index 00000000..784a4245 --- /dev/null +++ b/src/main/kotlin/roomescape/schedule/web/AdminScheduleController.kt @@ -0,0 +1,66 @@ +package roomescape.schedule.web + +import jakarta.validation.Valid +import org.springframework.format.annotation.DateTimeFormat +import org.springframework.http.ResponseEntity +import org.springframework.web.bind.annotation.* +import roomescape.common.dto.AuditInfo +import roomescape.common.dto.response.CommonApiResponse +import roomescape.schedule.business.ScheduleService +import roomescape.schedule.docs.AdminScheduleAPI +import java.time.LocalDate + +@RestController +@RequestMapping("/admin") +class AdminScheduleController( + private val scheduleService: ScheduleService, +) : AdminScheduleAPI { + @GetMapping("/stores/{storeId}/schedules") + override fun searchSchedules( + @PathVariable("storeId") storeId: Long, + @RequestParam(required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate?, + @RequestParam(required = false) themeId: Long?, + ): ResponseEntity> { + val response = scheduleService.searchSchedules(storeId, date, themeId) + + return ResponseEntity.ok(CommonApiResponse(response)) + } + + @GetMapping("/schedules/{id}/audits") + override fun findScheduleAudit( + @PathVariable("id") id: Long + ): ResponseEntity> { + val response = scheduleService.findScheduleAuditOrUnknown(id) + + return ResponseEntity.ok(CommonApiResponse(response)) + } + + @PostMapping("/stores/{storeId}/schedules") + override fun createSchedule( + @PathVariable("storeId") storeId: Long, + @Valid @RequestBody request: ScheduleCreateRequest + ): ResponseEntity> { + val response = scheduleService.createSchedule(storeId, request) + + return ResponseEntity.ok(CommonApiResponse(response)) + } + + @PatchMapping("/schedules/{id}") + override fun updateSchedule( + @PathVariable("id") id: Long, + @Valid @RequestBody request: ScheduleUpdateRequest + ): ResponseEntity> { + scheduleService.updateSchedule(id, request) + + return ResponseEntity.ok(CommonApiResponse(Unit)) + } + + @DeleteMapping("/schedules/{id}") + override fun deleteSchedule( + @PathVariable("id") id: Long + ): ResponseEntity> { + scheduleService.deleteSchedule(id) + + return ResponseEntity.noContent().build() + } +} diff --git a/src/main/kotlin/roomescape/schedule/web/ScheduleController.kt b/src/main/kotlin/roomescape/schedule/web/ScheduleController.kt index 2d00a870..a57d30f4 100644 --- a/src/main/kotlin/roomescape/schedule/web/ScheduleController.kt +++ b/src/main/kotlin/roomescape/schedule/web/ScheduleController.kt @@ -1,57 +1,20 @@ package roomescape.schedule.web -import jakarta.validation.Valid import org.springframework.format.annotation.DateTimeFormat import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.* import roomescape.common.dto.response.CommonApiResponse import roomescape.schedule.business.ScheduleService -import roomescape.schedule.docs.ScheduleAPI +import roomescape.schedule.docs.PublicScheduleAPI +import roomescape.schedule.docs.UserScheduleAPI import java.time.LocalDate @RestController -@RequestMapping("/schedules") class ScheduleController( private val scheduleService: ScheduleService -) : ScheduleAPI { - @GetMapping("/themes") - override fun findAvailableThemes( - @RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate - ): ResponseEntity> { - val response = scheduleService.findThemesByDate(date) +) : UserScheduleAPI, PublicScheduleAPI { - return ResponseEntity.ok(CommonApiResponse(response)) - } - - @GetMapping - override fun findAllTime( - @RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate, - @RequestParam("themeId") themeId: Long - ): ResponseEntity> { - val response = scheduleService.findSchedules(date, themeId) - - return ResponseEntity.ok(CommonApiResponse(response)) - } - - @GetMapping("/{id}") - override fun findScheduleDetail( - @PathVariable("id") id: Long - ): ResponseEntity> { - val response = scheduleService.findDetail(id) - - return ResponseEntity.ok(CommonApiResponse(response)) - } - - @PostMapping - override fun createSchedule( - @Valid @RequestBody request: ScheduleCreateRequest - ): ResponseEntity> { - val response = scheduleService.createSchedule(request) - - return ResponseEntity.ok(CommonApiResponse(response)) - } - - @PatchMapping("/{id}/hold") + @PostMapping("/schedules/{id}/hold") override fun holdSchedule( @PathVariable("id") id: Long ): ResponseEntity> { @@ -60,22 +23,13 @@ class ScheduleController( return ResponseEntity.ok(CommonApiResponse()) } - @PatchMapping("/{id}") - override fun updateSchedule( - @PathVariable("id") id: Long, - @Valid @RequestBody request: ScheduleUpdateRequest - ): ResponseEntity> { - scheduleService.updateSchedule(id, request) + @GetMapping("/stores/{storeId}/schedules") + override fun getStoreSchedulesByDate( + @PathVariable("storeId") storeId: Long, + @RequestParam("date") @DateTimeFormat(pattern = "yyyy-MM-dd") date: LocalDate + ): ResponseEntity> { + val response = scheduleService.getStoreScheduleByDate(storeId, date) - return ResponseEntity.ok(CommonApiResponse(Unit)) - } - - @DeleteMapping("/{id}") - override fun deleteSchedule( - @PathVariable("id") id: Long - ): ResponseEntity> { - scheduleService.deleteSchedule(id) - - return ResponseEntity.noContent().build() + return ResponseEntity.ok(CommonApiResponse(response)) } }