diff --git a/owner-vue/src/views/Menu.vue b/owner-vue/src/views/Menu.vue
index 44398f6..2b475eb 100644
--- a/owner-vue/src/views/Menu.vue
+++ b/owner-vue/src/views/Menu.vue
@@ -9,6 +9,7 @@
:name="modalSet.words.register"
@save="itemSave"
@addItemOption="addItemOption"
+ @init="getModalData"
/>
@@ -162,7 +163,7 @@ export default {
var vm =this;
this.modalData = {
itemName : '',
- itemPrice : 0,
+ itemPrice : '',
categoryId: 0,
categoryList : [],
requiredOption : [],
@@ -190,9 +191,7 @@ export default {
responseType:'json'
})
.then(function (response) {
- console.log(response)
var item = response.data.data;
- console.log(item)
vm.modalData.itemId = item.id;
vm.modalData.itemName = item.name;
vm.modalData.itemPrice = item.price;
diff --git a/owner-vue/src/views/MenuItem.vue b/owner-vue/src/views/MenuItem.vue
index df6775e..8894259 100644
--- a/owner-vue/src/views/MenuItem.vue
+++ b/owner-vue/src/views/MenuItem.vue
@@ -27,6 +27,7 @@
>
@@ -38,6 +39,7 @@
>
@@ -49,6 +51,7 @@
itemOptions;
// == 연관관계 편의 메소드 ==//
@@ -62,9 +64,10 @@ public class Item extends BaseEntity {
category.getItems().add(this);
}
- public void setItemNameAndPrice(String name , Long price){
+ public void setItemNameAndPriceAndCategory(String name , Long price,Category category){
this.name = name;
this.price = price;
+ this.category = category;
}
// == 생성 메소드 == //
@@ -75,4 +78,12 @@ public class Item extends BaseEntity {
itemOptions.forEach(item::addItemOption);
return item;
}
+
+ public static Item createdFullItem(Category category, Store store, List itemOptions, String name , Long price) {
+ Item item = new Item();
+ item.setItemNameAndPriceAndCategory( name, price ,category);
+ item.setStore(store);
+ itemOptions.forEach(item::addItemOption);
+ return item;
+ }
}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemService.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemService.java
index 475c012..438f696 100644
--- a/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemService.java
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemService.java
@@ -14,5 +14,7 @@ public interface ItemService {
Page findItemList(Long storeId,String word, Pageable pageable);
- void putItem(Long itemId, String itemName, Long itemPrice, List itemOption);
+ void putItem(Long itemId, String itemName, Long itemPrice, Long categoryId, List itemOptionDtos);
+
+ void createItem( Long storeId, String itemName, Long itemPrice, Long categoryId, List itemOptionDtos);
}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemServiceImpl.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemServiceImpl.java
index 7433e29..cfea4ed 100644
--- a/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemServiceImpl.java
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/service/ItemServiceImpl.java
@@ -1,5 +1,7 @@
package com.justpickup.storeservice.domain.item.service;
+import com.justpickup.storeservice.domain.category.entity.Category;
+import com.justpickup.storeservice.domain.category.repository.CategoryRepository;
import com.justpickup.storeservice.domain.item.dto.ItemDto;
import com.justpickup.storeservice.domain.item.entity.Item;
import com.justpickup.storeservice.domain.item.exception.NotExistItemException;
@@ -8,6 +10,7 @@ import com.justpickup.storeservice.domain.item.repository.ItemRepositoryCustom;
import com.justpickup.storeservice.domain.itemoption.dto.ItemOptionDto;
import com.justpickup.storeservice.domain.itemoption.entity.ItemOption;
import com.justpickup.storeservice.domain.itemoption.repository.ItemOptionRepository;
+import com.justpickup.storeservice.domain.store.entity.Store;
import com.justpickup.storeservice.domain.store.repository.StoreRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -17,8 +20,8 @@ import org.springframework.data.support.PageableExecutionUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Optional;
import java.util.stream.Collectors;
@Service
@@ -28,11 +31,13 @@ import java.util.stream.Collectors;
public class ItemServiceImpl implements ItemService {
private final ItemRepository itemRepository;
- private final ItemOptionRepository itemOptionRepository;
private final ItemRepositoryCustom itemRepositoryCustom;
+ private final ItemOptionRepository itemOptionRepository;
+ private final CategoryRepository categoryRepository;
private final StoreRepository storeRepository;
+
@Override
public ItemDto findItemByItemId(Long itemId) {
Item findItem = itemRepository.findById(itemId)
@@ -52,20 +57,48 @@ public class ItemServiceImpl implements ItemService {
@Override
@Transactional
- public void putItem(Long itemId, String itemName, Long itemPrice, List itemOptionDtos) {
+ public void putItem(Long itemId,
+ String itemName,
+ Long itemPrice,
+ Long categoryId,
+ List itemOptionDtos) {
Item item = itemRepository.findById(itemId)
.orElseThrow(() -> new NotExistItemException("존재하지 않는 아이템 입니다."));
- item.setItemNameAndPrice(itemName,itemPrice);
- itemOptionDtos.stream()
- .map(itemOptionDto -> {
- if(itemOptionDto.getId()==null)
- return ItemOptionDto.createItemOption(itemOptionDto,item);
- else
- return itemOptionRepository.findById(itemOptionDto.getId())
- .orElseThrow(() -> new NotExistItemException("존재하지 않는 아이템 옵션 입니다."));
- })
- .forEach(itemOptionRepository::save);
+ Category category = categoryRepository.findById(categoryId)
+ .orElseThrow(() -> new NotExistItemException("존재하지 않는 카테고리 입니다."));
+
+ item.setItemNameAndPriceAndCategory(itemName,itemPrice,category);
+
+ itemOptionDtos
+ .forEach(itemOptionDto -> {
+ if (itemOptionRepository.existsById(itemOptionDto.getId()))
+ itemOptionRepository.save(ItemOptionDto.createItemOption(itemOptionDto, item));
+ });
+ }
+
+ @Override
+ @Transactional
+ public void createItem(Long storeId,
+ String itemName,
+ Long itemPrice,
+ Long categoryId,
+ List itemOptionDtos) {
+
+ //find Store
+ Store store = storeRepository.findById(storeId)
+ .orElseThrow(() -> new NotExistItemException("존재하지 않는 매장 입니다."));
+
+ //find Category
+ Category category = categoryRepository.findById(categoryId)
+ .orElseThrow(() -> new NotExistItemException("존재하지 않는 카테고리 입니다."));
+
+ //create Item
+ Item item = Item.createdFullItem(category,store,new ArrayList<>() ,itemName, itemPrice);
+
+ //add ItemOption
+ itemOptionDtos.forEach((itemOptionDto ->
+ itemOptionRepository.save(ItemOptionDto.createItemOption(itemOptionDto, item))));
}
}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/web/ItemController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/web/ItemController.java
index f674b76..856263e 100644
--- a/store-service/src/main/java/com/justpickup/storeservice/domain/item/web/ItemController.java
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/web/ItemController.java
@@ -14,6 +14,8 @@ import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
+import javax.validation.Valid;
+import javax.validation.constraints.NotNull;
import java.util.List;
import java.util.stream.Collectors;
@@ -131,19 +133,20 @@ public class ItemController {
}
@PutMapping("/item")
- public ResponseEntity putItem(@RequestBody ItemRequest putItemRequest){
+ public ResponseEntity putItem(@RequestBody @Valid ItemRequest itemRequest){
- List itemOption = putItemRequest.getRequiredOption().stream().map(ItemRequest.ItemOptionRequest::createItemDto).collect(Collectors.toList());
- itemOption.addAll(putItemRequest.getOtherOption().stream().map(ItemRequest.ItemOptionRequest::createItemDto).collect(Collectors.toList()));
+ List itemOption = itemRequest.getRequiredOption().stream().map(ItemRequest.ItemOptionRequest::createItemDto).collect(Collectors.toList());
+ itemOption.addAll(itemRequest.getOtherOption().stream().map(ItemRequest.ItemOptionRequest::createItemDto).collect(Collectors.toList()));
- itemService.putItem(putItemRequest.getItemId()
- , putItemRequest.getItemName()
- , putItemRequest.getItemPrice()
+ itemService.putItem(itemRequest.getItemId()
+ , itemRequest.getItemName()
+ , itemRequest.getItemPrice()
+ , itemRequest.getCategoryId()
, itemOption);
return ResponseEntity.status(HttpStatus.NO_CONTENT)
- .body(Result.createSuccessResult(null));
+ .body(Result.success());
}
@Data
@@ -152,8 +155,12 @@ public class ItemController {
@Builder
public static class ItemRequest {
private Long itemId;
+ @NotNull
private String itemName;
+ @NotNull
private Long itemPrice;
+ @NotNull
+ private Long categoryId;
private List requiredOption;
private List otherOption;
@@ -179,4 +186,24 @@ public class ItemController {
}
}
+ @PostMapping("/item")
+ public ResponseEntity createItem( @RequestBody @Valid ItemRequest itemRequest){
+
+ Long storeId = 1L;
+
+ List itemOption = itemRequest.getRequiredOption().stream().map(ItemRequest.ItemOptionRequest::createItemDto).collect(Collectors.toList());
+ itemOption.addAll(itemRequest.getOtherOption().stream().map(ItemRequest.ItemOptionRequest::createItemDto).collect(Collectors.toList()));
+
+ itemService.createItem(storeId
+ , itemRequest.getItemName()
+ , itemRequest.getItemPrice()
+ , itemRequest.getCategoryId()
+ , itemOption);
+
+
+ return ResponseEntity.status(HttpStatus.CREATED)
+ .body(Result.success());
+
+ }
+
}
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java
index f1a24aa..d3bb75a 100644
--- a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java
+++ b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/entity/ItemOption.java
@@ -26,7 +26,7 @@ public class ItemOption extends BaseEntity {
private String name;
- @ManyToOne(fetch = LAZY)
+ @ManyToOne(fetch = LAZY , cascade = CascadeType.ALL)
@JoinColumn(name = "item_id")
private Item item;
diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/dto/Result.java b/store-service/src/main/java/com/justpickup/storeservice/global/dto/Result.java
index cb2777d..73b8c47 100644
--- a/store-service/src/main/java/com/justpickup/storeservice/global/dto/Result.java
+++ b/store-service/src/main/java/com/justpickup/storeservice/global/dto/Result.java
@@ -33,4 +33,12 @@ public class Result {
.data(data)
.build();
}
+
+ public static Result success(){
+ return Result.builder()
+ .code(Code.SUCCESS)
+ .message("성공")
+ .data(null)
+ .build();
+ }
}