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