From e214fecb47494b93fe794b5d1eeb2561bc51f17b Mon Sep 17 00:00:00 2001 From: bum12ark Date: Mon, 14 Mar 2022 21:11:03 +0900 Subject: [PATCH] =?UTF-8?q?feat(store):=20[API]=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=ED=85=9C=20=EA=B3=A0=EC=9C=A0=EB=B2=88=ED=98=B8=EB=A1=9C=20?= =?UTF-8?q?=EC=95=84=EC=9D=B4=ED=85=9C=20=EC=A0=95=EB=B3=B4=20=EC=B0=BE?= =?UTF-8?q?=EA=B8=B0=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/item/web/ItemController.java | 19 ++--- .../domain/itemoption/entity/ItemOption.java | 1 - .../global/SqlCommandLineRunner.java | 73 +++++++++++++++++-- .../global/client/user/UserClient.java | 4 +- 4 files changed, 77 insertions(+), 20 deletions(-) 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 d18b5c8..7130f9e 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 @@ -2,22 +2,17 @@ package com.justpickup.storeservice.domain.item.web; 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.OptionType; import com.justpickup.storeservice.global.dto.Result; import com.justpickup.storeservice.global.entity.Yn; -import lombok.*; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.web.PageableDefault; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.RequiredArgsConstructor; 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; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor 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 d674b96..8b03e34 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 @@ -31,7 +31,6 @@ public class ItemOption extends BaseEntity { // == 연관관계 편의 메소드 == // public void setItem(Item item) { this.item = item; - item.getItemOptions().add(this); } public ItemOption(OptionType optionType, String name, Item item) { diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java b/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java index 9440a00..c044f4a 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java +++ b/store-service/src/main/java/com/justpickup/storeservice/global/SqlCommandLineRunner.java @@ -1,5 +1,6 @@ package com.justpickup.storeservice.global; +import com.fasterxml.jackson.databind.ObjectMapper; import com.justpickup.storeservice.domain.category.entity.Category; import com.justpickup.storeservice.domain.category.repository.CategoryRepository; import com.justpickup.storeservice.domain.favoritestore.entity.FavoriteStore; @@ -12,22 +13,76 @@ import com.justpickup.storeservice.domain.map.entity.Map; import com.justpickup.storeservice.domain.store.entity.Store; import com.justpickup.storeservice.domain.store.repository.StoreRepository; import com.justpickup.storeservice.global.entity.Address; +import lombok.Data; +import lombok.NoArgsConstructor; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.boot.CommandLineRunner; import org.springframework.stereotype.Component; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.stream.Collectors; @Component @RequiredArgsConstructor +@Slf4j public class SqlCommandLineRunner implements CommandLineRunner { private final StoreRepository storeRepository; private final FavoriteStoreRepository favoriteStoreRepository; private final ItemRepository itemRepository; private final CategoryRepository categoryRepository; + private final ObjectMapper objectMapper; + @Data + static class _Store { + private Long id; + private String name; + private List<_Item> items = new ArrayList<>(); + + public _Store(Store store) { + this.id = store.getId(); + this.name = store.getName(); + this.items = store.getItems() + .stream() + .map(_Item::new) + .collect(Collectors.toList()); + } + + @NoArgsConstructor @Data + static class _Item { + private Long id; + private String name; + private Long price; + List<_ItemOption> itemOptions = new ArrayList<>(); + + public _Item(Item item) { + this.id = item.getId(); + this.name = item.getName(); + this.price = item.getPrice(); + this.itemOptions = item.getItemOptions() + .stream() + .map(_ItemOption::new) + .collect(Collectors.toList()); + } + } + + @NoArgsConstructor @Data + static class _ItemOption { + private Long id; + private String name; + + public _ItemOption(ItemOption itemOption) { + this.id = itemOption.getId(); + this.name = itemOption.getName(); + } + } + } + + @Transactional @Override public void run(String... args) throws Exception { List stores = new ArrayList<>(); @@ -37,9 +92,14 @@ public class SqlCommandLineRunner implements CommandLineRunner { createFavoriteStore(favoriteStoreRepository, stores); createItemAndCategories(itemRepository, categoryRepository, stores); + + List<_Store> list = stores.stream().map(_Store::new).collect(Collectors.toList()); + String json = objectMapper.writeValueAsString(list); + log.info("[Test] {}", json); } - private void createItemAndCategories(ItemRepository itemRepository, CategoryRepository categoryRepository, List stores) { + + void createItemAndCategories(ItemRepository itemRepository, CategoryRepository categoryRepository, List stores) { stores.forEach(store -> { Category 카페인 = categoryRepository.save(Category.of("카페인", 0, store)); Category 디카페인 = categoryRepository.save(Category.of("디카페인", 1, store)); @@ -56,17 +116,20 @@ public class SqlCommandLineRunner implements CommandLineRunner { Item 딸기라떼 = Item.of("딸기라떼", 3000L, 디카페인, store, List.of(ice, hot)); Item 녹차 = Item.of("녹차", 3000L, 티, store, List.of(hot)); Item 히비스커스 = Item.of("히비스커스 티", 3000L, 티, store, List.of(hot)); - itemRepository.saveAll(List.of(아메리카노, 카페라떼, 콜드브루, 녹차라떼, 딸기라떼, 녹차, 히비스커스)); + + List items = List.of(아메리카노, 카페라떼, 카페모카, 콜드브루, 녹차라떼, 딸기라떼, 녹차, 히비스커스); + itemRepository.saveAll(items); + + items.forEach(item -> store.addItem(item)); }); } - - private void createFavoriteStore(FavoriteStoreRepository favoriteStoreRepository, List stores) { + void createFavoriteStore(FavoriteStoreRepository favoriteStoreRepository, List stores) { List userList = List.of(1L,2L,3L,4L,5L,6L,7L); userList.forEach(userId -> stores.forEach(store -> favoriteStoreRepository.save(FavoriteStore.of(userId, store)))); } - private void createStores(StoreRepository storeRepository, List stores) { + void createStores(StoreRepository storeRepository, List stores) { stores.add( Store.of( new Address("서울시", "마포구 도화동", "201-20"), diff --git a/store-service/src/main/java/com/justpickup/storeservice/global/client/user/UserClient.java b/store-service/src/main/java/com/justpickup/storeservice/global/client/user/UserClient.java index 941b739..a6b5684 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/global/client/user/UserClient.java +++ b/store-service/src/main/java/com/justpickup/storeservice/global/client/user/UserClient.java @@ -5,9 +5,9 @@ import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -@FeignClient(name = "USER-SERVICE", url = "127.0.0.1:8001/user-service") +@FeignClient("USER-SERVICE") public interface UserClient { @GetMapping("/customer/{userId}") - Result getUser(@PathVariable("userId") Long userId); + Result getCustomerById(@PathVariable("userId") Long userId); }