| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -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"); | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
				
				 | 
				
					
  |