diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreDto.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreDto.java index 2dd6c27..86ddfd1 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreDto.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/dto/StoreDto.java @@ -1,21 +1,30 @@ package com.justpickup.storeservice.domain.store.dto; import com.justpickup.storeservice.domain.store.entity.Store; -import lombok.AllArgsConstructor; +import lombok.AccessLevel; import lombok.Builder; import lombok.Getter; +import lombok.NoArgsConstructor; @Getter -@AllArgsConstructor -@Builder +@NoArgsConstructor(access = AccessLevel.PROTECTED) public class StoreDto { private Long id; private String name; private String phoneNumber; - public StoreDto(Store store) { - this.id = store.getId(); - this.name = store.getName(); - this.phoneNumber = store.getPhoneNumber(); + @Builder + public StoreDto(Long id, String name, String phoneNumber) { + this.id = id; + this.name = name; + this.phoneNumber = phoneNumber; + } + + public static StoreDto of(Store store) { + StoreDto storeDto = new StoreDto(); + storeDto.id = store.getId(); + storeDto.name = store.getName(); + storeDto.phoneNumber = store.getPhoneNumber(); + return storeDto; } } diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java index b389943..56a83ee 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreService.java @@ -14,4 +14,5 @@ public interface StoreService { List findFavoriteStore(SearchStoreCondition condition, Long userId); StoreDto findStoreById(Long storeId); StoreByUserIdDto findStoreByUserId(Long userId); + List findStoreAllById(Iterable storeIds); } diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java index 75f3305..aa06ef2 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/service/StoreServiceImpl.java @@ -15,6 +15,7 @@ import org.springframework.data.domain.SliceImpl; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -52,7 +53,7 @@ public class StoreServiceImpl implements StoreService { Store store = storeRepository.findById(storeId) .orElseThrow(() -> new NotExistStoreException(storeId + "는 없는 매장 고유번호입니다.")); - return new StoreDto(store); + return StoreDto.of(store); } @Override @@ -62,4 +63,12 @@ public class StoreServiceImpl implements StoreService { return StoreByUserIdDto.of(store); } + + @Override + public List findStoreAllById(Iterable storeIds) { + return storeRepository.findAllById(storeIds) + .stream() + .map(StoreDto::of) + .collect(Collectors.toList()); + } } diff --git a/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java b/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java index f3fbc3c..32fa705 100644 --- a/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java +++ b/store-service/src/main/java/com/justpickup/storeservice/domain/store/web/StoreController.java @@ -9,17 +9,18 @@ import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.List; +import java.util.stream.Collectors; + @RestController @RequiredArgsConstructor -@RequestMapping("/store") public class StoreController { private final StoreService storeService; - @GetMapping("/{storeId}") + @GetMapping("/store/{storeId}") public ResponseEntity getStore(@PathVariable("storeId") Long storeId) { StoreDto storeDto = storeService.findStoreById(storeId); @@ -39,4 +40,16 @@ public class StoreController { this.phoneNumber = storeDto.getPhoneNumber(); } } + + @GetMapping("/stores/{storeIds}") + public ResponseEntity getStores(@PathVariable("storeIds") List storeIds) { + + List storeDtoList = storeService.findStoreAllById(storeIds); + + List responses = storeDtoList.stream() + .map(GetStoreResponse::new) + .collect(Collectors.toList()); + + return ResponseEntity.ok(Result.createSuccessResult(responses)); + } }