Administrator
2025-07-08 7b7209a7b9b5a991481bc933996ac67c9ca5f8b0
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java
@@ -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
@@ -975,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);
    }
}