Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
31 changes: 29 additions & 2 deletions src/main/java/com/springboot/schedule/dto/ScheduleDto.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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;

Expand Down Expand Up @@ -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;
}

//회원의 카테고리별 일정(참여중) 조회시 -> 달력에 뿌려야하므로 기간 + 상태
Expand All @@ -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")
Expand Down
18 changes: 15 additions & 3 deletions src/main/java/com/springboot/schedule/mapper/ScheduleMapper.java
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand All @@ -38,15 +40,18 @@ 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()
.groupScheduleId(schedule.getScheduleId())
.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())
Expand All @@ -57,16 +62,19 @@ default ScheduleDto.ResponseRecurring toRecurringResponse(Schedule schedule) {
}

// ✨ 반복 요일 기반 날짜 계산
default List<ScheduleDto.RecurringDateDto> getRecurringDates(LocalDateTime start, LocalDateTime end, List<DayOfWeek> daysOfWeek, LocalTime time) {
default List<ScheduleDto.RecurringDateDto> getRecurringDates(LocalDateTime start, LocalDateTime end, List<DayOfWeek> daysOfWeek, LocalTime startTime, LocalTime endTime) {
List<ScheduleDto.RecurringDateDto> 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);
Expand All @@ -77,6 +85,7 @@ default List<ScheduleDto.RecurringDateDto> 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())
Expand All @@ -102,6 +111,9 @@ default List<ScheduleDto.CalendarResponse> getCalendarResponse(List<Schedule> 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());
Expand Down