|
|
@ -197,12 +197,14 @@ public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRul |
|
|
|
@Override |
|
|
|
@Transactional(rollbackFor = Exception.class) |
|
|
|
public InitPointRuleResultDTO initPointRule() { |
|
|
|
//得到所有客户Id
|
|
|
|
Result<List<CustomerDTO>> customerListResult = operCrmOpenFeignClient.getAllCustomerList(); |
|
|
|
log.info("initPointRule operCrmOpenFeignClient.getAllCustomerList result:{}",JSON.toJSONString(customerListResult)); |
|
|
|
if (!customerListResult.success() || CollectionUtils.isEmpty(customerListResult.getData())) { |
|
|
|
throw new RenException("获取所有客户列表失败"); |
|
|
|
} |
|
|
|
List<CustomerDTO> customerDTOList = customerListResult.getData(); |
|
|
|
//获取默认规则列表
|
|
|
|
List<PointRuleDefaultEntity> ruleDefaultEntities = pointRuleDefaultDao.selectList(null); |
|
|
|
if (CollectionUtils.isEmpty(ruleDefaultEntities)) { |
|
|
|
log.warn("initPointRule pointRuleDefaultDao.selectList return empty"); |
|
|
@ -211,15 +213,18 @@ public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRul |
|
|
|
|
|
|
|
|
|
|
|
List<PointRuleEntity> insertList = new ArrayList<>(); |
|
|
|
//获取全部默认规则code集合
|
|
|
|
List<String> defaultEventCodeList = ruleDefaultEntities.stream().map(PointRuleDefaultEntity :: getEventCode).distinct().collect(Collectors.toList()); |
|
|
|
//获取所有客户的积分规则
|
|
|
|
List<PointRuleEntity> customerRule = baseDao.selectList(null); |
|
|
|
if(!CollectionUtils.isEmpty(customerRule)){ |
|
|
|
//key :: customerId || value :: 客户规则集合
|
|
|
|
Map<String,List<PointRuleEntity>> customerRuleMap = |
|
|
|
customerRule.stream().collect(Collectors.groupingBy(PointRuleEntity :: getCustomerId)); |
|
|
|
customerRuleMap.forEach((customerId,ruleList) -> { |
|
|
|
if(null != ruleList){ |
|
|
|
List<String> event = new LinkedList<>(defaultEventCodeList); |
|
|
|
//取差集
|
|
|
|
//取差集,event只剩下当前客户没有的积分规则
|
|
|
|
event.removeAll(ruleList.stream().map(PointRuleEntity :: getEventCode).distinct().collect(Collectors.toList())); |
|
|
|
if(!CollectionUtils.isEmpty(event)){ |
|
|
|
ruleDefaultEntities.stream().filter(rule -> event.contains(rule.getEventCode())).map(o -> { |
|
|
@ -238,7 +243,7 @@ public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRul |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
//从未被初始化的customerId
|
|
|
|
//被初始化过的customerId
|
|
|
|
List<String> haveInitCustomerIds = baseDao.selectCustomerIds(); |
|
|
|
if (haveInitCustomerIds == null) { |
|
|
|
haveInitCustomerIds = new ArrayList<>(); |
|
|
@ -249,6 +254,7 @@ public class PointRuleServiceImpl extends BaseServiceImpl<PointRuleDao, PointRul |
|
|
|
if (haveInitCustomerIds.contains(customerDTO.getId())) { |
|
|
|
continue; |
|
|
|
} |
|
|
|
//对从未被初始化过积分规则的客户进行积分规则初始化
|
|
|
|
PointRuleEntity entity = ConvertUtils.sourceToTarget(defaultRule, PointRuleEntity.class); |
|
|
|
entity.setId(""); |
|
|
|
entity.setCreatedBy("INITIALIZATION"); |
|
|
|