diff --git a/src/main/java/CookSave/CookSaveback/Recipe/service/RecipeService.java b/src/main/java/CookSave/CookSaveback/Recipe/service/RecipeService.java index 5e08cff..8996267 100644 --- a/src/main/java/CookSave/CookSaveback/Recipe/service/RecipeService.java +++ b/src/main/java/CookSave/CookSaveback/Recipe/service/RecipeService.java @@ -33,26 +33,38 @@ public class RecipeService { public List getRecipeList(Member member) { List recipeList = new ArrayList<>(); + // 전체 recipe 리스트 List recipes = new ArrayList<>(); recipes = recipeRepository.findAll(); int recipeCount = recipes.size(); + // 해당 member가 보유한 ingredient 리스트 List ingredients = new ArrayList<>(); ingredients = ingredientRepository.findAllByMember(member); + // 해당 member가 보유한 ingredient에 대응되는 tag의 tagId 리스트 List tags = new ArrayList<>(); for (Ingredient ingredient : ingredients) { - tags.add(ingredient.getTag().getTagId()); + // ingredient의 tag + Tag tag = ingredient.getTag(); + if(tag != null){ + tags.add(tag.getTagId()); + } + + // 중복되는 tagId 제거 tags = tags.stream().distinct().collect(Collectors.toList()); } int tagCount = tags.size(); + // tags 중 각 recipe에 포함되는 태그의 개수 List recipeTagCount = new ArrayList<>(); + // recipeTagCount의 값들을 0으로 초기화 for (int i = 0; i < recipeCount; i++) { recipeTagCount.add(0); } + // recipeTagCount 값 구하기 for (int i = 0; i < recipeCount; i++) { for (Integer tagId : tags) { Tag tag = tagRepository.findById(tagId)