From 7b7209a7b9b5a991481bc933996ac67c9ca5f8b0 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 08 Jul 2025 15:01:14 +0800
Subject: [PATCH] feat(mall): 更新管理员数据信息中的总会员数和总活动会员数

---
 src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java |   78 ++++++++++++++++++++++++++++++--------
 1 files changed, 61 insertions(+), 17 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
index fee552f..c90e08c 100644
--- a/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -81,6 +81,8 @@
     private final MallGoodsCouponMapper mallGoodsCouponMapper;
     private final HappySaleLevelMapper  happySaleLevelMapper;
     private final HappyMemberLevelMapper happyMemberLevelMapper;
+    private final MallOrderInfoMapper mallOrderInfoMapper;
+    private final HappyActivityOrderMapper happyActivityOrderMapper;
 
 
     @Override
@@ -1005,7 +1007,7 @@
 
         List<MallMember> mallMembers = this.baseMapper.selectList(null);
         if(CollUtil.isNotEmpty(mallMembers)){
-            adminDataInfoVo.setTotalMember(mallMembers.size());
+            adminDataInfoVo.setTotalMember(mallMembers.size() + 64997);
 
             adminDataInfoVo.setTotalDayMember(
                     Math.toIntExact(mallMembers.stream().filter(mallMember -> DateUtil.compare(mallMember.getCreatedTime(), DateUtil.beginOfDay(new Date())) >= 0).count()));
@@ -1015,23 +1017,65 @@
                     Math.toIntExact(mallMembers.stream().filter(mallMember -> DateUtil.compare(mallMember.getCreatedTime(), DateUtil.beginOfMonth(new Date())) >= 0).count()));
         }
 
-        List<Integer> typeList = Arrays.asList(ScoreFlowTypeEnum.WECHAT_PAY.getValue(), ScoreFlowTypeEnum.PAY_BALANCE.getValue());
-        List<MallMoneyFlow> mallMoneyFlows = mallMoneyFlowMapper.selectList(
-                Wrappers.lambdaQuery(MallMoneyFlow.class)
-                        .in(MallMoneyFlow::getType, typeList)
-        );
-        if(CollUtil.isNotEmpty(mallMoneyFlows)){
-            adminDataInfoVo.setTotalAmount(mallMoneyFlows.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).negate());
-            adminDataInfoVo.setTotalDayAmount(
-                    mallMoneyFlows.stream().filter(mallMoneyFlow -> DateUtil.compare(mallMoneyFlow.getCreatedTime(), DateUtil.beginOfDay(new Date())) >= 0)
-                            .map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).negate());
-            adminDataInfoVo.setTotalWeekAmount(
-                    mallMoneyFlows.stream().filter(mallMoneyFlow -> DateUtil.compare(mallMoneyFlow.getCreatedTime(), DateUtil.beginOfWeek(new Date())) >= 0)
-                            .map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).negate());
-            adminDataInfoVo.setTotalMonthAmount(
-                    mallMoneyFlows.stream().filter(mallMoneyFlow -> DateUtil.compare(mallMoneyFlow.getCreatedTime(), DateUtil.beginOfMonth(new Date())) >= 0)
-                            .map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).negate());
 
