From 1faf3ab0ba6c17eee48e68e8d0077ea61f45d75d Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 12 五月 2020 20:19:36 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div

---
 fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java |  119 ++++++++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 93 insertions(+), 26 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java b/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
index 8576988..730ea5d 100644
--- a/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
+++ b/fanli/src/main/java/com/yeshi/fanli/dao/user/invite/TeamDailyRecordDao.java
@@ -1,36 +1,28 @@
 package com.yeshi.fanli.dao.user.invite;
 
+import java.math.BigDecimal;
+import java.util.ArrayList;
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
-import javax.annotation.Resource;
-
-import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
 import org.springframework.data.mongodb.core.query.Update;
 import org.springframework.stereotype.Repository;
 
-import com.yeshi.fanli.entity.bus.user.vip.TeamDailyRecord;
+import com.mongodb.BasicDBObject;
+import com.mongodb.DBObject;
+import com.yeshi.fanli.dao.MongodbBaseDao;
+import com.yeshi.fanli.entity.bus.user.invite.TeamDailyRecord;
 
 @Repository
-public class TeamDailyRecordDao {
+public class TeamDailyRecordDao extends MongodbBaseDao<TeamDailyRecord> {
 
-	@Resource
-	private MongoTemplate mongoTemplate;
+	private static String collectionName = "team_daily_Record";
 
-	/**
-	 * 鏂板
-	 * 
-	 * @param record
-	 */
-	public void save(TeamDailyRecord record) {
-		if (record == null) {
-			return;
-		}
-		mongoTemplate.save(record);
-	}
-
+	 
 	/**
 	 * 閫夋嫨鎬ф洿鏂�
 	 * @param record
@@ -65,7 +57,7 @@
 		if (record.getBeyondSuperVIP() != null)
 			update.set("beyondSuperVIP", record.getBeyondSuperVIP());
 		update.set("updateTime", new Date());
-		mongoTemplate.updateMulti(query, update, TeamDailyRecord.class);
+		update(query, update);
 	}
 
 	/**
@@ -85,10 +77,10 @@
 	 * 
 	 * @return
 	 */
-	public List<TeamDailyRecord> getbyUid(Long uid) {
+	public List<TeamDailyRecord> getByUid(Long uid) {
 		Query query = new Query();
 		query.addCriteria(Criteria.where("uid").is(uid));
-		return mongoTemplate.find(query, TeamDailyRecord.class);
+		return findList(query);
 	}
 
 	/**
@@ -96,11 +88,86 @@
 	 * 
 	 * @return
 	 */
-	public List<TeamDailyRecord> getbyUid(Long uid, Date minTime) {
+	public List<TeamDailyRecord> listByUid(Long uid, Date minDate, Date maxDate) {
+		List<Criteria> list = new ArrayList<Criteria>();
+		list.add(Criteria.where("uid").is(uid));
+		if (minDate != null)
+			list.add(Criteria.where("countDay").gte(minDate));
+		if (maxDate != null)
+			list.add(Criteria.where("countDay").lte(maxDate));
+		
 		Query query = new Query();
-		query.addCriteria(Criteria.where("uid").is(uid));
-		query.addCriteria(Criteria.where("countDay").lte(minTime));
-		return mongoTemplate.find(query, TeamDailyRecord.class);
+		if (list.size() > 0) {
+			Criteria[] cas = new Criteria[list.size()];
+			for (int i = 0; i < list.size(); i++)
+				cas[i] = list.get(i);
+			query.addCriteria(new Criteria().andOperator(cas));
+		}
+		return findList(query);
 	}
 
+	
+	/**
+	 * 缁熻骞存湀
+	 * @param uid
+	 * @param minDate
+	 * @param maxDate
+	 * @return
+	 */
+	public List<TeamDailyRecord> sumGroupByYearMonth(Long uid, Date minDate, Date maxDate) {
+		List<TeamDailyRecord> listDailyCount = new ArrayList<>();
+		// 缁熻鏂规硶
+		String reduce = "function(doc, aggr){"
+				+ " aggr.firstDaRen += doc.firstDaRen;"
+				+ " aggr.secondDaRen += doc.secondDaRen;"
+				+ " aggr.firstHighVIP += doc.firstHighVIP;"
+				+ " aggr.secondHighVIP += doc.secondHighVIP;"
+				+ " aggr.firstSuperVIP += doc.firstSuperVIP;"
+				+ " aggr.secondSuperVIP += doc.secondSuperVIP;"
+				+ "}";
+
+		// 鏌ヨ鏉′欢
+		List<Criteria> list = new ArrayList<Criteria>();
+		list.add(Criteria.where("uid").is(uid));
+		if (minDate != null)
+			list.add(Criteria.where("countDay").gte(minDate));
+		if (maxDate != null)
+			list.add(Criteria.where("countDay").lte(maxDate));
+
+		Query query = new Query();
+		if (list.size() > 0) {
+			Criteria[] cas = new Criteria[list.size()];
+			for (int i = 0; i < list.size(); i++)
+				cas[i] = list.get(i);
+			query.addCriteria(new Criteria().andOperator(cas));
+		}
+
+		BasicDBObject agg = new BasicDBObject("yearMonth", "");
+
+		Map<String, Object> map = new HashMap<>();
+		map.put("firstDaRen", 0);
+		map.put("secondDaRen", 0);
+		map.put("firstHighVIP", 0);
+		map.put("secondHighVIP", 0);
+		map.put("firstSuperVIP", 0);
+		map.put("secondSuperVIP", 0);
+		BasicDBObject dbObject = new BasicDBObject(map);
+		DBObject result = mongoTemplate.getCollection(collectionName).group(agg, query.getQueryObject(), dbObject, reduce);
+		Map<String, BasicDBObject> mapResult = result.toMap();
+		if (mapResult.size() > 0) {
+			for (int i = 0; i < mapResult.size(); i++) {
+				BasicDBObject object = mapResult.get(i + "");
+				
+				TeamDailyRecord record = new TeamDailyRecord();
+				record.setFirstDaRen(new BigDecimal(object.get("totalNum").toString()).intValue());
+				record.setFirstHighVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
+				record.setFirstSuperVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
+				record.setSecondDaRen(new BigDecimal(object.get("totalNum").toString()).intValue());
+				record.setSecondHighVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
+				record.setSecondSuperVIP(new BigDecimal(object.get("totalNum").toString()).intValue());
+				listDailyCount.add(record);
+			}
+		}
+		return listDailyCount;
+	}
 }

--
Gitblit v1.8.0