From 58c763a27e1a56a4336f118c7c5a6033ffe90d1b Mon Sep 17 00:00:00 2001 From: ri-naa Date: Mon, 7 Oct 2024 19:57:07 +0900 Subject: [PATCH 1/2] =?UTF-8?q?fix:=20=ED=99=88=20=EC=B5=9C=EA=B7=BC=20?= =?UTF-8?q?=EB=8F=99=ED=96=89=EA=B8=80=EC=97=90=EC=84=9C=20=EB=82=B4?= =?UTF-8?q?=EA=B0=80=20=EC=93=B4=20=EA=B8=80=20=EC=A0=9C=EC=99=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/repository/CompanyPostRepository.java | 7 +++++-- .../com/on/server/domain/home/application/HomeService.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java b/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java index b118cd47..2c0f936d 100644 --- a/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java +++ b/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java @@ -35,8 +35,11 @@ default List findTop4ByOrderByCreatedAtDesc() { return findAll(pageable).getContent(); } - @Query("SELECT c FROM CompanyPost c JOIN c.travelArea t WHERE t LIKE CONCAT('%', :country, '%') AND c.isRecruitCompleted = false ORDER BY c.createdAt DESC") - List findTop5ByTravelArea(@Param("country") String country, Pageable pageable); +// @Query("SELECT c FROM CompanyPost c JOIN c.travelArea t WHERE t LIKE CONCAT('%', :country, '%') AND c.isRecruitCompleted = false ORDER BY c.createdAt DESC") +// List findTop5ByTravelArea(@Param("country") String country, Pageable pageable); + + @Query("SELECT c FROM CompanyPost c JOIN c.travelArea t WHERE t LIKE CONCAT('%', :country, '%') AND c.isRecruitCompleted = false AND c.user <> :user ORDER BY c.createdAt DESC") + List findTop5ByTravelArea(@Param("country") String country, @Param("user") User user, Pageable pageable); @Query("SELECT c FROM CompanyPost c JOIN c.travelArea t WHERE t LIKE CONCAT('%', :country, '%') AND c.isRecruitCompleted = false AND c.id <> :companyPostId ORDER BY c.createdAt DESC") List findTop5ByTravelAreaLike(@Param("country") String country, @Param("companyPostId") Long companyPostId); diff --git a/src/main/java/com/on/server/domain/home/application/HomeService.java b/src/main/java/com/on/server/domain/home/application/HomeService.java index 5d4ed651..493c15d4 100644 --- a/src/main/java/com/on/server/domain/home/application/HomeService.java +++ b/src/main/java/com/on/server/domain/home/application/HomeService.java @@ -93,7 +93,7 @@ public List getCompanyBoardList(User user) { String country = user.getCountry(); - List companyPostList = companyPostRepository.findTop5ByTravelArea(country, PageRequest.of(0, 5)); + List companyPostList = companyPostRepository.findTop5ByTravelArea(country, user, PageRequest.of(0, 5)); if (companyPostList.isEmpty()) { From b7b33610ca52db99d8091a63190f6370f21c2436 Mon Sep 17 00:00:00 2001 From: ri-naa Date: Mon, 4 Nov 2024 16:14:14 +0900 Subject: [PATCH 2/2] =?UTF-8?q?docs:=20=EB=8F=99=ED=96=89=EA=B8=80=20query?= =?UTF-8?q?=20=EC=A3=BC=EC=84=9D=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/repository/CompanyPostRepository.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java b/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java index 2c0f936d..5c3ce563 100644 --- a/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java +++ b/src/main/java/com/on/server/domain/companyPost/domain/repository/CompanyPostRepository.java @@ -38,6 +38,13 @@ default List findTop4ByOrderByCreatedAtDesc() { // @Query("SELECT c FROM CompanyPost c JOIN c.travelArea t WHERE t LIKE CONCAT('%', :country, '%') AND c.isRecruitCompleted = false ORDER BY c.createdAt DESC") // List findTop5ByTravelArea(@Param("country") String country, Pageable pageable); + /** + * 사용자가 작성하지 않은 동행글 중에서, + * 특정 국가명을 포함하고 모집이 완료되지 않은 글 + * 최신순으로 정렬하여 최대 5개 가져오기 + * @param country: 검색할 국가명 + * @param user: 현재 로그인한 사용자 (사용자가 작성한 글은 제외) + */ @Query("SELECT c FROM CompanyPost c JOIN c.travelArea t WHERE t LIKE CONCAT('%', :country, '%') AND c.isRecruitCompleted = false AND c.user <> :user ORDER BY c.createdAt DESC") List findTop5ByTravelArea(@Param("country") String country, @Param("user") User user, Pageable pageable);