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 |  139 +++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 131 insertions(+), 8 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 ffb469b..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
@@ -2,11 +2,11 @@
 
 import cc.mrbird.febs.common.entity.FebsResponse;
 import cc.mrbird.febs.common.entity.QueryRequest;
-import cc.mrbird.febs.common.enumerates.AgentLevelEnum;
-import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum;
-import cc.mrbird.febs.common.enumerates.StateUpDownEnum;
+import cc.mrbird.febs.common.enumerates.*;
 import cc.mrbird.febs.common.exception.FebsException;
 import cc.mrbird.febs.common.utils.AppContants;
+import cc.mrbird.febs.common.utils.LoginUserUtil;
+import cc.mrbird.febs.common.utils.MallUtils;
 import cc.mrbird.febs.common.utils.RedisUtils;
 import cc.mrbird.febs.mall.dto.*;
 import cc.mrbird.febs.mall.entity.*;
@@ -18,6 +18,7 @@
 import cc.mrbird.febs.pay.model.MemberWithdrawalDto;
 import cc.mrbird.febs.pay.service.IXcxPayService;
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.date.DateUnit;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.ObjectUtil;
@@ -27,6 +28,7 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
@@ -35,6 +37,7 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.math.BigDecimal;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -78,6 +81,8 @@
     private final MallGoodsCouponMapper mallGoodsCouponMapper;
     private final HappySaleLevelMapper  happySaleLevelMapper;
     private final HappyMemberLevelMapper happyMemberLevelMapper;
+    private final MallOrderInfoMapper mallOrderInfoMapper;
+    private final HappyActivityOrderMapper happyActivityOrderMapper;
 
 
     @Override
@@ -97,6 +102,17 @@
         }
         mallMember.setAccountStatus(MallMember.ACCOUNT_STATUS_DISABLED);
         mallMemberMapper.updateById(mallMember);
+
+        String redisKey = AppContants.XCX_LOGIN_PREFIX + id;
+        String existToken = redisUtils.getString(redisKey);
+        if (StrUtil.isNotBlank(existToken)) {
+            Object o = redisUtils.get(existToken);
+            if (ObjectUtil.isNotEmpty(o)) {
+                redisUtils.del(existToken);
+            }
+        }
+        redisUtils.del(AppContants.XCX_LOGIN_PREFIX + id);
+        redisUtils.del(AppContants.XCX_LOGIN_PHONE_PREFIX + id);
         return new FebsResponse().success();
     }
 
@@ -512,12 +528,16 @@
 
         Integer type = mallSystemPayDto.getType();
         String filedType = "";
+        Integer flowType = 0;
         if (type == 1) {
             filedType = "balance";
+            flowType = FlowTypeEnum.BALANCE.getValue();
         } else if (type == 2) {
-            filedType = "score";
-        } else if (type == 3) {
             filedType = "prizeScore";
+            flowType = FlowTypeEnum.PRIZE_SCORE.getValue();
+        } else if (type == 3) {
+            filedType = "commission";
+            flowType = FlowTypeEnum.COMMISSION.getValue();
         } else {
             throw new FebsException("参数错误");
         }
@@ -531,7 +551,15 @@
         } else {
             iApiMallMemberWalletService.add(mallSystemPayDto.getAddBalance(), mallSystemPayDto.getId(), filedType);
         }
-        mallMoneyFlowService.addMoneyFlow(memberId, bigDecimal, MoneyFlowTypeEnum.SYSTEM.getValue(), null, type);
+        mallMoneyFlowService.addMoneyFlow(
+                memberId,
+                bigDecimal,
+                ScoreFlowTypeEnum.SYSTEM.getValue(),
+                MallUtils.getOrderNum(),
+                flowType,
+                StrUtil.format(ScoreFlowTypeEnum.SYSTEM.getDesc(),bigDecimal),
+                2
+        );
         return new FebsResponse().success();
     }
 
@@ -952,9 +980,104 @@
     public FebsResponse checkOrder(Long id) {
 
         MallMember mallMember = this.baseMapper.selectById(id);
-        mallMember.setCheckOrder(StateUpDownEnum.DOWN.getCode() == mallMember.getCheckOrder() ? StateUpDownEnum.UP.getCode() : StateUpDownEnum.DOWN.getCode());
-        this.baseMapper.updateById(mallMember);
+
+        if(ObjectUtil.isNotEmpty(mallMember)){
+            mallMember.setCheckOrder(StateUpDownEnum.DOWN.getCode() == mallMember.getCheckOrder() ? StateUpDownEnum.UP.getCode() : StateUpDownEnum.DOWN.getCode());
+            this.baseMapper.updateById(mallMember);
+        }
 
         return new FebsResponse().success().message("操作成功");
     }
+
+    @Override
+    public FebsResponse checkLeader(Long id) {
+
+        MallMember mallMember = this.baseMapper.selectById(id);
+        if(ObjectUtil.isNotEmpty(mallMember)){
+            mallMember.setCheckLeader(StateUpDownEnum.DOWN.getCode() == mallMember.getCheckLeader() ? StateUpDownEnum.UP.getCode() : StateUpDownEnum.DOWN.getCode());
+            this.baseMapper.updateById(mallMember);
+        }
+
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @Override
+    public FebsResponse dataInfo() {
+        AdminDataInfoVo adminDataInfoVo = new AdminDataInfoVo();
+
+        List<MallMember> mallMembers = this.baseMapper.selectList(null);
+        if(CollUtil.isNotEmpty(mallMembers)){
+            adminDataInfoVo.setTotalMember(mallMembers.size() + 64997);
+
+            adminDataInfoVo.setTotalDayMember(
+                    Math.toIntExact(mallMembers.stream().filter(mallMember -> DateUtil.compare(mallMember.getCreatedTime(), DateUtil.beginOfDay(new Date())) >= 0).count()));
+            adminDataInfoVo.setTotalWeekMember(
+                    Math.toIntExact(mallMembers.stream().filter(mallMember -> DateUtil.compare(mallMember.getCreatedTime(), DateUtil.beginOfWeek(new Date())) >= 0).count()));
+            adminDataInfoVo.setTotalMonthMember(
+                    Math.toIntExact(mallMembers.stream().filter(mallMember -> DateUtil.compare(mallMember.getCreatedTime(), DateUtil.beginOfMonth(new Date())) >= 0).count()));
+        }
+
+
+        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