From 2922e51a7a8e657a8467c818ae16700e41ddac77 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期二, 10 五月 2022 19:45:58 +0800
Subject: [PATCH] bug修复

---
 app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornConsumeRecordServiceImpl.java |   41 +++++++++++++++++++++++++++++++----------
 1 files changed, 31 insertions(+), 10 deletions(-)

diff --git a/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornConsumeRecordServiceImpl.java b/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornConsumeRecordServiceImpl.java
index bca656e..0d169e5 100644
--- a/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornConsumeRecordServiceImpl.java
+++ b/app/src/main/java/com/yeshi/makemoney/app/service/impl/goldcorn/GoldCornConsumeRecordServiceImpl.java
@@ -4,15 +4,19 @@
 import javax.annotation.Resource;
 
 import com.yeshi.makemoney.app.exception.goldcorn.GoldCornConsumeRecordException;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.mongodb.core.aggregation.Aggregation;
+import org.springframework.data.mongodb.core.aggregation.AggregationOperation;
+import org.springframework.data.mongodb.core.aggregation.AggregationResults;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.*;
 
 import org.yeshi.utils.StringUtil;
 import org.yeshi.utils.TimeUtil;
 import org.yeshi.utils.bean.BeanUtil;
-
-import java.util.List;
 
 import com.yeshi.makemoney.app.dao.goldcorn.GoldCornConsumeRecordDao;
 import com.yeshi.makemoney.app.entity.goldcorn.GoldCornConsumeRecord;
@@ -29,14 +33,20 @@
     @Resource
     private GoldCornConsumeRecordDao goldCornConsumeRecordDao;
 
-    @Override
-    public List<GoldCornConsumeRecord> list(GoldCornConsumeRecordQuery goldCornConsumeRecordQuery, int page, int pageSize) {
+    private DaoQuery createDaoQuery(GoldCornConsumeRecordQuery goldCornConsumeRecordQuery) {
         DaoQuery daoQuery = new DaoQuery();
         daoQuery.type = goldCornConsumeRecordQuery.getType();
         daoQuery.uid = goldCornConsumeRecordQuery.getUid();
         daoQuery.minCreateTime = goldCornConsumeRecordQuery.toStartTime();
         daoQuery.maxCreateTime = goldCornConsumeRecordQuery.toEndTime();
+        daoQuery.sortList = Arrays.asList(new Sort.Order[]{Sort.Order.desc("createTime")});
+        daoQuery.eventId = goldCornConsumeRecordQuery.getEventId();
+        return daoQuery;
+    }
 
+    @Override
+    public List<GoldCornConsumeRecord> list(GoldCornConsumeRecordQuery goldCornConsumeRecordQuery, int page, int pageSize) {
+        DaoQuery daoQuery = createDaoQuery(goldCornConsumeRecordQuery);
         daoQuery.start = (page - 1) * pageSize;
         daoQuery.count = pageSize;
         return goldCornConsumeRecordDao.list(daoQuery);
@@ -44,11 +54,7 @@
 
     @Override
     public long count(GoldCornConsumeRecordQuery goldCornConsumeRecordQuery) {
-        DaoQuery daoQuery = new DaoQuery();
-        daoQuery.type = goldCornConsumeRecordQuery.getType();
-        daoQuery.uid = goldCornConsumeRecordQuery.getUid();
-        daoQuery.minCreateTime = goldCornConsumeRecordQuery.toStartTime();
-        daoQuery.maxCreateTime = goldCornConsumeRecordQuery.toEndTime();
+        DaoQuery daoQuery = createDaoQuery(goldCornConsumeRecordQuery);
         return goldCornConsumeRecordDao.count(daoQuery);
     }
 
@@ -101,5 +107,20 @@
         }
     }
 
+    @Override
+    public BigDecimal sumMoney(GoldCornConsumeRecordQuery query) {
+        Criteria criteria = goldCornConsumeRecordDao.getCriteria(createDaoQuery(query));
+        List<AggregationOperation> list = new ArrayList<>();
+        if (criteria != null) {
+            list.add(Aggregation.match(criteria));
+        }
+        list.add(Aggregation.project("money"));
+
+        list.add(Aggregation.group().sum("money").as("money"));
+        AggregationResults<Map> results = goldCornConsumeRecordDao.aggregate(list, Map.class);
+        Object money = results.getUniqueMappedResult().get("money");
+        return money == null ? new BigDecimal(0) : new BigDecimal(money + "").divide(new BigDecimal(100), 2, RoundingMode.FLOOR);
+    }
+
 
 }
\ No newline at end of file

--
Gitblit v1.8.0