From 2026ea966924ba8ec4bb04e8895472fde8739420 Mon Sep 17 00:00:00 2001 From: karryred Date: Tue, 20 Aug 2024 21:10:41 +0900 Subject: [PATCH 1/4] =?UTF-8?q?:art:=20Fix:=20=EB=AF=B8=EB=9E=98=EC=9D=98?= =?UTF-8?q?=20=EC=8A=A4=ED=84=B0=EB=94=94=EB=8F=84=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../room/repository/RoomCustomRepository.java | 2 + .../repository/RoomCustomRepositoryImpl.java | 44 ++++++++++++++++--- .../user/service/UserQueryServiceImpl.java | 17 ++++--- 3 files changed, 51 insertions(+), 12 deletions(-) diff --git a/src/main/java/gaji/service/domain/room/repository/RoomCustomRepository.java b/src/main/java/gaji/service/domain/room/repository/RoomCustomRepository.java index aecc6e6a..de9a08dd 100644 --- a/src/main/java/gaji/service/domain/room/repository/RoomCustomRepository.java +++ b/src/main/java/gaji/service/domain/room/repository/RoomCustomRepository.java @@ -9,5 +9,7 @@ public interface RoomCustomRepository { public Slice findAllOngoingRoomsByUser(User user, LocalDate cursorDate, Long cursorId, Pageable pageable); + public Slice findAllOngoingRoomsByUser(User user, Pageable pageable); public Slice findAllEndedRoomsByUser(User user, LocalDate cursorDate, Long cursorId, Pageable pageable); + public Slice findAllEndedRoomsByUser(User user, Pageable pageable); } diff --git a/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java b/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java index 857c1fde..ffdca1ce 100644 --- a/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java +++ b/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java @@ -34,7 +34,6 @@ public Slice findAllOngoingRoomsByUser(User user, LocalDate cursorDate, L .from(room) .where(room.id.in(userRoomIds) .and(room.studyEndDay.after(getCurrentDay())) - .and(room.studyStartDay.before(getCurrentDay()).or(room.studyStartDay.goe(getCurrentDay()))) // 시작일이 현재 날짜 이전이거나 이후인 경우 포함 .and(getCursorCondition(cursorDate, cursorId))) .orderBy(room.studyStartDay.desc(), room.id.asc()) .limit(pageable.getPageSize()+1) // size보다 1개 더 가져와서 다음 페이지 여부 확인 @@ -43,20 +42,33 @@ public Slice findAllOngoingRoomsByUser(User user, LocalDate cursorDate, L return checkLastPage(pageable, ongoingRooms); } + public Slice findAllOngoingRoomsByUser(User user, Pageable pageable) { + List userRoomIds = jpaQueryFactory + .select(studyMate.room.id) + .from(studyMate) + .where(studyMate.user.eq(user)) + .fetch(); - public Slice findAllEndedRoomsByUser(User user, LocalDate cursorDate, Long cursorId, Pageable pageable) { - LocalDate now = LocalDate.now(); + List ongoingRooms = jpaQueryFactory.select(room.id, room.name, room.description, room.thumbnailUrl, room.studyStartDay) + .from(room) + .where(room.id.in(userRoomIds) + .and(room.studyEndDay.after(getCurrentDay()))) + .orderBy(room.studyStartDay.desc(), room.id.asc()) + .limit(pageable.getPageSize()+1) // size보다 1개 더 가져와서 다음 페이지 여부 확인 + .fetch(); - BooleanExpression cursorCondition = (room.studyStartDay.eq(cursorDate).and(room.id.gt(cursorId))) - .or(room.studyStartDay.lt(cursorDate)); + return checkLastPage(pageable, ongoingRooms); + } + + public Slice findAllEndedRoomsByUser(User user, LocalDate cursorDate, Long cursorId, Pageable pageable) { List userRoomIds = jpaQueryFactory .select(studyMate.room.id) .from(studyMate) .where(studyMate.user.eq(user)) .fetch(); - List ongoingRooms = jpaQueryFactory.select(room.id, room.name, room.description, room.thumbnailUrl, room.studyStartDay) + List endedRooms = jpaQueryFactory.select(room.id, room.name, room.description, room.thumbnailUrl, room.studyStartDay) .from(room) .where(room.id.in(userRoomIds) .and(room.studyEndDay.before(getCurrentDay())) @@ -65,7 +77,25 @@ public Slice findAllEndedRoomsByUser(User user, LocalDate cursorDate, Lon .limit(pageable.getPageSize()+1) // size보다 1개 더 가져와서 다음 페이지 여부 확인 .fetch(); - return checkLastPage(pageable, ongoingRooms); + return checkLastPage(pageable, endedRooms); + } + + public Slice findAllEndedRoomsByUser(User user, Pageable pageable) { + List userRoomIds = jpaQueryFactory + .select(studyMate.room.id) + .from(studyMate) + .where(studyMate.user.eq(user)) + .fetch(); + + List endedRooms = jpaQueryFactory.select(room.id, room.name, room.description, room.thumbnailUrl, room.studyStartDay) + .from(room) + .where(room.id.in(userRoomIds) + .and(room.studyEndDay.before(getCurrentDay()))) + .orderBy(room.studyStartDay.desc(), room.id.asc()) + .limit(pageable.getPageSize()+1) // size보다 1개 더 가져와서 다음 페이지 여부 확인 + .fetch(); + + return checkLastPage(pageable, endedRooms); } diff --git a/src/main/java/gaji/service/domain/user/service/UserQueryServiceImpl.java b/src/main/java/gaji/service/domain/user/service/UserQueryServiceImpl.java index 9d6df1cd..07fa25d1 100644 --- a/src/main/java/gaji/service/domain/user/service/UserQueryServiceImpl.java +++ b/src/main/java/gaji/service/domain/user/service/UserQueryServiceImpl.java @@ -49,18 +49,25 @@ public Slice getUserRoomList(Long userId, LocalDate cursorDate, Long curs User user = userRepository.findById(userId) .orElseThrow(() -> new RestApiException(UserErrorStatus._USER_NOT_FOUND)); - cursorDate = cursorDate == null ? LocalDate.now() : cursorDate; - cursorId = cursorId == null ? 0 : cursorId; - PageRequest pageRequest = PageRequest.of(0, size); Slice roomList; if(type == RoomTypeEnum.ONGOING) { - roomList = roomCustomRepository.findAllOngoingRoomsByUser(user, cursorDate, cursorId, pageRequest); + if(cursorId != null || cursorDate != null) { + roomList = roomCustomRepository.findAllOngoingRoomsByUser(user, cursorDate, cursorId, pageRequest); + } + else { + roomList = roomCustomRepository.findAllOngoingRoomsByUser(user, pageRequest); + } } else{ - roomList = roomCustomRepository.findAllEndedRoomsByUser(user, cursorDate, cursorId, pageRequest); + if(cursorId != null || cursorDate != null) { + roomList = roomCustomRepository.findAllEndedRoomsByUser(user, cursorDate, cursorId, pageRequest); + } + else { + roomList = roomCustomRepository.findAllEndedRoomsByUser(user, pageRequest); + } } return roomList; From 30c97bb93405d1bef61c10184364da651d611e9b Mon Sep 17 00:00:00 2001 From: karryred Date: Wed, 21 Aug 2024 14:18:26 +0900 Subject: [PATCH 2/4] =?UTF-8?q?:bug:=20Bugfix:=20=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=9E=90=20=EC=8A=A4=ED=84=B0=EB=94=94=EB=A3=B8=20=EA=B0=80?= =?UTF-8?q?=EC=A0=B8=EC=98=A4=EA=B8=B0=20api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/room/repository/RoomCustomRepositoryImpl.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java b/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java index ffdca1ce..0a6b3a4a 100644 --- a/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java +++ b/src/main/java/gaji/service/domain/room/repository/RoomCustomRepositoryImpl.java @@ -33,7 +33,7 @@ public Slice findAllOngoingRoomsByUser(User user, LocalDate cursorDate, L List ongoingRooms = jpaQueryFactory.select(room.id, room.name, room.description, room.thumbnailUrl, room.studyStartDay) .from(room) .where(room.id.in(userRoomIds) - .and(room.studyEndDay.after(getCurrentDay())) + .and(room.studyEndDay.after(getCurrentDay().minusDays(1))) .and(getCursorCondition(cursorDate, cursorId))) .orderBy(room.studyStartDay.desc(), room.id.asc()) .limit(pageable.getPageSize()+1) // size보다 1개 더 가져와서 다음 페이지 여부 확인 @@ -52,7 +52,7 @@ public Slice findAllOngoingRoomsByUser(User user, Pageable pageable) { List ongoingRooms = jpaQueryFactory.select(room.id, room.name, room.description, room.thumbnailUrl, room.studyStartDay) .from(room) .where(room.id.in(userRoomIds) - .and(room.studyEndDay.after(getCurrentDay()))) + .and(room.studyEndDay.after(getCurrentDay().minusDays(1)))) .orderBy(room.studyStartDay.desc(), room.id.asc()) .limit(pageable.getPageSize()+1) // size보다 1개 더 가져와서 다음 페이지 여부 확인 .fetch(); From 45f16165a791f5473536d967882784fd4a5245b1 Mon Sep 17 00:00:00 2001 From: karryred Date: Wed, 21 Aug 2024 14:41:00 +0900 Subject: [PATCH 3/4] =?UTF-8?q?:art:=20Fix:=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/gaji/service/domain/roomBoard/entity/RoomBoard.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/gaji/service/domain/roomBoard/entity/RoomBoard.java b/src/main/java/gaji/service/domain/roomBoard/entity/RoomBoard.java index e7cc5539..69a9103b 100644 --- a/src/main/java/gaji/service/domain/roomBoard/entity/RoomBoard.java +++ b/src/main/java/gaji/service/domain/roomBoard/entity/RoomBoard.java @@ -26,6 +26,7 @@ public class RoomBoard { @JoinColumn(name = "room_id") private Room room; + //추후 삭제합시다. RoomPostType으로 한정된 게시판을 관리한다면 필요 없을거같습니다. private String name; @Enumerated(EnumType.STRING) From 965130418d71a1b2ed0595808079e2be176e16d1 Mon Sep 17 00:00:00 2001 From: karryred Date: Wed, 21 Aug 2024 15:12:15 +0900 Subject: [PATCH 4/4] =?UTF-8?q?:art:=20Fix:=20like=20=EC=A0=95=EB=A0=AC?= =?UTF-8?q?=EA=B8=B0=EC=A4=80=20=EB=B2=84=EA=B7=B8=20=ED=94=BD=EC=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../post/repository/CommunityPostQueryDslRepositoryImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/gaji/service/domain/post/repository/CommunityPostQueryDslRepositoryImpl.java b/src/main/java/gaji/service/domain/post/repository/CommunityPostQueryDslRepositoryImpl.java index 36deb533..743dac04 100644 --- a/src/main/java/gaji/service/domain/post/repository/CommunityPostQueryDslRepositoryImpl.java +++ b/src/main/java/gaji/service/domain/post/repository/CommunityPostQueryDslRepositoryImpl.java @@ -139,7 +139,7 @@ private Slice checkLastPage(Pageable pageable, List postList) { private OrderSpecifier orderBySortType(SortType sortTypeCond) { return switch (sortTypeCond) { case HOT -> commnuityPost.popularityScore.desc(); // HOT: 인기점수 내림차순 - case LIKE -> commnuityPost.createdAt.desc(); // LIKE: 좋아요 내림차순 + case LIKE -> commnuityPost.likeCnt.desc(); // LIKE: 좋아요 내림차순 case HIT -> commnuityPost.hit.desc(); // HIT: 조회수 내림차순 default -> commnuityPost.createdAt.desc(); // null or RECENT: 최신순(생성일자 내림차순) };