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
  • Field Details

  • Constructor Details

    • 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 Details

    • 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 in Order.getVouchers() to ensure that they are still valid and applicable to the given Order.
      Specified by:
      validateVoucherOfferUsages in interface OfferProvider
      Parameters:
      order - the Order containing the Vouchers to validate against
      contextInfo - context information surrounding sandboxing and multitenant state
      Returns:
      an OfferAndOfferCodeUsageValidationResult containing details about any invalid Offers and failure messages
    • generateCodesForVouchers

      public CodeGenerationResult generateCodesForVouchers(VoucherCodeGenerationRequest voucherCodeGenerationRequest, @Nullable com.broadleafcommerce.data.tracking.core.context.ContextInfo contextInfo)
      Description copied from interface: OfferProvider
      Generates OfferCodes for voucher offers based on the given VoucherCodeGenerationRequest.

      This method will generate and return the OfferCodes in the same request, therefore it's meant for small batch of code generation only.

      Specified by:
      generateCodesForVouchers in interface OfferProvider
      Parameters:
      voucherCodeGenerationRequest - the VoucherCodeGenerationRequest to generate the voucher OfferCodes with
      contextInfo - context information surrounding sandboxing and multitenant state
      Returns:
      the CodeGenerationResult containing the generated voucher OfferCodes based on the given VoucherCodeGenerationRequest
    • handleWebClientResponseException

      protected void handleWebClientResponseException(com.broadleafcommerce.order.client.domain.Order order, com.broadleafcommerce.promotion.offer.client.web.context.OfferAndOfferCodeUsageValidationResult result, Exception exception)
      Logs and set the OfferAndOfferCodeUsageValidationResult.getValidationFailureMessages() for all the voucher offers.
      Parameters:
      order - the Order containing all the voucher offers
      result - the OfferAndOfferCodeUsageValidationResult
      exception - the Exception to log
    • handleWebClientResponseException

      @Deprecated(since="1.8.1", forRemoval=true) 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)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Logs and set the OfferAndOfferCodeUsageValidationResult.getValidationFailureMessages() for all the voucher offers.
      Parameters:
      order - the Order containing all the voucher offers
      result - the OfferAndOfferCodeUsageValidationResult
      exception - the WebClientResponseException to log
    • createCustomerContext

      protected com.broadleafcommerce.promotion.offer.client.web.context.CustomerContext createCustomerContext()
      Create a CustomerContext 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 populated Voucher from given Voucher.
      Parameters:
      voucher - the Voucher to populate an Voucher from
      Returns:
      populated Voucher from given Voucher
    • populateLineItemDto

      protected com.broadleafcommerce.promotion.offer.client.web.context.OrderLineItemDto populateLineItemDto(com.broadleafcommerce.order.client.domain.OrderItem orderItem)
      Returns a populated OrderLineItemDto from given OrderItem.
      Parameters:
      orderItem - the OrderItem to populate an OrderLineItemDto from
      Returns:
      populated OrderLineItemDto from given OrderItem
    • 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)
    • getServiceClient

      protected String getServiceClient()
    • getProperties

      protected ExternalOfferProperties getProperties()
    • getUserTargetGenerationService

      protected UserTargetGenerationService getUserTargetGenerationService()