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 classExternalOfferProvider.DefaultPricingStrategyprotected static classExternalOfferProvider.DefaultProductType
-
Field Summary
Fields Modifier and Type Field Description protected static StringOFFER_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.CustomerContextcreateCustomerContext()Create aCustomerContextand add customer and customer segments.protected ObjectgetProductType(com.broadleafcommerce.order.client.domain.OrderItem orderItem)protected ExternalOfferPropertiesgetProperties()protected Optional<javax.money.MonetaryAmount>getStandardPrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)protected UserTargetGenerationServicegetUserTargetGenerationService()protected voidhandleWebClientResponseException(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 booleanhasSalePrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)protected booleanhasStandardPrice(com.broadleafcommerce.order.client.domain.OrderItem orderItem)protected com.broadleafcommerce.promotion.offer.client.web.context.CodespopulateCodes(com.broadleafcommerce.order.client.domain.Order order)protected voidpopulateDependentLineItemDto(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.OrderLineItemDtopopulateLineItemDto(com.broadleafcommerce.order.client.domain.OrderItem orderItem)Returns a populatedOrderLineItemDtofrom 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.VoucherpopulateVoucherDto(com.broadleafcommerce.order.common.domain.Voucher voucher)Returns a populatedVoucherfrom 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.OfferAndOfferCodeUsageValidationResultvalidateVoucherOfferUsages(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:OfferProviderValidates existing vouchers stored inOrder.getVouchers()to ensure that they are still valid and applicable to the givenOrder.- Specified by:
validateVoucherOfferUsagesin interfaceOfferProvider- Parameters:
order- theOrdercontaining theVouchersto validate againstcontextInfo- context information surrounding sandboxing and multitenant state- Returns:
- an
OfferAndOfferCodeUsageValidationResultcontaining details about any invalidOffersand 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- theOrdercontaining all the voucher offersresult- theOfferAndOfferCodeUsageValidationResultexception- theWebClientResponseExceptionto log
-
createCustomerContext
protected com.broadleafcommerce.promotion.offer.client.web.context.CustomerContext createCustomerContext()
Create aCustomerContextand 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 populatedVoucherfrom givenVoucher.- Parameters:
voucher- theVoucherto populate anVoucherfrom- Returns:
- populated
Voucherfrom givenVoucher
-
populateLineItemDto
protected com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto populateLineItemDto(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
Returns a populatedOrderLineItemDtofrom givenOrderItem.- Parameters:
orderItem- theOrderItemto populate anOrderLineItemDtofrom- Returns:
- populated
OrderLineItemDtofrom 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()
-
-