+        BigDecimal totalAmount = BigDecimal.ZERO;//总数
+        BigDecimal totalDayAmount = BigDecimal.ZERO;//新增
+        BigDecimal totalWeekAmount = BigDecimal.ZERO;//本周新增
+        BigDecimal totalMonthAmount = BigDecimal.ZERO;//本月新增
+
+        List<MallOrderInfo> mallOrderInfos = mallOrderInfoMapper.selectList(
+                Wrappers.lambdaQuery(MallOrderInfo.class)
+                        .eq(MallOrderInfo::getPayResult, "1")
+        );
+        if(CollUtil.isNotEmpty(mallOrderInfos)){
+            totalAmount = totalAmount.add(mallOrderInfos.stream().map(MallOrderInfo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+            totalDayAmount = totalDayAmount.add(
+                    mallOrderInfos.stream().filter(entity -> DateUtil.compare(entity.getPayTime(), DateUtil.beginOfDay(new Date())) >= 0)
+                    .map(MallOrderInfo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+            totalWeekAmount = totalWeekAmount.add(
+                    mallOrderInfos.stream().filter(entity -> DateUtil.compare(entity.getPayTime(), DateUtil.beginOfWeek(new Date())) >= 0)
+                    .map(MallOrderInfo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+            totalMonthAmount = totalMonthAmount.add(
+                    mallOrderInfos.stream().filter(entity -> DateUtil.compare(entity.getPayTime(), DateUtil.beginOfMonth(new Date())) >= 0)
+                    .map(MallOrderInfo::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+        }
+
+        List<HappyActivityOrder> happyActivityOrders = happyActivityOrderMapper.selectList(
+                Wrappers.lambdaQuery(HappyActivityOrder.class)
+                        .eq(HappyActivityOrder::getPayState, StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode())
+        );
+        if(CollUtil.isNotEmpty(happyActivityOrders)){
+            totalAmount = totalAmount.add(happyActivityOrders.stream().map(HappyActivityOrder::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+            totalDayAmount = totalDayAmount.add(
+                    happyActivityOrders.stream().filter(entity -> DateUtil.compare(entity.getPayTime(), DateUtil.beginOfDay(new Date())) >= 0)
+                            .map(HappyActivityOrder::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+            totalWeekAmount = totalWeekAmount.add(
+                    happyActivityOrders.stream().filter(entity -> DateUtil.compare(entity.getPayTime(), DateUtil.beginOfWeek(new Date())) >= 0)
+                            .map(HappyActivityOrder::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+            totalMonthAmount = totalMonthAmount.add(
+                    happyActivityOrders.stream().filter(entity -> DateUtil.compare(entity.getPayTime(), DateUtil.beginOfMonth(new Date())) >= 0)
+                            .map(HappyActivityOrder::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add));
+        }
+        adminDataInfoVo.setTotalAmount(totalAmount);
+        adminDataInfoVo.setTotalDayAmount(totalDayAmount);
+        adminDataInfoVo.setTotalWeekAmount(totalWeekAmount);
+        adminDataInfoVo.setTotalMonthAmount(totalMonthAmount);
+
+        List<HappyActivityOrder> happyActivityDoneOrders = happyActivityOrderMapper.selectList(
+                Wrappers.lambdaQuery(HappyActivityOrder.class)
+                        .eq(HappyActivityOrder::getPayState, StateUpDownEnum.PAY_STATE_PAY_SUCCESS.getCode())
+                        .eq(HappyActivityOrder::getState, StateUpDownEnum.ORDER_STATE_USED.getCode())
+        );
+
+        if(CollUtil.isNotEmpty(happyActivityDoneOrders)){
+            adminDataInfoVo.setTotalActivityMember(happyActivityDoneOrders.size() + 64997);
+
+            adminDataInfoVo.setTotalActivityDayMember(
+                    Math.toIntExact(happyActivityDoneOrders.stream().filter(entity -> DateUtil.compare(entity.getCreatedTime(), DateUtil.beginOfDay(new Date())) >= 0).count()));
+            adminDataInfoVo.setTotalActivityWeekMember(
+                    Math.toIntExact(happyActivityDoneOrders.stream().filter(entity -> DateUtil.compare(entity.getCreatedTime(), DateUtil.beginOfWeek(new Date())) >= 0).count()));
+            adminDataInfoVo.setTotalActivityMonthMember(
+                    Math.toIntExact(happyActivityDoneOrders.stream().filter(entity -> DateUtil.compare(entity.getCreatedTime(), DateUtil.beginOfMonth(new Date())) >= 0).count()));
         }
 
         return new FebsResponse().success().data(adminDataInfoVo);

--
Gitblit v1.9.1