From 15c200aa7e0ced518364a68769503472b542c9f4 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 08 Jul 2025 14:03:57 +0800 Subject: [PATCH] feat(mall): 添加会员数据统计功能 --- src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallMemberServiceImpl.java | 95 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 87 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..fee552f 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; @@ -97,6 +100,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 +526,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 +549,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 +978,62 @@ 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()); + + 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())); + } + + 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()); + + } + + return new FebsResponse().success().data(adminDataInfoVo); + } } -- Gitblit v1.9.1