diff --git a/owner-vue/src/main.js b/owner-vue/src/main.js index 79288dd..76b1f26 100644 --- a/owner-vue/src/main.js +++ b/owner-vue/src/main.js @@ -1,4 +1,3 @@ -import 'font-awesome/css/font-awesome.min.css' // Ensure you are using css-loader import Vue from 'vue' import App from './App.vue' import vuetify from './plugins/vuetify' @@ -6,11 +5,11 @@ import router from './router' import axios from "axios"; Vue.config.productionTip = false +Vue.prototype.$axios = axios; new Vue({ vuetify, router, render: h => h(App) }).$mount('#app') -Vue.component('axios',axios) diff --git a/owner-vue/src/views/Category.vue b/owner-vue/src/views/Category.vue index 6023641..7f6900d 100644 --- a/owner-vue/src/views/Category.vue +++ b/owner-vue/src/views/Category.vue @@ -60,7 +60,6 @@ import { mdiContentSave, mdiDelete, mdiPlus, } from '@mdi/js' -import axios from "axios"; export default { name: "Category", @@ -115,7 +114,7 @@ export default { } data.categoryList.push(category) }) - axios({ + this.$axios({ method:'put', url:'/store-service/category', headers: { @@ -134,7 +133,7 @@ export default { }, getCategoryList:function(){ var vm =this; - axios({ + this.$axios({ method:'get', url:'/store-service/category', responseType:'json' diff --git a/owner-vue/src/views/Menu.vue b/owner-vue/src/views/Menu.vue index 52db3d3..16ca0f1 100644 --- a/owner-vue/src/views/Menu.vue +++ b/owner-vue/src/views/Menu.vue @@ -2,6 +2,14 @@

메뉴 관리

