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); }