refactor(order): Feign Client default 사용 방식으로 변경
- 기존 Service에 종속적이던 Feign Client 코드를 default를 사용함으로써 캡슐화
This commit is contained in:
@@ -9,8 +9,10 @@ import com.justpickup.orderservice.domain.order.repository.OrderRepositoryCustom
|
||||
import com.justpickup.orderservice.domain.orderItem.dto.OrderItemDto;
|
||||
import com.justpickup.orderservice.domain.orderItem.entity.OrderItem;
|
||||
import com.justpickup.orderservice.domain.orderItemOption.entity.OrderItemOption;
|
||||
import com.justpickup.orderservice.global.client.store.*;
|
||||
import com.justpickup.orderservice.global.client.user.GetCustomerResponse;
|
||||
import com.justpickup.orderservice.global.client.store.GetItemResponse;
|
||||
import com.justpickup.orderservice.global.client.store.GetStoreReseponse;
|
||||
import com.justpickup.orderservice.global.client.store.StoreByUserIdResponse;
|
||||
import com.justpickup.orderservice.global.client.store.StoreClient;
|
||||
import com.justpickup.orderservice.global.client.user.UserClient;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
@@ -25,7 +27,6 @@ import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static java.util.stream.Collectors.toList;
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
@@ -35,7 +36,6 @@ public class OrderServiceImpl implements OrderService {
|
||||
|
||||
private final OrderRepository orderRepository;
|
||||
private final OrderRepositoryCustom orderRepositoryCustom;
|
||||
private final OrderSender orderSender;
|
||||
private final StoreClient storeClient;
|
||||
private final UserClient userClient;
|
||||
|
||||
@@ -63,10 +63,10 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
|
||||
// item name 가져오기
|
||||
Map<Long, String> itemNameMap = getItemNameMap(itemIds);
|
||||
Map<Long, String> itemNameMap = storeClient.getItemNameMap(itemIds);
|
||||
|
||||
// user name 가져오기
|
||||
Map<Long, String> userNameMap = getUserNameMap(userIds);
|
||||
Map<Long, String> userNameMap = userClient.getUserNameMap(userIds);
|
||||
|
||||
// 해당 ID에 맞게 이름 설정해주기
|
||||
for (OrderMainDto._Order order : orders) {
|
||||
@@ -81,22 +81,6 @@ public class OrderServiceImpl implements OrderService {
|
||||
return returnDto;
|
||||
}
|
||||
|
||||
private Map<Long, String> getUserNameMap(Iterable<Long> userIds) {
|
||||
List<GetCustomerResponse> userResponses = userClient.getCustomers(userIds).getData();
|
||||
return userResponses.stream()
|
||||
.collect(
|
||||
toMap(GetCustomerResponse::getUserId, GetCustomerResponse::getUserName)
|
||||
);
|
||||
}
|
||||
|
||||
private Map<Long, String> getItemNameMap(Iterable<Long> itemIds) {
|
||||
List<GetItemsResponse> itemResponses = storeClient.getItems(itemIds).getData();
|
||||
return itemResponses.stream()
|
||||
.collect(
|
||||
toMap(GetItemsResponse::getId, GetItemsResponse::getName)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<PrevOrderDto> findPrevOrderMain(PrevOrderSearch search, Pageable pageable, Long userId) {
|
||||
StoreByUserIdResponse store = storeClient.getStoreByUserId(userId).getData();
|
||||
@@ -120,10 +104,10 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
|
||||
// item name 가져오기
|
||||
Map<Long, String> itemNameMap = getItemNameMap(itemIds);
|
||||
Map<Long, String> itemNameMap = storeClient.getItemNameMap(itemIds);
|
||||
|
||||
// user name 가져오기
|
||||
Map<Long, String> userNameMap = getUserNameMap(userIds);
|
||||
Map<Long, String> userNameMap = userClient.getUserNameMap(userIds);
|
||||
|
||||
for (PrevOrderDto prevOrderDto : prevOrderDtoList) {
|
||||
String userName = userNameMap.get(prevOrderDto.getUserId());
|
||||
@@ -155,8 +139,8 @@ public class OrderServiceImpl implements OrderService {
|
||||
}
|
||||
}
|
||||
|
||||
Map<Long, String> storeNameMap = this.getStoreNameMap(storeIds);
|
||||
Map<Long, String> itemNameMap = this.getItemNameMap(itemIds);
|
||||
Map<Long, String> storeNameMap = storeClient.getStoreNameMap(storeIds);
|
||||
Map<Long, String> itemNameMap = storeClient.getItemNameMap(itemIds);
|
||||
|
||||
for (OrderHistoryDto orderHistoryDto : orderHistoryDtoList) {
|
||||
String userName = storeNameMap.get(orderHistoryDto.getStoreId());
|
||||
@@ -170,15 +154,6 @@ public class OrderServiceImpl implements OrderService {
|
||||
return new SliceImpl<>(orderHistoryDtoList, pageable, orderHistory.hasNext());
|
||||
}
|
||||
|
||||
private Map<Long, String> getStoreNameMap(Set<Long> storeIds) {
|
||||
List<GetStoreResponse> storeResponses = storeClient.getStoreAllById(storeIds).getData();
|
||||
Map<Long, String> storeMap = storeResponses.stream()
|
||||
.collect(
|
||||
toMap(GetStoreResponse::getId, GetStoreResponse::getName)
|
||||
);
|
||||
return storeMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void addItemToBasket(OrderItemDto orderItemDto, Long storeId, Long userId) {
|
||||
@@ -234,7 +209,6 @@ public class OrderServiceImpl implements OrderService {
|
||||
,orderItem))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
|
||||
FetchOrderDto fetchOrderDto = FetchOrderDto.builder()
|
||||
.userId(order.getUserId())
|
||||
.orderPrice(order.getOrderPrice())
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.justpickup.orderservice.global.client.store;
|
||||
|
||||
import com.justpickup.orderservice.global.client.user.GetCustomerResponse;
|
||||
import com.justpickup.orderservice.global.dto.Result;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
@@ -7,6 +8,10 @@ import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestHeader;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
|
||||
@FeignClient("STORE-SERVICE")
|
||||
public interface StoreClient {
|
||||
@@ -29,4 +34,22 @@ public interface StoreClient {
|
||||
@GetMapping("/api/customer/items/{itemId}")
|
||||
Result<List<GetItemResponse>> getItemAndItemOptions(@PathVariable(value = "itemId") List<Long> itemIds);
|
||||
|
||||
default Map<Long, String> getStoreNameMap(Set<Long> storeIds) {
|
||||
List<GetStoreResponse> storeResponses = this.getStoreAllById(storeIds).getData();
|
||||
Map<Long, String> storeMap = storeResponses.stream()
|
||||
.collect(
|
||||
toMap(GetStoreResponse::getId, GetStoreResponse::getName)
|
||||
);
|
||||
return storeMap;
|
||||
}
|
||||
|
||||
default Map<Long, String> getItemNameMap(Iterable<Long> itemIds) {
|
||||
List<GetItemsResponse> itemResponses = this.getItems(itemIds).getData();
|
||||
return itemResponses.stream()
|
||||
.collect(
|
||||
toMap(GetItemsResponse::getId, GetItemsResponse::getName)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -6,6 +6,9 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static java.util.stream.Collectors.toMap;
|
||||
|
||||
@FeignClient("USER-SERVICE")
|
||||
public interface UserClient {
|
||||
@@ -15,4 +18,12 @@ public interface UserClient {
|
||||
|
||||
@GetMapping("/customers/{userIds}")
|
||||
Result<List<GetCustomerResponse>> getCustomers(@PathVariable("userIds") Iterable<Long> userIds);
|
||||
|
||||
default Map<Long, String> getUserNameMap(Iterable<Long> userIds) {
|
||||
List<GetCustomerResponse> userResponses = this.getCustomers(userIds).getData();
|
||||
return userResponses.stream()
|
||||
.collect(
|
||||
toMap(GetCustomerResponse::getUserId, GetCustomerResponse::getUserName)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user