Skip to content

Commit

Permalink
feat: 메뉴 조회 기능 (#23)
Browse files Browse the repository at this point in the history
  • Loading branch information
djdongjae committed Jun 11, 2024
1 parent fc7b614 commit 622756e
Show file tree
Hide file tree
Showing 7 changed files with 116 additions and 38 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@
import lombok.extern.slf4j.Slf4j;
import net.skhu.tastyinventory_be.common.dto.BaseResponse;
import net.skhu.tastyinventory_be.controller.menu.dto.request.MenuRequestDto;
import net.skhu.tastyinventory_be.controller.menu.dto.response.MenuDetailResponseDto;
import net.skhu.tastyinventory_be.controller.menu.dto.response.MenuResponseDto;
import net.skhu.tastyinventory_be.exception.SuccessCode;
import net.skhu.tastyinventory_be.service.MenuService;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

@Slf4j
@RequiredArgsConstructor
@RequestMapping("/menu")
Expand All @@ -27,4 +31,18 @@ public BaseResponse<?> createMenu(
menuService.createMenu(image, requestDto);
return BaseResponse.success(SuccessCode.MENU_CREATE_SUCCESS);
}

@GetMapping
@ResponseStatus(HttpStatus.OK)
public BaseResponse<List<MenuResponseDto>> findAll() {
final List<MenuResponseDto> data = menuService.findAllMenu();
return BaseResponse.success(SuccessCode.GET_SUCCESS, data);
}

@GetMapping("/{id}")
@ResponseStatus(HttpStatus.OK)
public BaseResponse<MenuDetailResponseDto> findOne(@PathVariable Long id) {
final MenuDetailResponseDto data = menuService.findOneMenu(id);
return BaseResponse.success(SuccessCode.GET_SUCCESS, data);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@ public class MenuRequestDto {
@NotBlank(message = "이름을 입력하세요.")
private String name;

private List<RelatedInventoryRequestDto> relatedInventory;
private List<RelatedInventoryRequestDto> relatedInventories;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package net.skhu.tastyinventory_be.controller.menu.dto.response;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;

@Getter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class MenuDetailResponseDto{
Long menuId;
String menuName;
String menuImage;
List<RelatedInventoryResponseDto> relatedInventories;

public static MenuDetailResponseDto of(
Long menuId,
String menuName,
String menuImage,
List<RelatedInventoryResponseDto> relatedInventories
) {
return new MenuDetailResponseDto(
menuId,
menuName,
menuImage,
relatedInventories
);
}
}

Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
package net.skhu.tastyinventory_be.controller.menu.dto.response;

import net.skhu.tastyinventory_be.controller.inventory.dto.response.InventoryResponseDto;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.util.List;
@Getter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class MenuResponseDto{
Long menuId;
String menuName;
String menuImage;

public record MenuResponseDto(
String name,
String imageUrl,
List<InventoryResponseDto> inventories
) {
public static MenuResponseDto of(String name, String imageUrl, List<InventoryResponseDto> inventories) {
return new MenuResponseDto(name, imageUrl, inventories);
public static MenuResponseDto of(Long menuId, String menuName, String menuImage) {
return new MenuResponseDto(menuId, menuName, menuImage);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package net.skhu.tastyinventory_be.controller.menu.dto.response;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import net.skhu.tastyinventory_be.domain.inventory.Unit;

@Getter
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PRIVATE)
public class RelatedInventoryResponseDto {
Long inventoryId;
String inventoryName;
Long inventoryUsage;
Unit inventoryUnit;

public static RelatedInventoryResponseDto of(
Long inventoryId,
String inventoryName,
Long inventoryUsage,
Unit inventoryUnit
) {
return new RelatedInventoryResponseDto(
inventoryId,
inventoryName,
inventoryUsage,
inventoryUnit
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
@Entity
public class Recipe extends BaseEntity {
@Column(nullable = false)
private Long usage;
private Long usages;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "menu_id")
Expand All @@ -26,8 +26,8 @@ public class Recipe extends BaseEntity {
private Inventory inventory;

@Builder
public Recipe(Long usage, Menu menu, Inventory inventory) {
this.usage = usage;
public Recipe(Long usages, Menu menu, Inventory inventory) {
this.usages = usages;
this.menu = menu;
this.inventory = inventory;
}
Expand Down
42 changes: 17 additions & 25 deletions src/main/java/net/skhu/tastyinventory_be/service/MenuService.java
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
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.request.MenuRequestDto;
import net.skhu.tastyinventory_be.controller.menu.dto.response.MenuDetailResponseDto;
import net.skhu.tastyinventory_be.controller.menu.dto.response.MenuResponseDto;
import net.skhu.tastyinventory_be.controller.menu.dto.response.RelatedInventoryResponseDto;
import net.skhu.tastyinventory_be.domain.inventory.InventoryRepository;
import net.skhu.tastyinventory_be.domain.menu.Menu;
import net.skhu.tastyinventory_be.domain.menu.MenuRepository;
Expand All @@ -18,7 +19,6 @@

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

@RequiredArgsConstructor
@Transactional(readOnly = true)
Expand All @@ -37,53 +37,45 @@ public void createMenu(MultipartFile image, MenuRequestDto requestDto) {

menuRepository.save(menu);

List<Recipe> recipes = requestDto.getRelatedInventory().stream()
requestDto.getRelatedInventories().stream()
.map(
r -> Recipe.builder()
.usage(r.getInventoryUsage())
.usages(r.getInventoryUsage())
.menu(menu)
.inventory(inventoryRepository.findById(
r.getInventoryId()).orElseThrow(
() -> new NotFoundException(
ErrorCode.NOT_FOUND_INVENTORY_EXCEPTION,
ErrorCode.NOT_FOUND_INVENTORY_EXCEPTION.getMessage()))
).build()).toList();


recipes.stream().map(recipeRepository::save).close();
).build()
).forEach(recipeRepository::save);
}

public List<MenuResponseDto> findAllMenu() {
List<Menu> menuList = menuRepository.findAll();
List<MenuResponseDto> 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())));
result.add(MenuResponseDto.of(menu.getId(), menu.getName(), menu.getImageUrl()));
}
return result;
}

public MenuResponseDto findOneMenu(Long menuId) {
public MenuDetailResponseDto findOneMenu(Long menuId) {
Menu menu = menuRepository.findById(menuId).orElseThrow(
() -> new NotFoundException(
ErrorCode.NOT_FOUND_MENU_EXCEPTION,
ErrorCode.NOT_FOUND_MENU_EXCEPTION.getMessage()
));

return MenuResponseDto.of(
menu.getName(),
menu.getImageUrl(),
recipeRepository.findAllByMenu(menu).stream().map(
recipe -> InventoryResponseDto.from(
recipe.getInventory()))
.collect(Collectors.toList()));
List<RelatedInventoryResponseDto> relatedInventories = recipeRepository.findAllByMenu(menu).stream()
.map(recipe -> RelatedInventoryResponseDto.of(
recipe.getInventory().getId(),
recipe.getInventory().getName(),
recipe.getUsages(),
recipe.getInventory().getUnit()
)).toList();

return MenuDetailResponseDto.of(menu.getId(), menu.getName(), menu.getImageUrl(), relatedInventories);
}

}

0 comments on commit 622756e

Please sign in to comment.