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