From 49cf661b25fdc87d0d34982151d438b471f06eb4 Mon Sep 17 00:00:00 2001 From: david-parkk Date: Tue, 20 Aug 2024 03:15:30 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20onboarding=20=EB=8B=A4=EB=A5=B8?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EB=A9=94=EB=89=B4=20=EC=B6=94=EC=B2=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/menu/application/MenuService.java | 8 ++--- .../domain/menu/dao/MenuRepository.java | 27 ++++------------- .../domain/menu/dto/MenuIdentifier.java | 16 +++++++++- .../onboarding/api/OnBoardingController.java | 1 + .../application/OnBoardingService.java | 30 ++++++++++++++----- 5 files changed, 46 insertions(+), 36 deletions(-) diff --git a/src/main/java/com/ourMenu/backend/domain/menu/application/MenuService.java b/src/main/java/com/ourMenu/backend/domain/menu/application/MenuService.java index a905d42..af6b462 100644 --- a/src/main/java/com/ourMenu/backend/domain/menu/application/MenuService.java +++ b/src/main/java/com/ourMenu/backend/domain/menu/application/MenuService.java @@ -393,12 +393,8 @@ public List getAllMenusByTagName(String tag, Long userId){ @Transactional public List getAllOtherMenusByTagName(String tag, Long userId){ - String[] integers = {tag}; - int tagCount = integers.length; - Pageable pageable = PageRequest.of(0, 5); - Page menuPage = menuRepository.findingMenusByCriteria3(integers, null, 0, 999999, tagCount, pageable); - List menuList = menuPage.getContent(); - return menuList; // List 반환 + + return menuRepository.findingMenusByCriteria3(tag); } public List getAllMenusByTagNameAndUserIdNot(String tagName, Long userId) { diff --git a/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java b/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java index fa09bfe..f14cf4c 100644 --- a/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java +++ b/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java @@ -144,34 +144,17 @@ List findMenusByTagNamesInAndUserIdNotAndTagCountGreaterThanEqual( /** * 온보딩에 사용되는 쿼리 - * @param tags - * @param menuFolderId - * @param userId - * @param minPrice - * @param maxPrice - * @param tagCount - * @param pageable + * @param tag * @return */ @Query("SELECT m FROM Menu m WHERE m.id IN (" + - "SELECT MIN(m2.id) FROM Menu m2 " + + "SELECT m2.id FROM Menu m2 " + "JOIN m2.place p " + "LEFT JOIN m2.images mi " + "LEFT JOIN m2.tags mt " + "LEFT JOIN mt.tag t " + - "WHERE (:tags IS NULL OR (t.name IN :tags)) " + - "AND (:menuFolderId IS NULL OR m2.menuList.id = :menuFolderId) " + - "AND (:minPrice IS NULL OR m2.price >= :minPrice) " + - "AND (:maxPrice IS NULL OR m2.price <= :maxPrice) " + - "GROUP BY m2.groupId " + - "HAVING COUNT(DISTINCT t.name) >= :tagCount" + - ")") + "WHERE t.name IN :tag)") - Page findingMenusByCriteria3( - @Param("tags") String[] tags, // 태그 배열로 변경 - @Param("menuFolderId") Integer menuFolderId, - @Param("minPrice") Integer minPrice, - @Param("maxPrice") Integer maxPrice, - @Param("tagCount") Integer tagCount, // 태그 개수 추가 - Pageable pageable); + List findingMenusByCriteria3( + @Param("tag") String tag); } diff --git a/src/main/java/com/ourMenu/backend/domain/menu/dto/MenuIdentifier.java b/src/main/java/com/ourMenu/backend/domain/menu/dto/MenuIdentifier.java index bc247e5..acf43f6 100644 --- a/src/main/java/com/ourMenu/backend/domain/menu/dto/MenuIdentifier.java +++ b/src/main/java/com/ourMenu/backend/domain/menu/dto/MenuIdentifier.java @@ -4,11 +4,25 @@ import lombok.EqualsAndHashCode; import lombok.Getter; +import java.util.Objects; + @Getter @AllArgsConstructor -@EqualsAndHashCode public class MenuIdentifier { private Long groupId; private Long userId; + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + MenuIdentifier that = (MenuIdentifier) o; + return Objects.equals(getGroupId(), that.getGroupId()) && Objects.equals(getUserId(), that.getUserId()); + } + + @Override + public int hashCode() { + return Objects.hash(getGroupId(), getUserId()); + } } diff --git a/src/main/java/com/ourMenu/backend/domain/onboarding/api/OnBoardingController.java b/src/main/java/com/ourMenu/backend/domain/onboarding/api/OnBoardingController.java index 0fae229..b3bd6f6 100644 --- a/src/main/java/com/ourMenu/backend/domain/onboarding/api/OnBoardingController.java +++ b/src/main/java/com/ourMenu/backend/domain/onboarding/api/OnBoardingController.java @@ -55,6 +55,7 @@ public ApiResponse getQuestionRecommend(@RequestParam(val menuList.addAll(onBoardService.findOtherUserMenusByQuestionAnswer(userId, questionId, answerType)); + boundary = min(boundary, 14); if (menuList.size() > 15) { menuList = menuList.subList(0, 15); diff --git a/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java b/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java index 19765c0..3493a52 100644 --- a/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java +++ b/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java @@ -3,6 +3,7 @@ import com.ourMenu.backend.domain.menu.application.MenuService; import com.ourMenu.backend.domain.menu.dao.MenuRepository; import com.ourMenu.backend.domain.menu.domain.Menu; +import com.ourMenu.backend.domain.menu.dto.MenuIdentifier; import com.ourMenu.backend.domain.onboarding.dao.OnBoardingStateRepository; import com.ourMenu.backend.domain.onboarding.domain.AnswerType; import com.ourMenu.backend.domain.onboarding.domain.DefaultTag; @@ -69,15 +70,20 @@ public List findStoreByQuestionAnswer(Long userId, int questionId, AnswerT @Transactional public List findOtherUserMenusByQuestionAnswer(Long userId, int questionId, AnswerType answerType) { List foodStringList = Question.getAnswerFoodByIdAndAnswerType(questionId, answerType); - Map map = new HashMap<>(); + List menuList = new ArrayList<>(); for (String foodString : foodStringList) { List menus = menuRepository.findMenusByTitleContaining(foodString); - for (Menu menu : menus) { - if(menu.getUser().getId().equals(userId)) - continue; - map.put(menu.getGroupId(), menu); - } + menuList.addAll(menus); + } + + Map map = new HashMap<>(); + + for (Menu menu : menuList) { + if(menu.getUser().getId() == userId) + continue; + MenuIdentifier menuIdentifier = new MenuIdentifier(menu.getGroupId(),menu.getUser().getId()); + map.put(menuIdentifier,menu); } return map.values().stream().toList(); @@ -89,7 +95,17 @@ public List findStoreByRandomTag(Long userId, DefaultTag randomTag) { } public List findOtherStoreByRandomTag(Long userId, DefaultTag randomTag) { - return menuService.getAllOtherMenusByTagName(randomTag.getTagName(), userId); + List menuList = menuService.getAllOtherMenusByTagName(randomTag.getTagName(), userId); + Map map = new HashMap<>(); + if(Objects.equals(randomTag.getTagName(), "양식")) + System.out.println("map = " + map); + for (Menu menu : menuList) { + if(menu.getUser().getId() == userId) + continue; + MenuIdentifier menuIdentifier = new MenuIdentifier(menu.getGroupId(),menu.getUser().getId()); + map.put(menuIdentifier,menu); + } + return map.values().stream().toList(); } public List findOtherUserStoreByRandomTag(Long userId, DefaultTag randomTag){ From b9220f1102ae2d7193017a0dc2f1e25a70145db1 Mon Sep 17 00:00:00 2001 From: david-parkk Date: Tue, 20 Aug 2024 03:21:49 +0900 Subject: [PATCH 2/3] fix: build err --- .../ourMenu/backend/domain/menu/dao/MenuRepository.java | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java b/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java index 62b57fe..5f7bf95 100644 --- a/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java +++ b/src/main/java/com/ourMenu/backend/domain/menu/dao/MenuRepository.java @@ -157,14 +157,6 @@ List findMenusByTagNamesInAndUserIdNotAndTagCountGreaterThanEqual( List findingMenusByCriteria3( @Param("tag") String tag); - Page findingMenusByCriteria3( - @Param("tags") String[] tags, // 태그 배열로 변경 - @Param("menuFolderId") Integer menuFolderId, - @Param("minPrice") Integer minPrice, - @Param("maxPrice") Integer maxPrice, - @Param("tagCount") Integer tagCount, // 태그 개수 추가 - Pageable pageable); - List findOneByGroupIdAndUserId(Long groupId, Long userId); From ed019761d7ec5c3ad71877fd73d75970c371aa71 Mon Sep 17 00:00:00 2001 From: david-parkk Date: Tue, 20 Aug 2024 03:25:38 +0900 Subject: [PATCH 3/3] =?UTF-8?q?del:=20=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C?= =?UTF-8?q?=20=EC=BD=94=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/onboarding/application/OnBoardingService.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java b/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java index 3493a52..b2c94f4 100644 --- a/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java +++ b/src/main/java/com/ourMenu/backend/domain/onboarding/application/OnBoardingService.java @@ -97,8 +97,6 @@ public List findStoreByRandomTag(Long userId, DefaultTag randomTag) { public List findOtherStoreByRandomTag(Long userId, DefaultTag randomTag) { List menuList = menuService.getAllOtherMenusByTagName(randomTag.getTagName(), userId); Map map = new HashMap<>(); - if(Objects.equals(randomTag.getTagName(), "양식")) - System.out.println("map = " + map); for (Menu menu : menuList) { if(menu.getUser().getId() == userId) continue;