From 9b492a89cbad15a543ddf04314423acb9fd3c682 Mon Sep 17 00:00:00 2001 From: hyunhu24 <140373389+hyunhu24@users.noreply.github.com> Date: Mon, 4 Aug 2025 16:23:50 +0900 Subject: [PATCH] =?UTF-8?q?schedule=20=EB=A1=9C=EC=A7=81=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../schedule/dto/CalendarScheduleDto.java | 3 ++ .../springboot/schedule/dto/ScheduleDto.java | 31 +++++++++++++++++-- .../schedule/mapper/ScheduleMapper.java | 18 +++++++++-- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/springboot/schedule/dto/CalendarScheduleDto.java b/src/main/java/com/springboot/schedule/dto/CalendarScheduleDto.java index 19e50f6..e8a5fab 100644 --- a/src/main/java/com/springboot/schedule/dto/CalendarScheduleDto.java +++ b/src/main/java/com/springboot/schedule/dto/CalendarScheduleDto.java @@ -16,6 +16,9 @@ public class CalendarScheduleDto { @Schema(description = "일정이 속한 날짜", example = "2025-03-27") private LocalDate date; + @Schema(description = "모임 아이디", example = "1") + private Long groupId; + @Schema(description = "모임 이름", example = "강남역 스터디 모임") private String groupName; diff --git a/src/main/java/com/springboot/schedule/dto/ScheduleDto.java b/src/main/java/com/springboot/schedule/dto/ScheduleDto.java index be79f56..1e679a9 100644 --- a/src/main/java/com/springboot/schedule/dto/ScheduleDto.java +++ b/src/main/java/com/springboot/schedule/dto/ScheduleDto.java @@ -101,6 +101,12 @@ public static class ResponseBasic implements ScheduleResponse { @Schema(description = "일정 ID", example = "1") private Long groupScheduleId; + @Schema(description = "모임 아이디", example = "1") + private Long groupId; + + @Schema(description = "모임 이름", example = "고양이 모임") + private String groupName; + @Schema(description = "일정 이름", example = "강남역 스터디 모임") private String scheduleName; @@ -182,6 +188,12 @@ public static class ResponseRecurring implements ScheduleResponse { @Schema(description = "일정 소개글", example = "매주 월수금 헬스장에서 운동하는 모임입니다.") private String scheduleContent; + @Schema(description = "일정 시작 시간", example = "12:00") + private LocalTime startTime; + + @Schema(description = "일정 끝 시간", example = "16:00") + private LocalTime endTime; + @Schema(description = "일정 시작 날짜", example = "2025-04-01") private LocalDate startSchedule; @@ -214,11 +226,20 @@ public static class ResponseRecurring implements ScheduleResponse { @AllArgsConstructor @Builder public static class RecurringDateDto { + @Schema(description = "일정 ID", example = "1") + private Long groupScheduleId; + @Schema(description = "정기 일정 날짜", example = "2025-04-03") private LocalDate date; - @Schema(description = "정기 일정 시간", example = "10:00:00") - private LocalTime time; +// @Schema(description = "정기 일정 시간", example = "10:00:00") +// private LocalTime time; + + @Schema(description = "일정 시작 시간", example = "12:00") + private LocalTime startTime; + + @Schema(description = "일정 끝 시간", example = "16:00") + private LocalTime endTime; } //회원의 카테고리별 일정(참여중) 조회시 -> 달력에 뿌려야하므로 기간 + 상태 @@ -228,6 +249,12 @@ public static class RecurringDateDto { @AllArgsConstructor @Builder public static class CalendarResponse { + @Schema(description = "모임 아이디", example = "1") + private Long groupId; + @Schema(description = "모임 이름", example = "고양이 모임") + private String groupName; + @Schema(description = "일정 ID", example = "1") + private Long groupScheduleId; @Schema(description = "일정 시작 기간", example = "2025.04.04") private LocalDate startSchedule; @Schema(description = "일정 끝 기간", example = "2025.04.14") diff --git a/src/main/java/com/springboot/schedule/mapper/ScheduleMapper.java b/src/main/java/com/springboot/schedule/mapper/ScheduleMapper.java index 28c07c3..669b668 100644 --- a/src/main/java/com/springboot/schedule/mapper/ScheduleMapper.java +++ b/src/main/java/com/springboot/schedule/mapper/ScheduleMapper.java @@ -19,6 +19,8 @@ public interface ScheduleMapper { Schedule schedulePatchToSchedule(ScheduleDto.Patch schedulePatch); default ScheduleDto.ResponseBasic toBasicResponse(Schedule schedule) { return ScheduleDto.ResponseBasic.builder() + .groupId(schedule.getGroup().getGroupId()) + .groupName(schedule.getGroup().getGroupName()) .groupScheduleId(schedule.getScheduleId()) .scheduleName(schedule.getScheduleName()) .scheduleContent(schedule.getScheduleContent()) @@ -38,7 +40,8 @@ default ScheduleDto.ResponseRecurring toRecurringResponse(Schedule schedule) { schedule.getStartSchedule(), schedule.getEndSchedule(), schedule.getDaysOfWeek(), - schedule.getStartSchedule().toLocalTime() + schedule.getStartSchedule().toLocalTime(), + schedule.getEndSchedule().toLocalTime() ); return ScheduleDto.ResponseRecurring.builder() @@ -46,7 +49,9 @@ default ScheduleDto.ResponseRecurring toRecurringResponse(Schedule schedule) { .scheduleName(schedule.getScheduleName()) .scheduleContent(schedule.getScheduleContent()) .startSchedule(schedule.getStartSchedule().toLocalDate()) + .startTime(schedule.getStartSchedule().toLocalTime()) .endSchedule(schedule.getEndSchedule().toLocalDate()) + .endTime(schedule.getEndSchedule().toLocalTime()) .daysOfWeek(schedule.getDaysOfWeek()) .recurringDates(recurringDates) .address(schedule.getAddress()) @@ -57,16 +62,19 @@ default ScheduleDto.ResponseRecurring toRecurringResponse(Schedule schedule) { } // ✨ 반복 요일 기반 날짜 계산 - default List getRecurringDates(LocalDateTime start, LocalDateTime end, List daysOfWeek, LocalTime time) { + default List getRecurringDates(LocalDateTime start, LocalDateTime end, List daysOfWeek, LocalTime startTime, LocalTime endTime) { List result = new ArrayList<>(); LocalDate current = start.toLocalDate(); LocalDate endDate = end.toLocalDate(); + LocalTime starts = start.toLocalTime(); + LocalTime ends = end.toLocalTime(); while (!current.isAfter(endDate)) { if (daysOfWeek.contains(current.getDayOfWeek())) { result.add(ScheduleDto.RecurringDateDto.builder() .date(current) - .time(time) + .startTime(starts) + .endTime(ends) .build()); } current = current.plusDays(1); @@ -77,6 +85,7 @@ default List getRecurringDates(LocalDateTime start default CalendarScheduleDto toCalendarScheduleDto(Schedule schedule, LocalDate targetDate) { CalendarScheduleDto.CalendarScheduleDtoBuilder builder = CalendarScheduleDto.builder() .date(targetDate) + .groupId(schedule.getGroup().getGroupId()) .groupName(schedule.getGroup().getGroupName()) .scheduleName(schedule.getScheduleName()) .groupImage(schedule.getGroup().getImage()) @@ -102,6 +111,9 @@ default List getCalendarResponse(List sc .map(schedule -> { ScheduleDto.CalendarResponse.CalendarResponseBuilder builder = ScheduleDto.CalendarResponse.builder() + .groupName(schedule.getGroup().getGroupName()) + .groupId(schedule.getGroup().getGroupId()) + .groupScheduleId(schedule.getScheduleId()) .startSchedule(schedule.getStartSchedule().toLocalDate()) .endSchedule(schedule.getEndSchedule().toLocalDate()) .scheduleStatus(schedule.getScheduleStatus());