From c7f98c351500bca4b37695bc3ce6dc4b82d83083 Mon Sep 17 00:00:00 2001 From: pricelees Date: Wed, 17 Sep 2025 10:35:01 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9D=BC=EC=A0=95=20DTO=EB=A5=BC=20?= =?UTF-8?q?=EA=B4=80=EB=A6=AC=EC=9E=90=20/=20=EB=B9=84=20=EA=B4=80?= =?UTF-8?q?=EB=A6=AC=EC=9E=90=EB=A1=9C=20=EA=B5=AC=EB=B6=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/web/AdminScheduleDto.kt | 55 ++++++++++++ .../roomescape/schedule/web/ScheduleDto.kt | 83 +++++++------------ 2 files changed, 84 insertions(+), 54 deletions(-) create mode 100644 src/main/kotlin/roomescape/schedule/web/AdminScheduleDto.kt diff --git a/src/main/kotlin/roomescape/schedule/web/AdminScheduleDto.kt b/src/main/kotlin/roomescape/schedule/web/AdminScheduleDto.kt new file mode 100644 index 00000000..a17e7abc --- /dev/null +++ b/src/main/kotlin/roomescape/schedule/web/AdminScheduleDto.kt @@ -0,0 +1,55 @@ +package roomescape.schedule.web + +import roomescape.schedule.business.domain.ScheduleWithThemeSummary +import roomescape.schedule.infrastructure.persistence.ScheduleStatus +import java.time.LocalDate +import java.time.LocalTime + +// ======================================== +// All-Admin DTO (본사 + 매장) +// ======================================== +data class AdminScheduleSummaryResponse( + val id: Long, + val themeName: String, + val startFrom: LocalTime, + val endAt: LocalTime, + val status: ScheduleStatus, +) + +fun ScheduleWithThemeSummary.toAdminSummaryResponse() = AdminScheduleSummaryResponse( + id = this.id, + themeName = this.themeName, + startFrom = this.time, + endAt = this.getEndAt(), + status = this.status +) + +data class AdminScheduleSummaryListResponse( + val schedules: List +) + +fun List.toAdminSummaryListResponse() = AdminScheduleSummaryListResponse( + this.map { it.toAdminSummaryResponse() } +) + +// ======================================== +// Store Admin DTO (매장) +// ======================================== +data class ScheduleCreateRequest( + val date: LocalDate, + val time: LocalTime, + val themeId: Long +) + +data class ScheduleCreateResponse( + val id: Long +) + +data class ScheduleUpdateRequest( + val time: LocalTime? = null, + val status: ScheduleStatus? = null +) { + fun isAllParamsNull(): Boolean { + return time == null && status == null + } +} diff --git a/src/main/kotlin/roomescape/schedule/web/ScheduleDto.kt b/src/main/kotlin/roomescape/schedule/web/ScheduleDto.kt index 18856bac..4fe174a3 100644 --- a/src/main/kotlin/roomescape/schedule/web/ScheduleDto.kt +++ b/src/main/kotlin/roomescape/schedule/web/ScheduleDto.kt @@ -1,71 +1,46 @@ package roomescape.schedule.web -import roomescape.common.dto.OperatorInfo +import roomescape.schedule.business.domain.ScheduleWithThemeSummary import roomescape.schedule.infrastructure.persistence.ScheduleEntity import roomescape.schedule.infrastructure.persistence.ScheduleStatus +import roomescape.theme.infrastructure.persistence.Difficulty import java.time.LocalDate -import java.time.LocalDateTime import java.time.LocalTime -data class AvailableThemeIdListResponse( - val themeIds: List -) - -data class ScheduleByDateResponse( +// ======================================== +// Public (인증 불필요) +// ======================================== +data class ScheduleWithThemeResponse( val id: Long, - val time: LocalTime, + val startFrom: LocalTime, + val endAt: LocalTime, + val themeId: Long, + val themeName: String, + val themeDifficulty: Difficulty, val status: ScheduleStatus ) -data class ScheduleListByDateResponse( - val schedules: List -) - -fun List.toListResponse() = ScheduleListByDateResponse( - this.map { ScheduleByDateResponse(it.id, it.time, it.status) } -) - -data class ScheduleCreateRequest( - val date: LocalDate, - val time: LocalTime, - val themeId: Long -) - -data class ScheduleCreateResponse( - val id: Long -) - -data class ScheduleUpdateRequest( - val time: LocalTime? = null, - val status: ScheduleStatus? = null -) { - fun isAllParamsNull(): Boolean { - return time == null && status == null - } -} - -data class ScheduleDetailResponse( - val id: Long, - val date: LocalDate, - val time: LocalTime, - val status: ScheduleStatus, - val createdAt: LocalDateTime, - val createdBy: OperatorInfo, - val updatedAt: LocalDateTime, - val updatedBy: OperatorInfo, -) - -fun ScheduleEntity.toDetailResponse(createdBy: OperatorInfo, updatedBy: OperatorInfo) = ScheduleDetailResponse( +fun ScheduleWithThemeSummary.toResponse() = ScheduleWithThemeResponse( id = this.id, - date = this.date, - time = this.time, - status = this.status, - createdAt = this.createdAt, - createdBy = createdBy, - updatedAt = this.updatedAt, - updatedBy = updatedBy + startFrom = this.time, + endAt = this.getEndAt(), + themeId = this.themeId, + themeName = this.themeName, + themeDifficulty = this.themeDifficulty, + status = this.status ) +data class ScheduleWithThemeListResponse( + val schedules: List +) + +fun List.toResponse() = ScheduleWithThemeListResponse( + this.map { it.toResponse() } +) + +// ======================================== +// Other-Service (API 없이 다른 서비스에서 호출) +// ======================================== data class ScheduleSummaryResponse( val date: LocalDate, val time: LocalTime,