Class PurchaseCustomerSegmentServiceImpl
java.lang.Object
com.broadleafcommerce.customersegment.service.PurchaseCustomerSegmentServiceImpl
- All Implemented Interfaces:
PurchaseCustomerSegmentService
@Service("blPurchaseCustomerSegmentService")
public class PurchaseCustomerSegmentServiceImpl
extends Object
implements PurchaseCustomerSegmentService
Service to handle the adding and removing of qualified customers to customer segments
that have purchase requirements.
- Author:
- Jon Fleschler (jfleschler
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static Stringprotected CustomerSegmentServiceprotected org.broadleafcommerce.core.order.service.OrderItemServiceprotected org.broadleafcommerce.core.order.service.OrderServiceprotected org.broadleafcommerce.common.config.service.SystemPropertiesService -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidaddOrUpdateCustomerXrefs(PurchBasedCustSegConfigDTO config, Map<Long, CustomerPurchaseDTO> candidateCustomers, Set<Long> prevQualCustomerIds) protected voidprotected voidbuildMvelVariables(org.broadleafcommerce.core.order.domain.OrderItem oi) protected StringbuildRuleExpression(CustomerSegment segment) protected voidprotected Map<Long,CustomerPurchaseDTO> filterAndRemoveCustomersByTotalSpend(PurchBasedCustSegConfigDTO config, Map<Long, CustomerPurchaseDTO> candidateCustomers, Set<Long> prevQualCustomerIds) filterOutPreviouslyQualifiedCustomers(List<Long> customers, Set<Long> prevQualCustomerIds) protected intgetCustomerIds(List<CustPrchBasedCustSegXref> prevQualCustomers) protected CustomerPurchaseDTOgetCustomerPurchaseDTO(Map<Long, CustomerPurchaseDTO> candidateCustomers, org.broadleafcommerce.profile.core.domain.Customer customer) protected DategetDateXDaysAgo(int daysAgo) protected org.broadleafcommerce.common.money.MoneygetPriorQualifiedTotalForOrderItems(List<org.broadleafcommerce.core.order.domain.OrderItem> orderItems, String ruleExpression) protected org.broadleafcommerce.common.money.MoneygetPriorQualifiedTotalForOrders(List<org.broadleafcommerce.core.order.domain.Order> orders) protected booleanhasOrderItemCriteria(CustomerSegment segment) protected booleanorderIsInRange(org.broadleafcommerce.core.order.domain.Order order, CustomerSegment segment) protected Map<Long,CustomerPurchaseDTO> populateCandidateCustomers(Map<Long, CustomerPurchaseDTO> candidateCustomers, List<CustPrchBasedCustSegXref> prevQualCustomers) protected voidprocessCustomersForPurchaseBasedCustomerSegmentConfig(List<Long> customers, PurchBasedCustSegConfigDTO config) voidprocessOrderForPurchaseBasedCustomerSegments(org.broadleafcommerce.core.order.domain.Order order) voidprocessPurchaseBasedCustomerSegment(CustomerSegment segment, boolean shouldClear) voidprotected voidprotected voidIf the Customer's latest purchase occurred before the CustomerSegment's startDate, Then we know that the does NOT qualify for the segment.protected booleansegmentNeedsUpdate(CustomerSegment segment) protected voidprotected voidprotected voidupdateCustomerPurchaseDTO(Map<Long, CustomerPurchaseDTO> candidateCustomers, org.broadleafcommerce.core.order.domain.Order order, org.broadleafcommerce.common.money.Money amount, CustomerPurchaseDTO dto) protected Map<Long,CustomerPurchaseDTO> updateCustomerPurchaseDTOForOrderItems(List<org.broadleafcommerce.core.order.domain.OrderItem> orderItems, Map<Long, CustomerPurchaseDTO> candidateCustomers, String ruleExpression) protected Map<Long,CustomerPurchaseDTO> updateCustomerPurchaseDTOForOrders(List<org.broadleafcommerce.core.order.domain.Order> orders, Map<Long, CustomerPurchaseDTO> candidateCustomers) protected voidupdateCustomerQualifyingSpendAmounts(PurchBasedCustSegConfigDTO config, List<CustPrchBasedCustSegXref> prevQualCustomers) protected void
-
Field Details
-
AND
-
customerSegmentService
-
orderService
protected org.broadleafcommerce.core.order.service.OrderService orderService -
orderItemService
protected org.broadleafcommerce.core.order.service.OrderItemService orderItemService -
systemPropertiesService
protected org.broadleafcommerce.common.config.service.SystemPropertiesService systemPropertiesService
-
-
Constructor Details
-
PurchaseCustomerSegmentServiceImpl
public PurchaseCustomerSegmentServiceImpl()
-
-
Method Details
-
processOrderForPurchaseBasedCustomerSegments
public void processOrderForPurchaseBasedCustomerSegments(org.broadleafcommerce.core.order.domain.Order order) - Specified by:
processOrderForPurchaseBasedCustomerSegmentsin interfacePurchaseCustomerSegmentService
-
processPurchaseBasedCustomerSegment
- Specified by:
processPurchaseBasedCustomerSegmentin interfacePurchaseCustomerSegmentService
-
processPurchaseBasedCustomerSegments
- Specified by:
processPurchaseBasedCustomerSegmentsin interfacePurchaseCustomerSegmentService
-
batchProcessCustomersForPurchaseBasedCustomerSegmentConfig
protected void batchProcessCustomersForPurchaseBasedCustomerSegmentConfig(PurchBasedCustSegConfigDTO config) -
segmentNeedsUpdate
-
setupConfigurationForSpecificDates
-
setupConfigurationForRollingDates
-
processCustomersForPurchaseBasedCustomerSegmentConfig
protected void processCustomersForPurchaseBasedCustomerSegmentConfig(List<Long> customers, PurchBasedCustSegConfigDTO config) -
adjustCustomerPreviousTotalSpentForSegment
-
updateCustomerQualifyingSpendAmounts
protected void updateCustomerQualifyingSpendAmounts(PurchBasedCustSegConfigDTO config, List<CustPrchBasedCustSegXref> prevQualCustomers) -
getPriorQualifiedTotalForOrders
protected org.broadleafcommerce.common.money.Money getPriorQualifiedTotalForOrders(List<org.broadleafcommerce.core.order.domain.Order> orders) -
getPriorQualifiedTotalForOrderItems
-
updateCustomerPurchaseDTOForOrders
protected Map<Long,CustomerPurchaseDTO> updateCustomerPurchaseDTOForOrders(List<org.broadleafcommerce.core.order.domain.Order> orders, Map<Long, CustomerPurchaseDTO> candidateCustomers) -
updateCustomerPurchaseDTOForOrderItems
protected Map<Long,CustomerPurchaseDTO> updateCustomerPurchaseDTOForOrderItems(List<org.broadleafcommerce.core.order.domain.OrderItem> orderItems, Map<Long, CustomerPurchaseDTO> candidateCustomers, String ruleExpression) -
hasOrderItemCriteria
-
filterAndRemoveCustomersByTotalSpend
protected Map<Long,CustomerPurchaseDTO> filterAndRemoveCustomersByTotalSpend(PurchBasedCustSegConfigDTO config, Map<Long, CustomerPurchaseDTO> candidateCustomers, Set<Long> prevQualCustomerIds) -
addOrUpdateCustomerXrefs
protected void addOrUpdateCustomerXrefs(PurchBasedCustSegConfigDTO config, Map<Long, CustomerPurchaseDTO> candidateCustomers, Set<Long> prevQualCustomerIds) -
updateExistingCustomerXref
protected void updateExistingCustomerXref(CustomerPurchaseDTO dto, PurchBasedCustSegConfigDTO config) -
createCustPrchBasedCustSegXref
protected void createCustPrchBasedCustSegXref(CustomerPurchaseDTO dto, PurchBasedCustSegConfigDTO config) -
updateCustomerPurchaseDTO
protected void updateCustomerPurchaseDTO(Map<Long, CustomerPurchaseDTO> candidateCustomers, org.broadleafcommerce.core.order.domain.Order order, org.broadleafcommerce.common.money.Money amount, CustomerPurchaseDTO dto) -
filterOutPreviouslyQualifiedCustomers
-
populateCandidateCustomers
protected Map<Long,CustomerPurchaseDTO> populateCandidateCustomers(Map<Long, CustomerPurchaseDTO> candidateCustomers, List<CustPrchBasedCustSegXref> prevQualCustomers) -
getCustomerIds
-
getCustomerPurchaseDTO
protected CustomerPurchaseDTO getCustomerPurchaseDTO(Map<Long, CustomerPurchaseDTO> candidateCustomers, org.broadleafcommerce.profile.core.domain.Customer customer) -
orderIsInRange
protected boolean orderIsInRange(org.broadleafcommerce.core.order.domain.Order order, CustomerSegment segment) -
removeCustomersFromSegmentBasedOnLastUpdateDate
If the Customer's latest purchase occurred before the CustomerSegment's startDate, Then we know that the does NOT qualify for the segment. -
removeAllCustomersFromSegment
-
getDateXDaysAgo
-
buildMvelVariables
-
buildRuleExpression
-
getBatchSize
protected int getBatchSize()
-