|  | @@ -1,14 +1,19 @@
 | 
	
		
			
				|  |  |  package com.zhongshu.reward.server.core.dao.Impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.zhongshu.reward.client.model.InviteSuccessModel;
 | 
	
		
			
				|  |  | +import com.zhongshu.reward.client.model.TotalStatisticsModel;
 | 
	
		
			
				|  |  |  import com.zhongshu.reward.client.type.ReceiptsStatus;
 | 
	
		
			
				|  |  |  import com.zhongshu.reward.client.type.ReceiptsType;
 | 
	
		
			
				|  |  |  import com.zhongshu.reward.server.core.dao.WalletReceiptsDao;
 | 
	
		
			
				|  |  |  import com.zhongshu.reward.server.core.dao.extend.WalletReceiptsDaoExtend;
 | 
	
		
			
				|  |  |  import com.zhongshu.reward.server.core.domain.WalletReceipts;
 | 
	
		
			
				|  |  |  import org.apache.commons.lang3.StringUtils;
 | 
	
		
			
				|  |  | +import org.hibernate.query.criteria.internal.compile.CriteriaCompiler;
 | 
	
		
			
				|  |  |  import org.springframework.beans.factory.annotation.Autowired;
 | 
	
		
			
				|  |  |  import org.springframework.data.domain.Sort;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.MongoTemplate;
 | 
	
		
			
				|  |  | +import org.springframework.data.mongodb.core.aggregation.Aggregation;
 | 
	
		
			
				|  |  | +import org.springframework.data.mongodb.core.aggregation.AggregationResults;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.query.Criteria;
 | 
	
		
			
				|  |  |  import org.springframework.data.mongodb.core.query.Query;
 | 
	
		
			
				|  |  |  
 | 
	
	
		
			
				|  | @@ -61,4 +66,23 @@ public class WalletReceiptsDaoImpl implements WalletReceiptsDaoExtend {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return mongoTemplate.find(query, WalletReceipts.class);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public List<InviteSuccessModel> myInvite(String userId) {
 | 
	
		
			
				|  |  | +        Criteria criteria = new Criteria();
 | 
	
		
			
				|  |  | +        criteria.and("inviteUserId").is(userId);
 | 
	
		
			
				|  |  | +        criteria.and("status").in(List.of(ReceiptsStatus.WAIT, ReceiptsStatus.RECEIPTS));
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        Aggregation aggregation = Aggregation.newAggregation(
 | 
	
		
			
				|  |  | +                Aggregation.match(criteria),
 | 
	
		
			
				|  |  | +//                Aggregation.project("_id","amountTotal"),
 | 
	
		
			
				|  |  | +                Aggregation.group("userId").sum("total").as("totalAmount"),
 | 
	
		
			
				|  |  | +                Aggregation.project().and("_id").as("userId").and("totalAmount").as("totalAmount")
 | 
	
		
			
				|  |  | +//                Aggregation.group("tradeType").last("tradeType").as("_id")
 | 
	
		
			
				|  |  | +        );
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        AggregationResults<InviteSuccessModel> groupList = mongoTemplate.aggregate(aggregation, WalletReceipts.class, InviteSuccessModel.class);
 | 
	
		
			
				|  |  | +        return groupList.getMappedResults();
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |