From 66e26389b2cee722ebb1aa66c72847cc3913add3 Mon Sep 17 00:00:00 2001 From: K Date: Wed, 21 Apr 2021 17:26:18 +0900 Subject: [PATCH 1/5] feat: ItemDetail inStock MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 재고 있음 표시 issue: #5 --- .../java/com/team10/banchan/dto/ItemDetail.java | 14 +++++++++++--- .../main/java/com/team10/banchan/model/Item.java | 7 ++++++- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/BE/src/main/java/com/team10/banchan/dto/ItemDetail.java b/BE/src/main/java/com/team10/banchan/dto/ItemDetail.java index ec71723ab..e5b4a1933 100644 --- a/BE/src/main/java/com/team10/banchan/dto/ItemDetail.java +++ b/BE/src/main/java/com/team10/banchan/dto/ItemDetail.java @@ -22,7 +22,9 @@ public class ItemDetail { private final List detailSection; private final List badges; - private ItemDetail(String topImage, List thumbImages, String title, String productDescription, String point, String deliveryInfo, String deliveryFee, String nPrices, String sPrices, List detailSection, List badges) { + private final Boolean inStock; + + private ItemDetail(String topImage, List thumbImages, String title, String productDescription, String point, String deliveryInfo, String deliveryFee, String nPrices, String sPrices, List detailSection, List badges, Boolean inStock) { this.topImage = topImage; this.thumbImages = thumbImages; this.title = title; @@ -34,14 +36,15 @@ private ItemDetail(String topImage, List thumbImages, String title, Stri this.sPrices = sPrices; this.detailSection = detailSection; this.badges = badges; + this.inStock = inStock; } public static ItemDetail of(String topImage, List thumbImages, String title, String productDescription, String point, String deliveryInfo, String deliveryFee, String nPrices, String sPrices, - List detailSection, List badges) { - return new ItemDetail(topImage, thumbImages, title, productDescription, point, deliveryInfo, deliveryFee, nPrices, sPrices, detailSection, badges); + List detailSection, List badges, Boolean inStock) { + return new ItemDetail(topImage, thumbImages, title, productDescription, point, deliveryInfo, deliveryFee, nPrices, sPrices, detailSection, badges, inStock); } @JsonProperty("top_image") @@ -99,6 +102,11 @@ public List getDetailSection() { public List getBadges() { return badges; } + + @JsonProperty("in_stock") + public Boolean getInStock() { + return inStock; + } } diff --git a/BE/src/main/java/com/team10/banchan/model/Item.java b/BE/src/main/java/com/team10/banchan/model/Item.java index 66e0c80d7..41fa2b4f6 100644 --- a/BE/src/main/java/com/team10/banchan/model/Item.java +++ b/BE/src/main/java/com/team10/banchan/model/Item.java @@ -104,7 +104,8 @@ public ItemDetail itemDetail() { prices.getnPrice(), prices.getsPrice(), detailSection(), - badge() + badge(), + inStock() ); } @@ -156,4 +157,8 @@ private List badge() { .map(Badge::getName) .collect(Collectors.toList()); } + + private Boolean inStock() { + return stock > 0; + } } From 9e50f805cd3ec5269d5ee16496d8d0db38e7e1c0 Mon Sep 17 00:00:00 2001 From: K Date: Wed, 21 Apr 2021 17:27:58 +0900 Subject: [PATCH 2/5] feat: ItemRepository findAllBySection, Category MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Section과 Category의 id를 이용하여 Item 가져오기 가능 issue: #5 --- .../java/com/team10/banchan/repository/ItemRepository.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java b/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java index a13b27507..6c7dc93ed 100644 --- a/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java +++ b/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java @@ -6,6 +6,11 @@ import java.util.List; public interface ItemRepository extends CrudRepository { + @Override List findAll(); + + List findAllBySection(Long section); + + List findAllByCategory(Long category); } From 72463a04d758d8c629b83ee4393e9027b459d259 Mon Sep 17 00:00:00 2001 From: K Date: Wed, 21 Apr 2021 17:33:42 +0900 Subject: [PATCH 3/5] feat: NotFoundException MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 404 Not Found를 위한 Exception issue: #5 --- .../com/team10/banchan/exception/NotFoundException.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 BE/src/main/java/com/team10/banchan/exception/NotFoundException.java diff --git a/BE/src/main/java/com/team10/banchan/exception/NotFoundException.java b/BE/src/main/java/com/team10/banchan/exception/NotFoundException.java new file mode 100644 index 000000000..18c908104 --- /dev/null +++ b/BE/src/main/java/com/team10/banchan/exception/NotFoundException.java @@ -0,0 +1,8 @@ +package com.team10.banchan.exception; + +public class NotFoundException extends RuntimeException { + + public NotFoundException(String message) { + super(message); + } +} From 3132a23e042e2c545505c617e0501ebd3cdb357b Mon Sep 17 00:00:00 2001 From: K Date: Wed, 21 Apr 2021 17:51:32 +0900 Subject: [PATCH 4/5] feat: ItemDetailService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ItemDetail을 위한 서비스 issue: #5 --- .../banchan/service/ItemDetailService.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 BE/src/main/java/com/team10/banchan/service/ItemDetailService.java diff --git a/BE/src/main/java/com/team10/banchan/service/ItemDetailService.java b/BE/src/main/java/com/team10/banchan/service/ItemDetailService.java new file mode 100644 index 000000000..a12afda3b --- /dev/null +++ b/BE/src/main/java/com/team10/banchan/service/ItemDetailService.java @@ -0,0 +1,32 @@ +package com.team10.banchan.service; + +import com.team10.banchan.dto.ItemDetailResponse; +import com.team10.banchan.exception.NotFoundException; +import com.team10.banchan.model.Item; +import com.team10.banchan.repository.ItemRepository; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ItemDetailService { + + private final ItemRepository itemRepository; + + public ItemDetailService(ItemRepository itemRepository) { + this.itemRepository = itemRepository; + } + + public ItemDetailResponse itemDetail(Long itemId) { + Item item = itemRepository.findById(itemId).orElseThrow(() -> new NotFoundException("존재하지 않는 반찬입니다.")); + return ItemDetailResponse.of(itemId, item.itemDetail()); + } + + public List itemDetails() { + return itemRepository.findAll().stream() + .map(item -> ItemDetailResponse.of(item.getId(), item.itemDetail())) + .collect(Collectors.toList()); + } + +} From 96a8e9a968934d7e45aefe2916b87c6432d32a67 Mon Sep 17 00:00:00 2001 From: bong6981 Date: Wed, 21 Apr 2021 18:09:05 +0900 Subject: [PATCH 5/5] feat: Add SectionService MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - SectionSerivce를 구현한다 --- .../banchan/repository/ItemRepository.java | 3 ++ .../banchan/repository/SectionRepository.java | 3 ++ .../banchan/service/SectionService.java | 40 +++++++++++++++++++ 3 files changed, 46 insertions(+) create mode 100644 BE/src/main/java/com/team10/banchan/service/SectionService.java diff --git a/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java b/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java index 6c7dc93ed..deb9b3efe 100644 --- a/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java +++ b/BE/src/main/java/com/team10/banchan/repository/ItemRepository.java @@ -4,6 +4,7 @@ import org.springframework.data.repository.CrudRepository; import java.util.List; +import java.util.Optional; public interface ItemRepository extends CrudRepository { @@ -13,4 +14,6 @@ public interface ItemRepository extends CrudRepository { List findAllBySection(Long section); List findAllByCategory(Long category); + + Optional findByIdAndSection(Long id, Long section); } diff --git a/BE/src/main/java/com/team10/banchan/repository/SectionRepository.java b/BE/src/main/java/com/team10/banchan/repository/SectionRepository.java index 25cf6338b..f184536de 100644 --- a/BE/src/main/java/com/team10/banchan/repository/SectionRepository.java +++ b/BE/src/main/java/com/team10/banchan/repository/SectionRepository.java @@ -4,8 +4,11 @@ import org.springframework.data.repository.CrudRepository; import java.util.List; +import java.util.Optional; public interface SectionRepository extends CrudRepository { @Override List
findAll(); + + Optional
findByName(String sectionName); } diff --git a/BE/src/main/java/com/team10/banchan/service/SectionService.java b/BE/src/main/java/com/team10/banchan/service/SectionService.java new file mode 100644 index 000000000..f963381c4 --- /dev/null +++ b/BE/src/main/java/com/team10/banchan/service/SectionService.java @@ -0,0 +1,40 @@ +package com.team10.banchan.service; + +import com.team10.banchan.dto.ItemDetailResponse; +import com.team10.banchan.dto.ItemSummary; +import com.team10.banchan.exception.NotFoundException; +import com.team10.banchan.model.Item; +import com.team10.banchan.model.Section; +import com.team10.banchan.repository.ItemRepository; +import com.team10.banchan.repository.SectionRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.crossstore.ChangeSetPersister; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class SectionService { + + private final SectionRepository sectionRepository; + private final ItemRepository itemRepository; + + public SectionService(SectionRepository sectionRepository, ItemRepository itemRepository) { + this.sectionRepository = sectionRepository; + this.itemRepository = itemRepository; + } + + public List itemSummaries(String sectionName) { + Section section = sectionRepository.findByName(sectionName).orElseThrow(() -> new NotFoundException("존재하지 않는 섹션입니다")); + return itemRepository.findAllBySection(section.getId()).stream() + .map(Item::itemSummary) + .collect(Collectors.toList()); + } + + public ItemSummary itemSummary(String sectionName, Long itemId) { + Section section = sectionRepository.findByName(sectionName).orElseThrow(() -> new NotFoundException("존재하지 않는 섹션입니다")); + Item item = itemRepository.findByIdAndSection(itemId, section.getId()).orElseThrow(() -> new NotFoundException("존재하지 않는 아이템입니다")); + return item.itemSummary(); + } +}