diff --git a/owner-vue/src/components/ItemOption.vue b/owner-vue/src/components/ItemOption.vue index 67e5a2b..d90314b 100644 --- a/owner-vue/src/components/ItemOption.vue +++ b/owner-vue/src/components/ItemOption.vue @@ -64,7 +64,7 @@ export default { addItemOption : function () { if(!this.data) return; - this.dialog = false + this.dialog = !this.dialog this.$emit('addItemOption',this.data,this.optionType) } } diff --git a/owner-vue/src/components/MenuItem.vue b/owner-vue/src/components/MenuItem.vue index 10f3311..aa00618 100644 --- a/owner-vue/src/components/MenuItem.vue +++ b/owner-vue/src/components/MenuItem.vue @@ -38,6 +38,7 @@ md="12" > value.id == ele) + requiredOption.push(option) + } + } + + var otherOption = [] + for (const ele of this.modalData.otherOption) { + if(isNaN(ele)) { + otherOption.push(ele) + }else{ + const option = this.modalData.otherOptionItems.find(value => value.id == ele) + otherOption.push(option) + } + } + + this.modalData.requiredOption = requiredOption + this.modalData.otherOption = otherOption + store.saveItem(method,itemData) }, addItemOption:function (itemOptionValue,type){ var item = { name:itemOptionValue, optionType:type } - if(type ==='REQUIRED') + if(type ==='REQUIRED'){ this.modalData.requiredOption.push(item) - else + this.modalData.requiredOptionItems.push(item) + } + else{ this.modalData.otherOption.push(item) + this.modalData.otherOptionItems.push(item) + } + } }, diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/repository/ItemRepositoryCustom.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/repository/ItemRepositoryCustom.java index 78796bf..9d8a59b 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/item/repository/ItemRepositoryCustom.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/repository/ItemRepositoryCustom.java @@ -24,7 +24,7 @@ public class ItemRepositoryCustom { public Optional fetchItem(Long itemId){ Item fetchItem = queryFactory.selectFrom(item) - .join(item.itemOptions, itemOption).fetchJoin() + .leftJoin(item.itemOptions, itemOption).fetchJoin() .join(item.category,category).fetchJoin() .where(item.id.eq(itemId)) .fetchOne(); 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 f7ec48c..e61b165 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 @@ -89,10 +89,23 @@ public class ItemServiceImpl implements ItemService { item.setItemNameAndPriceAndCategory(itemName,itemPrice,category); + + //item에 해당하는 itemoption 전부조회 + List byItem = itemOptionRepository.findByItem(item); + + //itemOptionDtos 없는 itemOption 전부 삭제 + byItem.forEach(itemOption -> { + boolean isDeleted = true; + for ( ItemOptionDto itemOptionDto: itemOptionDtos) { + if(itemOption.getId().equals(itemOptionDto.getId())) isDeleted = false; + } + if(isDeleted) itemOptionRepository.delete(itemOption); + }); + + //id가 없으면 저장 itemOptionDtos .forEach(itemOptionDto -> { - if(itemOptionDto.getId()!=null) return; - if (itemOptionRepository.existsById(itemOptionDto.getId())) + if(itemOptionDto.getId()==null) itemOptionRepository.save(ItemOptionDto.createItemOption(itemOptionDto, item)); }); }