From fe60f0043ed40c7081127069daf7ce9c1686b8d4 Mon Sep 17 00:00:00 2001 From: djdongjae Date: Wed, 5 Jun 2024 09:03:48 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EB=A9=94=EB=89=B4=20=EC=A0=84=EC=B2=B4?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=20=EC=84=9C=EB=B9=84=EC=8A=A4=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../menu/dto/response/MenuResponseDto.java | 15 ++++++++ .../service/MenuService.java | 38 +++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 src/main/java/net/skhu/tastyinventory_be/controller/menu/dto/response/MenuResponseDto.java create mode 100644 src/main/java/net/skhu/tastyinventory_be/service/MenuService.java diff --git a/src/main/java/net/skhu/tastyinventory_be/controller/menu/dto/response/MenuResponseDto.java b/src/main/java/net/skhu/tastyinventory_be/controller/menu/dto/response/MenuResponseDto.java new file mode 100644 index 0000000..ad6eb69 --- /dev/null +++ b/src/main/java/net/skhu/tastyinventory_be/controller/menu/dto/response/MenuResponseDto.java @@ -0,0 +1,15 @@ +package net.skhu.tastyinventory_be.controller.menu.dto.response; + +import net.skhu.tastyinventory_be.controller.inventory.dto.response.InventoryResponseDto; + +import java.util.List; + +public record MenuResponseDto( + String name, + String imageUrl, + List inventories +) { + public static MenuResponseDto of(String name, String imageUrl, List inventories) { + return new MenuResponseDto(name, imageUrl, inventories); + } +} diff --git a/src/main/java/net/skhu/tastyinventory_be/service/MenuService.java b/src/main/java/net/skhu/tastyinventory_be/service/MenuService.java new file mode 100644 index 0000000..ec796e8 --- /dev/null +++ b/src/main/java/net/skhu/tastyinventory_be/service/MenuService.java @@ -0,0 +1,38 @@ +package net.skhu.tastyinventory_be.service; + +import lombok.RequiredArgsConstructor; +import net.skhu.tastyinventory_be.controller.inventory.dto.response.InventoryResponseDto; +import net.skhu.tastyinventory_be.controller.menu.dto.response.MenuResponseDto; +import net.skhu.tastyinventory_be.domain.menu.Menu; +import net.skhu.tastyinventory_be.domain.menu.MenuRepository; +import net.skhu.tastyinventory_be.domain.recipe.RecipeRepository; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +@RequiredArgsConstructor +@Transactional(readOnly = true) +@Service +public class MenuService { + private final MenuRepository menuRepository; + private final RecipeRepository recipeRepository; + + public List findAll() { + List menuList = menuRepository.findAll(); + List result = new ArrayList<>(); + for (Menu menu : menuList) { + result.add(MenuResponseDto.of( + menu.getName(), + menu.getImageUrl(), + recipeRepository.findAllByMenu(menu) + .stream() + .map(recipe -> InventoryResponseDto.from(recipe.getInventory())) + .collect(Collectors.toList()) + )); + } + return result; + } +}