diff --git a/Server/banchango/src/main/java/com/sundaegukbap/banchango/recipe/application/RecipeService.java b/Server/banchango/src/main/java/com/sundaegukbap/banchango/recipe/application/RecipeService.java index dd792f6..c50a8fa 100644 --- a/Server/banchango/src/main/java/com/sundaegukbap/banchango/recipe/application/RecipeService.java +++ b/Server/banchango/src/main/java/com/sundaegukbap/banchango/recipe/application/RecipeService.java @@ -48,22 +48,14 @@ public void changeRecipeCategory(Long userId, RecipeCategory recipeCategory) { @Transactional public void refreshRecommendedRecipes(Long userId, RecipeCategory recipeCategory) { - List containers = containerRepository.findAllByUserId(userId); - List containerIngredients = containerIngredientRepository.findByContainerIn(containers); - List ingredients = containerIngredients.stream() - .map(ContainerIngredient::getIngredient) - .collect(Collectors.toList()); + List ingredients = getIngredientsWithUser(userId); recommendedRecipeRepository.deleteAllByUserId(userId); User user = userRepository.findById(userId) .orElseThrow(() -> new NoSuchElementException("no user")); - List recommendedRecipeIds = aiRecipeRecommendClient.getRecommendedRecipesFromAI(recipeCategory, ingredients); - List recipes = new ArrayList<>(); - recommendedRecipeIds.forEach(recommendedRecipeId -> { - Optional recipe = recipeRepository.findById(recommendedRecipeId); - if(recipe.isPresent()) recipes.add(recipe.get()); - }); + List recipes = recommendedRecipesFromAI(recipeCategory, ingredients); + List recommendedRecipes = recipes.stream() .map(recipe -> UserRecommendedRecipe.builder() .user(user) @@ -72,4 +64,24 @@ public void refreshRecommendedRecipes(Long userId, RecipeCategory recipeCategory .collect(Collectors.toList()); recommendedRecipeRepository.saveAll(recommendedRecipes); } + + private List getIngredientsWithUser(Long userId) { + List containers = containerRepository.findAllByUserId(userId); + List containerIngredients = containerIngredientRepository.findByContainerIn(containers); + List ingredients = containerIngredients.stream() + .map(ContainerIngredient::getIngredient) + .collect(Collectors.toList()); + return ingredients; + } + + private List recommendedRecipesFromAI(RecipeCategory recipeCategory, List ingredients) { + List recommendedRecipeIds = aiRecipeRecommendClient.getRecommendedRecipesFromAI(recipeCategory, ingredients); + List recipes = new ArrayList<>(); + recommendedRecipeIds.forEach(recommendedRecipeId -> { + Optional recipe = recipeRepository.findById(recommendedRecipeId); + + if (recipe.isPresent()) recipes.add(recipe.get()); + }); + return recipes; + } }