From c2039d217c1a8456df8411adc201b20d5aca8c22 Mon Sep 17 00:00:00 2001 From: SangWoon123 Date: Sat, 31 Aug 2024 13:50:21 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EA=B7=B8=EB=A3=B9=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EC=9D=91=EB=8B=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../response/GroupInformationResponse.java | 1 + .../group/service/GroupRoomService.java | 1 + .../planner/dto/SchedulePlannerResponse.java | 31 ++++++++++++++ .../repository/PlannerRepositoryCustom.java | 10 +++++ .../PlannerRepositoryCustomImpl.java | 42 +++++++++++++++++++ 5 files changed, 85 insertions(+) create mode 100644 src/main/java/com/tukorea/planding/domain/planner/dto/SchedulePlannerResponse.java create mode 100644 src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustom.java create mode 100644 src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustomImpl.java diff --git a/src/main/java/com/tukorea/planding/domain/group/dto/response/GroupInformationResponse.java b/src/main/java/com/tukorea/planding/domain/group/dto/response/GroupInformationResponse.java index 0cda299..98109c6 100644 --- a/src/main/java/com/tukorea/planding/domain/group/dto/response/GroupInformationResponse.java +++ b/src/main/java/com/tukorea/planding/domain/group/dto/response/GroupInformationResponse.java @@ -9,6 +9,7 @@ @Builder public record GroupInformationResponse( Long id, + String owner, String name, String groupCode, String description, diff --git a/src/main/java/com/tukorea/planding/domain/group/service/GroupRoomService.java b/src/main/java/com/tukorea/planding/domain/group/service/GroupRoomService.java index d4c2dcd..6348610 100644 --- a/src/main/java/com/tukorea/planding/domain/group/service/GroupRoomService.java +++ b/src/main/java/com/tukorea/planding/domain/group/service/GroupRoomService.java @@ -114,6 +114,7 @@ public GroupInformationResponse getGroupUsers(UserInfo userInfo, String groupCod return GroupInformationResponse.builder() .id(groupRoom.getId()) + .owner(groupRoom.getOwner()) .users(userInfoSimples) .groupCode(groupRoom.getGroupCode()) .name(groupRoom.getName()) diff --git a/src/main/java/com/tukorea/planding/domain/planner/dto/SchedulePlannerResponse.java b/src/main/java/com/tukorea/planding/domain/planner/dto/SchedulePlannerResponse.java new file mode 100644 index 0000000..192cd8f --- /dev/null +++ b/src/main/java/com/tukorea/planding/domain/planner/dto/SchedulePlannerResponse.java @@ -0,0 +1,31 @@ +package com.tukorea.planding.domain.planner.dto; + +import com.tukorea.planding.domain.notify.entity.NotificationType; +import com.tukorea.planding.domain.planner.entity.Planner; +import com.tukorea.planding.domain.schedule.entity.Schedule; +import com.tukorea.planding.domain.schedule.entity.ScheduleType; +import lombok.Builder; + +import java.util.List; +import java.util.stream.Collectors; + +@Builder +public record SchedulePlannerResponse( + List planners, + Long scheduleId, + NotificationType type, + ScheduleType scheduleType +) { + public static SchedulePlannerResponse fromEntity(List planners, Schedule schedule) { + List plannerResponses = planners.stream() + .map(PlannerResponse::fromEntity) + .collect(Collectors.toList()); + + return SchedulePlannerResponse.builder() + .planners(plannerResponses) + .scheduleId(schedule.getId()) + .type(NotificationType.PLANNER) + .scheduleType(schedule.getType()) + .build(); + } +} diff --git a/src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustom.java b/src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustom.java new file mode 100644 index 0000000..78400ae --- /dev/null +++ b/src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustom.java @@ -0,0 +1,10 @@ +package com.tukorea.planding.domain.planner.repository; + +import com.tukorea.planding.domain.planner.entity.Planner; + +import java.time.LocalDate; +import java.util.List; + +public interface PlannerRepositoryCustom { + List findPlannersByGroupCodeAndDateRange(String groupCode, LocalDate startDate, LocalDate endDate); +} diff --git a/src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustomImpl.java b/src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustomImpl.java new file mode 100644 index 0000000..67beb49 --- /dev/null +++ b/src/main/java/com/tukorea/planding/domain/planner/repository/PlannerRepositoryCustomImpl.java @@ -0,0 +1,42 @@ +package com.tukorea.planding.domain.planner.repository; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import com.tukorea.planding.domain.group.entity.QGroupRoom; +import com.tukorea.planding.domain.planner.entity.Planner; +import com.tukorea.planding.domain.schedule.entity.QGroupSchedule; +import com.tukorea.planding.domain.schedule.entity.QSchedule; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +import java.time.LocalDate; +import java.util.List; + +import static com.tukorea.planding.domain.group.entity.QGroupRoom.groupRoom; +import static com.tukorea.planding.domain.planner.entity.QPlanner.planner; +import static com.tukorea.planding.domain.schedule.entity.QGroupSchedule.groupSchedule; +import static com.tukorea.planding.domain.schedule.entity.QSchedule.schedule; + +@Repository +@RequiredArgsConstructor +public class PlannerRepositoryCustomImpl implements PlannerRepositoryCustom { + + private final JPAQueryFactory queryFactory; + + @Override + public List findPlannersByGroupCodeAndDateRange(String groupCode, LocalDate startDate, LocalDate endDate) { + QSchedule schedule = QSchedule.schedule; + QGroupSchedule groupSchedule = QGroupSchedule.groupSchedule; + QGroupRoom groupRoom = QGroupRoom.groupRoom; + + return queryFactory.selectFrom(planner) + .join(planner.schedule, schedule) + .join(schedule.groupSchedule, groupSchedule) + .join(groupSchedule.groupRoom, groupRoom) + .where( + groupRoom.groupCode.eq(groupCode) + .and(schedule.scheduleDate.between(startDate, endDate)) + ) + .groupBy(schedule.id, schedule.scheduleDate, schedule.title) // GROUP BY에 모든 비집계 열 추가 + .fetch(); + } +}