From 2464548977f4720bc8fceeb5d999c1a3852c2d10 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 21 四月 2022 19:38:30 +0800 Subject: [PATCH] 签到与任务 --- app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java | 47 ++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 44 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java b/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java index 86d6371..4c1770e 100644 --- a/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java +++ b/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornGetRecordServiceImpl.java @@ -3,9 +3,11 @@ import com.yeshi.makemoney.app.dao.goldcorn.GoldCornGetRecordDao; import com.yeshi.makemoney.app.dao.goldcorn.GoldCornGetRecordDao.DaoQuery; import com.yeshi.makemoney.app.entity.goldcorn.GoldCornGetRecord; +import com.yeshi.makemoney.app.entity.goldcorn.GoldCornGetType; import com.yeshi.makemoney.app.exception.goldcorn.GoldCornGetRecordException; import com.yeshi.makemoney.app.service.inter.goldcorn.GoldCornGetRecordService; import com.yeshi.makemoney.app.service.query.goldcorn.GoldCornGetRecordQuery; +import com.yeshi.makemoney.app.utils.goldcorn.GoldCornUtil; import org.springframework.data.domain.Sort; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.aggregation.Aggregation; @@ -14,6 +16,7 @@ import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; import org.springframework.stereotype.Service; +import org.yeshi.utils.TimeUtil; import javax.annotation.Resource; import java.util.*; @@ -29,6 +32,10 @@ DaoQuery daoQuery = new DaoQuery(); daoQuery.type = goldCornGetRecordQuery.getType(); daoQuery.uid = goldCornGetRecordQuery.getUid(); + daoQuery.day=goldCornGetRecordQuery.getDay(); + daoQuery.dayList=goldCornGetRecordQuery.getDayList(); + + daoQuery.minCreateTime = goldCornGetRecordQuery.toStartTime(); daoQuery.maxCreateTime = goldCornGetRecordQuery.toEndTime(); @@ -43,6 +50,8 @@ DaoQuery daoQuery = new DaoQuery(); daoQuery.type = goldCornGetRecordQuery.getType(); daoQuery.uid = goldCornGetRecordQuery.getUid(); + daoQuery.day=goldCornGetRecordQuery.getDay(); + daoQuery.dayList=goldCornGetRecordQuery.getDayList(); daoQuery.minCreateTime = goldCornGetRecordQuery.toStartTime(); daoQuery.maxCreateTime = goldCornGetRecordQuery.toEndTime(); return goldCornGetRecordDao.count(daoQuery); @@ -84,13 +93,14 @@ } @Override - public Long getGoldCornByDay(Long uid, String day) { + public Long getGoldCornByDay(Long uid, Date day) { List<Criteria> andList = new ArrayList<>(); if (uid != null) { andList.add(Criteria.where("uid").is(uid)); } + if (day != null) { - andList.add(Criteria.where("day").is(day)); + andList.add(Criteria.where("day").is(GoldCornUtil.getFormatDay(day))); } Criteria[] ands = new Criteria[andList.size()]; @@ -135,6 +145,9 @@ @Override public Map<Long, Integer> sumGoldCornByFromUids(Long uid, List<Long> fromUidList, String day) { + if (fromUidList == null || fromUidList.size() == 0) { + return new HashMap<>(); + } Criteria[] ands = new Criteria[3]; ands[0] = Criteria.where("day").is(day); ands[1] = Criteria.where("uid").is(uid); @@ -143,7 +156,7 @@ for (int i = 0; i < ors.length; i++) { ors[i] = Criteria.where("fromUid").is(fromUidList.get(i)); } - ands[3] = new Criteria().orOperator(ors); + ands[2] = new Criteria().orOperator(ors); List<AggregationOperation> list = new ArrayList<>(); list.add(Aggregation.match(new Criteria().andOperator(ands))); @@ -159,5 +172,33 @@ return map; } + @Override + public int getContinueDay(Long uid, GoldCornGetType type, Date deadDate) { + List<AggregationOperation> list = new ArrayList<>(); + list.add(Aggregation.match(Criteria.where("uid").is(uid).and("type").is(type).and("createTime").lte(deadDate))); + list.add(Aggregation.group("day").max("createTime").as("createTime")); + list.add(Aggregation.sort(Sort.Direction.DESC, "createTime")); + //鏈�澶ч檺鍒朵负365澶� + list.add(Aggregation.limit(365)); + list.add(Aggregation.project("day")); + AggregationResults<Map<String,String>> results = goldCornGetRecordDao.aggregate(list, Map.class); + List<Map<String,String>> resultList = results.getMappedResults(); + //鑾峰彇杩炵画鐨勫ぉ鏁� + String format="yyyy-MM-dd"; + Date lastDay = new Date(TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(deadDate.getTime(), format), format)); + int continueDay = 0; + for (Map<String,String> day : resultList) { + Long timestamp = TimeUtil.convertToTimeTemp(day.get("_id"), format); + long cha = lastDay.getTime() - timestamp; + if (cha <= 1000 * 60 * 60 * 24L) { + continueDay++; + } else { + break; + } + lastDay = new Date(timestamp); + } + return continueDay; + } + } \ No newline at end of file -- Gitblit v1.8.0