Class ExternalOfferProvider
- java.lang.Object
-
- com.broadleafcommerce.orderoperation.service.provider.external.AbstractExternalProvider
-
- com.broadleafcommerce.orderoperation.service.provider.external.ExternalOfferProvider
-
- All Implemented Interfaces:
OfferProvider
public class ExternalOfferProvider extends AbstractExternalProvider implements OfferProvider
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
ExternalOfferProvider.DefaultPricingStrategy
protected static class
ExternalOfferProvider.DefaultProductType
-
Field Summary
Fields Modifier and Type Field Description protected static String
OFFER_CLIENT_ID
-
Fields inherited from class com.broadleafcommerce.orderoperation.service.provider.external.AbstractExternalProvider
RSQL_FILTER_PARAM
-
-
Constructor Summary
Constructors Constructor Description ExternalOfferProvider(org.springframework.web.reactive.function.client.WebClient webClient, com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, ExternalOfferProperties properties, UserTargetGenerationService userTargetGenerationService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected com.broadleafcommerce.promotion.offer.client.web.context.OrderDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto>>
buildOrderDto(com.broadleafcommerce.order.client.domain.Order order, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
protected com.broadleafcommerce.promotion.offer.client.web.context.CustomerContext
createCustomerContext()
Create aCustomerContext
and add customer and customer segments.protected Object
getProductType(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
protected ExternalOfferProperties
getProperties()
protected Optional<javax.money.MonetaryAmount>
getStandardPrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
protected UserTargetGenerationService
getUserTargetGenerationService()
protected void
handleWebClientResponseException(com.broadleafcommerce.order.client.domain.Order order, com.broadleafcommerce.promotion.offer.client.web.context.OfferAndOfferCodeUsageValidationResult result, org.springframework.web.reactive.function.client.WebClientResponseException exception)
Logs and set theOfferAndOfferCodeUsageValidationResult.getValidationFailureMessages()
for all the voucher offers.protected boolean
hasSalePrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
protected boolean
hasStandardPrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
protected com.broadleafcommerce.promotion.offer.client.web.context.Codes
populateCodes(com.broadleafcommerce.order.client.domain.Order order)
protected void
populateDependentLineItemDto(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems, com.broadleafcommerce.order.client.domain.OrderItem orderItem)
protected com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto
populateLineItemDto(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
Returns a populatedOrderLineItemDto
from givenOrderItem
.protected List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto>
populateLineItems(com.broadleafcommerce.order.client.domain.Order order)
protected com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher
populateVoucherDto(com.broadleafcommerce.order.common.domain.Voucher voucher)
Returns a populatedVoucher
from givenVoucher
.protected List<com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher>
populateVouchers(com.broadleafcommerce.order.client.domain.Order order)
com.broadleafcommerce.promotion.offer.client.web.context.OfferAndOfferCodeUsageValidationResult
validateVoucherOfferUsages(com.broadleafcommerce.order.client.domain.Order order, com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Validates existing vouchers stored inOrder.getVouchers()
to ensure that they are still valid and applicable to the givenOrder
.-
Methods inherited from class com.broadleafcommerce.orderoperation.service.provider.external.AbstractExternalProvider
executeRequest, getHeaders, getObjectMapper, getTypeFactory, getWebClient, pageableToParams
-
-
-
-
Field Detail
-
OFFER_CLIENT_ID
protected static final String OFFER_CLIENT_ID
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
ExternalOfferProvider
public ExternalOfferProvider(org.springframework.web.reactive.function.client.WebClient webClient, com.fasterxml.jackson.databind.ObjectMapper objectMapper, com.broadleafcommerce.common.extension.TypeFactory typeFactory, ExternalOfferProperties properties, UserTargetGenerationService userTargetGenerationService)
-
-
Method Detail
-
validateVoucherOfferUsages
public com.broadleafcommerce.promotion.offer.client.web.context.OfferAndOfferCodeUsageValidationResult validateVoucherOfferUsages(com.broadleafcommerce.order.client.domain.Order order, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
Description copied from interface:OfferProvider
Validates existing vouchers stored inOrder.getVouchers()
to ensure that they are still valid and applicable to the givenOrder
.- Specified by:
validateVoucherOfferUsages
in interfaceOfferProvider
- Parameters:
order
- theOrder
containing theVouchers
to validate againstcontextInfo
- context information surrounding sandboxing and multitenant state- Returns:
- an
OfferAndOfferCodeUsageValidationResult
containing details about any invalidOffers
and failure messages
-
handleWebClientResponseException
protected void handleWebClientResponseException(com.broadleafcommerce.order.client.domain.Order order, com.broadleafcommerce.promotion.offer.client.web.context.OfferAndOfferCodeUsageValidationResult result, org.springframework.web.reactive.function.client.WebClientResponseException exception)
Logs and set theOfferAndOfferCodeUsageValidationResult.getValidationFailureMessages()
for all the voucher offers.- Parameters:
order
- theOrder
containing all the voucher offersresult
- theOfferAndOfferCodeUsageValidationResult
exception
- theWebClientResponseException
to log
-
createCustomerContext
protected com.broadleafcommerce.promotion.offer.client.web.context.CustomerContext createCustomerContext()
Create aCustomerContext
and add customer and customer segments. Uses the current authentication token to determine principal and details.- Returns:
- The created
CustomerContext
-
buildOrderDto
protected com.broadleafcommerce.promotion.offer.client.web.context.OrderDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentGroupDto<com.broadleafcommerce.promotion.offer.client.web.context.FulfillmentLineItemDto>> buildOrderDto(com.broadleafcommerce.order.client.domain.Order order, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
-
populateVouchers
protected List<com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher> populateVouchers(com.broadleafcommerce.order.client.domain.Order order)
-
populateLineItems
protected List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> populateLineItems(com.broadleafcommerce.order.client.domain.Order order)
-
populateCodes
protected com.broadleafcommerce.promotion.offer.client.web.context.Codes populateCodes(com.broadleafcommerce.order.client.domain.Order order)
-
getProductType
@Nullable protected Object getProductType(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
-
populateDependentLineItemDto
protected void populateDependentLineItemDto(List<com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto> lineItems, com.broadleafcommerce.order.client.domain.OrderItem orderItem)
-
populateVoucherDto
protected com.broadleafcommerce.promotion.offer.client.web.context.info.Voucher populateVoucherDto(com.broadleafcommerce.order.common.domain.Voucher voucher)
Returns a populatedVoucher
from givenVoucher
.- Parameters:
voucher
- theVoucher
to populate anVoucher
from- Returns:
- populated
Voucher
from givenVoucher
-
populateLineItemDto
protected com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto populateLineItemDto(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
Returns a populatedOrderLineItemDto
from givenOrderItem
.- Parameters:
orderItem
- theOrderItem
to populate anOrderLineItemDto
from- Returns:
- populated
OrderLineItemDto
from givenOrderItem
-
hasStandardPrice
protected boolean hasStandardPrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
-
hasSalePrice
protected boolean hasSalePrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
-
getStandardPrice
protected Optional<javax.money.MonetaryAmount> getStandardPrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
-
getProperties
protected ExternalOfferProperties getProperties()
-
getUserTargetGenerationService
protected UserTargetGenerationService getUserTargetGenerationService()
-
-