+ +
@@ -28,6 +36,18 @@ hide-default-footer class="elevation-1" > + + +
diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/ItemDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/ItemDto.java index 2dc323e..f5ed01a 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/ItemDto.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/item/dto/ItemDto.java @@ -2,12 +2,16 @@ package com.justpickup.storeservice.domain.item.dto; import com.justpickup.storeservice.domain.category.dto.CategoryDto; import com.justpickup.storeservice.domain.item.entity.Item; +import com.justpickup.storeservice.domain.itemoption.dto.ItemOptionDto; import com.justpickup.storeservice.global.entity.Yn; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import java.util.List; +import java.util.stream.Collectors; + @Getter @NoArgsConstructor @AllArgsConstructor @@ -24,10 +28,11 @@ public class ItemDto { private CategoryDto categoryDto; + private List itemOptions; + /* private PhotoDto photoDto; private StoreDto storeDto; - private List itemOptionDtoList; */ // == 생성 메소드 == // @@ -57,6 +62,19 @@ public class ItemDto { .build(); } + public static ItemDto createWithCategoryItemDtoAndItemOption(Item item) { + return ItemDto.builder() + .id(item.getId()) + .name(item.getName()) + .categoryDto(new CategoryDto(item.getCategory())) + .price(item.getPrice()) + .salesYn(item.getSalesYn()) + .itemOptions(item.getItemOptions() + .stream().map(ItemOptionDto::new) + .collect(Collectors.toList())) + .build(); + } + // TODO: 2022/02/03 queryDsl 쿼리 생성 시 구현 필요 // public static ItemDto createFullItemDto(Item item) { // return null 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 fe9a422..78d2ebd 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,24 +1,19 @@ package com.justpickup.storeservice.domain.item.service; -import com.justpickup.storeservice.domain.category.exception.NotFoundStoreException; import com.justpickup.storeservice.domain.item.dto.ItemDto; -import com.justpickup.storeservice.domain.item.dto.ItemSearch; import com.justpickup.storeservice.domain.item.entity.Item; import com.justpickup.storeservice.domain.item.exception.NotExistItemException; import com.justpickup.storeservice.domain.item.repository.ItemRepository; import com.justpickup.storeservice.domain.item.repository.ItemRepositoryCustom; -import com.justpickup.storeservice.domain.store.entity.Store; import com.justpickup.storeservice.domain.store.repository.StoreRepository; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.data.support.PageableExecutionUtils; -import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.List; import java.util.stream.Collectors; @Service @@ -37,7 +32,7 @@ public class ItemServiceImpl implements ItemService { Item findItem = itemRepository.findById(itemId) .orElseThrow(() -> new NotExistItemException("존재하지 않는 아이템 입니다.")); - return ItemDto.createItemDto(findItem); + return ItemDto.createWithCategoryItemDtoAndItemOption(findItem); } @Override 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 e11698a..568af7d 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 @@ -4,6 +4,9 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.justpickup.storeservice.domain.item.dto.ItemDto; import com.justpickup.storeservice.domain.item.service.ItemService; +import com.justpickup.storeservice.domain.itemoption.dto.ItemOptionDto; +import com.justpickup.storeservice.domain.itemoption.entity.ItemOption; +import com.justpickup.storeservice.domain.itemoption.entity.OptionType; import com.justpickup.storeservice.global.dto.Result; import com.justpickup.storeservice.global.entity.Yn; import lombok.AllArgsConstructor; @@ -83,8 +86,6 @@ public class ItemController { int startPage; int totalPage; } - - } @@ -103,12 +104,37 @@ public class ItemController { private String name; private Yn salesYn; private Long price; + private String CategoryName; + private List itemOptions; public GetItemResponse(ItemDto itemDto) { this.id = itemDto.getId(); this.name = itemDto.getName(); this.salesYn = itemDto.getSalesYn(); this.price = itemDto.getPrice(); + this.CategoryName = itemDto.getCategoryDto().getName(); + this.itemOptions = itemDto.getItemOptions() + .stream().map(ItemOptionResponse::new) + .collect(Collectors.toList()); + } + + @Data + static class ItemOptionResponse{ + private Long id; + + private OptionType optionType; + + private Long price; + + private String name; + + public ItemOptionResponse(ItemOptionDto itemOptionDto) { + + this.id = itemOptionDto.getId(); + this.optionType = itemOptionDto.getOptionType(); + this.price = itemOptionDto.getPrice(); + this.name = itemOptionDto.getName(); + } } } } diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/dto/ItemOptionDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/dto/ItemOptionDto.java new file mode 100644 index 0000000..e7ee14a --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/dto/ItemOptionDto.java @@ -0,0 +1,32 @@ +package com.justpickup.storeservice.domain.itemoption.dto; + +import com.justpickup.storeservice.domain.itemoption.entity.ItemOption; +import com.justpickup.storeservice.domain.itemoption.entity.OptionType; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class ItemOptionDto { + + private Long id; + + private OptionType optionType; + + private Long price; + + private String name; + + public ItemOptionDto (ItemOption itemOption){ + this.id = itemOption.getId(); + this.optionType = itemOption.getOptionType(); + this.price = itemOption.getPrice(); + this.name = itemOption.getName(); + } +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/repository/ItemOptionRepository.java b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/repository/ItemOptionRepository.java new file mode 100644 index 0000000..8b09e14 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/repository/ItemOptionRepository.java @@ -0,0 +1,12 @@ +package com.justpickup.storeservice.domain.itemoption.repository; + +import com.justpickup.storeservice.domain.item.entity.Item; +import com.justpickup.storeservice.domain.itemoption.entity.ItemOption; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +public interface ItemOptionRepository extends JpaRepository { + +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/repository/ItemOptionRepositoryCustom.java b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/repository/ItemOptionRepositoryCustom.java new file mode 100644 index 0000000..3cc1316 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/repository/ItemOptionRepositoryCustom.java @@ -0,0 +1,27 @@ +package com.justpickup.storeservice.domain.itemoption.repository; + +import com.justpickup.storeservice.domain.item.entity.Item; +import com.justpickup.storeservice.domain.item.entity.QItem; +import com.justpickup.storeservice.domain.itemoption.entity.ItemOption; +import com.justpickup.storeservice.domain.itemoption.entity.QItemOption; +import com.querydsl.jpa.impl.JPAQueryFactory; +import lombok.RequiredArgsConstructor; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +@RequiredArgsConstructor +public class ItemOptionRepositoryCustom { + + private final JPAQueryFactory queryFactory; + + public List findByItem(Long itemId) { + + return queryFactory.selectFrom(QItemOption.itemOption) + .join(QItemOption.itemOption.item) + .on(QItem.item.id.eq(itemId)) + .fetch(); + } +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/service/ItemOptionService.java b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/service/ItemOptionService.java new file mode 100644 index 0000000..0a1bad5 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/service/ItemOptionService.java @@ -0,0 +1,25 @@ +package com.justpickup.storeservice.domain.itemoption.service; + +import com.justpickup.storeservice.domain.item.dto.ItemDto; +import com.justpickup.storeservice.domain.itemoption.dto.ItemOptionDto; +import com.justpickup.storeservice.domain.itemoption.repository.ItemOptionRepository; +import com.justpickup.storeservice.domain.itemoption.repository.ItemOptionRepositoryCustom; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +@Slf4j +@RequiredArgsConstructor +public class ItemOptionService { + private final ItemOptionRepositoryCustom itemOptionRepositoryCustom; + + public List getItemOption( ItemDto itemDto){ + return itemOptionRepositoryCustom.findByItem(itemDto.getId()) + .stream().map(ItemOptionDto::new) + .collect(Collectors.toList()); + } +} diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/web/ItemOptionController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/web/ItemOptionController.java new file mode 100644 index 0000000..f278507 --- /dev/null +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/itemoption/web/ItemOptionController.java @@ -0,0 +1,12 @@ +package com.justpickup.storeservice.domain.itemoption.web; + +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +public class ItemOptionController { + + + +}