Commit 3a54dfd3 authored by Christopher Cottier's avatar Christopher Cottier

debugging with sai

parent da9a9de0
...@@ -8,6 +8,9 @@ import org.springframework.stereotype.Service; ...@@ -8,6 +8,9 @@ import org.springframework.stereotype.Service;
import org.springframework.web.reactive.function.client.WebClient; import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -24,8 +27,6 @@ public class OrderService { ...@@ -24,8 +27,6 @@ public class OrderService {
User user = orderRequest.getUser(); User user = orderRequest.getUser();
Address address = orderRequest.getAddress(); Address address = orderRequest.getAddress();
CartPostDTO cart = orderRequest.getCart(); CartPostDTO cart = orderRequest.getCart();
//for each item grab product details from products API //for each item grab product details from products API
List<Mono<Product>> productsToOrder = cart.getCartItems().stream() List<Mono<Product>> productsToOrder = cart.getCartItems().stream()
.map(cartItem -> cartItem.getProductRef().getSku()) .map(cartItem -> cartItem.getProductRef().getSku())
...@@ -50,6 +51,24 @@ public class OrderService { ...@@ -50,6 +51,24 @@ public class OrderService {
orderItem.setItemQuantity(quantity); orderItem.setItemQuantity(quantity);
//set promotion if applicable
Flux<Promotion> promotionFlux = productService
.getPromotionBySkus(Arrays.asList(orderItem.getItemSku()));
promotionFlux
.collectList()
.map(promotionList -> {
System.out.println("Give me promo list");
if (promotionList.size() == 0 ) {return promotionList;}
Promotion promotion = promotionList.get(0);
if (orderItem.getItemQuantity().intValue() >= promotion.getMinimumQuantity().intValue()) {
Float originalPrice = orderItem.getItemPrice();
Float newPrice = originalPrice * (promotion.getDiscountPercentage() / 100);
orderItem.setItemPrice(newPrice);
}
return promotion;
}).subscribe();
return orderItem; return orderItem;
}); });
// //
......
...@@ -8,6 +8,8 @@ import reactor.core.publisher.Mono; ...@@ -8,6 +8,8 @@ import reactor.core.publisher.Mono;
import com.nisum.ecomservice.model.Promotion; import com.nisum.ecomservice.model.Promotion;
import reactor.core.publisher.Flux; import reactor.core.publisher.Flux;
import java.util.List;
@Service @Service
public class ProductService { public class ProductService {
...@@ -40,4 +42,12 @@ public class ProductService { ...@@ -40,4 +42,12 @@ public class ProductService {
.bodyToFlux(Promotion.class); .bodyToFlux(Promotion.class);
} }
public Flux<Promotion> getPromotionBySkus(List<String> listOfSkus){
return WebClient.create(String.format("%s/api/promos/bulkSearch",AppConfig.getPromoManagementUrl()))
.post()
.bodyValue(listOfSkus)
.retrieve()
.bodyToFlux(Promotion.class);
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment