diff --git a/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Category.java b/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Category.java index e4ae2b1da..c637a0602 100644 --- a/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Category.java +++ b/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Category.java @@ -1,4 +1,40 @@ package com.codesquad.team14.domain; +import org.springframework.data.annotation.Id; + +import java.util.HashSet; +import java.util.Set; + public class Category { + + @Id + private Long id; + + private String name; + + private final Set items = new HashSet<>(); + + public Category(String name) { + this.name = name; + } + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public Set getItems() { + return items; + } + + public void setName(String name) { + this.name = name; + } + + public void addItem(Item item) { + items.add(item); + } } diff --git a/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/DeliveryType.java b/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/DeliveryType.java index 7c2b0cf41..8e2f2de0f 100644 --- a/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/DeliveryType.java +++ b/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/DeliveryType.java @@ -1,5 +1,16 @@ package com.codesquad.team14.domain; public enum DeliveryType { - NEXT_DAY, NATIONAL_WIDE + NEXT_DAY("서울 경기 새벽배송"), + NATIONAL_WIDE("전국택배 (제주 및 도서산간 불가) [월, 화, 수, 목, 금, 토] 수령 가능한 상품입니다."); + + final private String detail; + + DeliveryType(String detail) { + this.detail = detail; + } + + public String getDetail() { + return detail; + } } diff --git a/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Item.java b/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Item.java index d6898575c..bfd6e0d24 100644 --- a/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Item.java +++ b/BE/side-dish-backend/src/main/java/com/codesquad/team14/domain/Item.java @@ -1,26 +1,31 @@ package com.codesquad.team14.domain; -import java.util.ArrayList; +import org.springframework.data.annotation.Id; + import java.util.List; +import java.util.Objects; public class Item { + private static final String DELIVERY_FEE_POLICY = "2,500원 (40,000원 이상 구매 시 무료)"; + + @Id + private Long id; - private final Long id; private String title; private String description; - private int normalPrice; - private int salePrice; + private int nPrice; + private int sPrice; private List badges; private List deliveryTypes; - private List thumbImages; - private final Long categoryId; + private String images; + private Category category; - public Item(Long id, String title, String description, int normalPrice, Long categoryId) { - this.id = id; + public Item(String title, String description, int nPrice, int sPrice, Category category) { this.title = title; this.description = description; - this.normalPrice = normalPrice; - this.categoryId = categoryId; + this.nPrice = nPrice; + this.sPrice = sPrice; + this.category = category; } public Long getId() { @@ -35,12 +40,12 @@ public String getDescription() { return description; } - public int getNormalPrice() { - return normalPrice; + public int getNPrice() { + return nPrice; } - public int getSalePrice() { - return salePrice; + public int getSPrice() { + return sPrice; } public List getBadges() { @@ -51,27 +56,27 @@ public List getDeliveryTypes() { return deliveryTypes; } - public List getThumbImages() { - return thumbImages; + public String getImages() { + return images; } - public List getPrices() { - List prices = new ArrayList<>(); - - if (normalPrice != salePrice) { - prices.add(normalPrice); - } - prices.add(salePrice); - - return prices; + public Category getCategory() { + return category; } - public int getPoint() { - return salePrice / 100; + public String getDeliveryInfo() { + StringBuilder deliverInfo = new StringBuilder(); + for (int i = 0; i < deliveryTypes.size(); i++) { + deliverInfo.append(deliveryTypes.get(i).getDetail()); + if (i != deliveryTypes.size() - 1) { + deliverInfo.append(" / "); + } + } + return deliverInfo.toString(); } - public Long getCategoryId() { - return categoryId; + public String getDeliveryFeePolicy() { + return DELIVERY_FEE_POLICY; } public void setTitle(String title) { @@ -82,12 +87,12 @@ public void setDescription(String description) { this.description = description; } - public void setNormalPrice(int normalPrice) { - this.normalPrice = normalPrice; + public void setnPrice(int nPrice) { + this.nPrice = nPrice; } - public void setSalePrice(int salePrice) { - this.salePrice = salePrice; + public void setsPrice(int sPrice) { + this.sPrice = sPrice; } public void setBadges(List badges) { @@ -98,7 +103,24 @@ public void setDeliveryTypes(List deliveryTypes) { this.deliveryTypes = deliveryTypes; } - public void setThumbImages(List thumbImages) { - this.thumbImages = thumbImages; + public void setImages(String images) { + this.images = images; + } + + public void setCategory(Category category) { + this.category = category; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + Item item = (Item) o; + return Objects.equals(id, item.id) && Objects.equals(category, item.category); + } + + @Override + public int hashCode() { + return Objects.hash(id, category); } } diff --git a/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/DetailedItemDto.java b/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/DetailedItemDto.java index 6819c1f31..3259cafd3 100644 --- a/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/DetailedItemDto.java +++ b/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/DetailedItemDto.java @@ -1,4 +1,48 @@ package com.codesquad.team14.dto; +import com.codesquad.team14.domain.Item; + +import java.util.Arrays; +import java.util.List; + public class DetailedItemDto { + + private static class Response { + private final Long id; + private final String topImage; + private final List thumbImages; + private final String description; + private final String deliveryInfo; + private final String deliveryFee; + private final int nPrice; + private final int sPrice; + private final int point; + + public Response(Long id, String topImage, List thumbImages, String description, String deliveryInfo, + String deliveryFee, int nPrice, int sPrice, int point) { + this.id = id; + this.topImage = topImage; + this.thumbImages = thumbImages; + this.description = description; + this.deliveryInfo = deliveryInfo; + this.deliveryFee = deliveryFee; + this.nPrice = nPrice; + this.sPrice = sPrice; + this.point = point; + } + + public static Response from(Item item) { + return new Response( + item.getId(), + item.getImages().split(", ")[0], + Arrays.asList(item.getImages().split(", ")), + item.getDescription(), + item.getDeliveryInfo(), + item.getDeliveryFeePolicy(), + item.getNPrice(), + item.getSPrice(), + item.getSPrice() / 100 + ); + } + } } diff --git a/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/ItemDto.java b/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/ItemDto.java index 37483a7ae..7dec61a49 100644 --- a/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/ItemDto.java +++ b/BE/side-dish-backend/src/main/java/com/codesquad/team14/dto/ItemDto.java @@ -1,17 +1,76 @@ package com.codesquad.team14.dto; +import com.codesquad.team14.domain.Badge; +import com.codesquad.team14.domain.Item; + +import java.util.List; + public class ItemDto { - private String temp; + public static class Response { + private final Long id; + private final String topImage; + private final String deliveryTypes; + private final String title; + private final String description; + private final int nPrice; + private final int sPrice; + private final List badges; - public ItemDto(String s) { - temp = s; - } + private Response(Long id, String image, String deliveryTypes, String title, + String description, int nPrice, int sPrice, List badges) { + this.id = id; + this.topImage = image; + this.deliveryTypes = deliveryTypes; + this.title = title; + this.description = description; + this.nPrice = nPrice; + this.sPrice = sPrice; + this.badges = badges; + } - public String getTemp() { - return temp; - } + public static Response from(Item item) { + return new Response( + item.getId(), + item.getImages().split(", ")[0], + item.getDeliveryTypes().toString(), + item.getTitle(), + item.getDescription(), + item.getNPrice(), + item.getSPrice(), + item.getBadges() + ); + } + + public Long getId() { + return id; + } + + public String getTopImage() { + return topImage; + } + + public String getDeliveryTypes() { + return deliveryTypes; + } + + public String getTitle() { + return title; + } + + public String getDescription() { + return description; + } + + public int getnPrice() { + return nPrice; + } + + public int getsPrice() { + return sPrice; + } - public void setTemp(String temp) { - this.temp = temp; + public List getBadges() { + return badges; + } } } diff --git a/BE/side-dish-backend/src/main/java/com/codesquad/team14/repository/CategoryRepository.java b/BE/side-dish-backend/src/main/java/com/codesquad/team14/repository/CategoryRepository.java new file mode 100644 index 000000000..c02c9de09 --- /dev/null +++ b/BE/side-dish-backend/src/main/java/com/codesquad/team14/repository/CategoryRepository.java @@ -0,0 +1,12 @@ +package com.codesquad.team14.repository; + +import com.codesquad.team14.domain.Category; +import com.codesquad.team14.domain.Item; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import java.util.List; + +@Repository +public interface CategoryRepository extends CrudRepository { +} diff --git a/BE/side-dish-backend/src/main/java/com/codesquad/team14/repository/ItemRepository.java b/BE/side-dish-backend/src/main/java/com/codesquad/team14/repository/ItemRepository.java index f2c028d46..fd7a760a0 100644 --- a/BE/side-dish-backend/src/main/java/com/codesquad/team14/repository/ItemRepository.java +++ b/BE/side-dish-backend/src/main/java/com/codesquad/team14/repository/ItemRepository.java @@ -1,29 +1,29 @@ -package com.codesquad.team14.repository; - -import com.codesquad.team14.domain.Item; -import org.springframework.stereotype.Component; - -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; - -@Component -public class ItemRepository { - private final Map items = new ConcurrentHashMap() {{ - Item item1 = new Item(1L, "[미노리키친] 규동 250g", "일본인의 소울푸드! 한국인도 좋아하는 소고기덮밥", 6500, 1L); - Item item2 = new Item(2L, "[빅마마의밥친구] 아삭 고소한 연근고기조림 250g", "편식하는 아이도 좋아하는 건강한 연근조림", 5500, 1L); - put(1L, item1); - put(2L, item2); - }}; - - public List findAllItemsByCategory(Long categoryId) { - return items.values().stream() - .filter(item -> item.getCategoryId().equals(categoryId)) - .collect(Collectors.toList()); - } - - public Item findById(Long id) { - return items.get(id); - } -} +//package com.codesquad.team14.repository; +// +//import com.codesquad.team14.domain.Item; +//import org.springframework.stereotype.Component; +// +//import java.util.List; +//import java.util.Map; +//import java.util.concurrent.ConcurrentHashMap; +//import java.util.stream.Collectors; +// +//@Component +//public class ItemRepository { +// private final Map items = new ConcurrentHashMap() {{ +// Item item1 = new Item(1L, "[미노리키친] 규동 250g", "일본인의 소울푸드! 한국인도 좋아하는 소고기덮밥", 6500, 1L); +// Item item2 = new Item(2L, "[빅마마의밥친구] 아삭 고소한 연근고기조림 250g", "편식하는 아이도 좋아하는 건강한 연근조림", 5500, 1L); +// put(1L, item1); +// put(2L, item2); +// }}; +// +// public List findAllItemsByCategory(Long categoryId) { +// return items.values().stream() +// .filter(item -> item.getCategoryId().equals(categoryId)) +// .collect(Collectors.toList()); +// } +// +// public Item findById(Long id) { +// return items.get(id); +// } +//} diff --git a/BE/side-dish-backend/src/main/resources/schema.sql b/BE/side-dish-backend/src/main/resources/schema.sql new file mode 100644 index 000000000..65e1b2839 --- /dev/null +++ b/BE/side-dish-backend/src/main/resources/schema.sql @@ -0,0 +1,6 @@ +drop table if exist item; +drop table if exist category; + +CREAT TABLE category { + id +} \ No newline at end of file diff --git a/BE/side-dish-backend/src/test/java/com/codesquad/team14/SideDishBackendApplicationTests.java b/BE/side-dish-backend/src/test/java/com/codesquad/team14/SideDishBackendApplicationTests.java index 5a0669ceb..759955971 100644 --- a/BE/side-dish-backend/src/test/java/com/codesquad/team14/SideDishBackendApplicationTests.java +++ b/BE/side-dish-backend/src/test/java/com/codesquad/team14/SideDishBackendApplicationTests.java @@ -1,13 +1,35 @@ package com.codesquad.team14; +import com.codesquad.team14.repository.CategoryRepository; import org.junit.jupiter.api.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.context.ApplicationContext; + +import static org.assertj.core.api.Assertions.*; @SpringBootTest class SideDishBackendApplicationTests { + @Autowired + private ApplicationContext ctx; + + @Autowired + private CategoryRepository categoryRepository; + + private Logger logger = LoggerFactory.getLogger(SideDishBackendApplicationTests.class); + @Test void contextLoads() { + assertThat(ctx).isNotNull(); + logger.debug("ApplicationContext is not null"); + } + + @Test + void categoryRepo_FindById() { + } }