From 4c0f0fe5fd8ca17e90114d9473a7fb0bec494578 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Fri, 20 Dec 2024 13:20:42 +0800 Subject: [PATCH] refactor(mall): 优化 VIP 信息获取逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java | 26 ++++++++++++++++++-------- 1 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java index 2b15086..5ea16a2 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/RunVipServiceImpl.java @@ -50,18 +50,19 @@ private final MallMemberMapper mallMemberMapper; @Override public List<ApiRunVipVo> vipInfo() { - MallMember member = LoginUserUtil.getLoginUser(); + Long memberId = LoginUserUtil.getLoginUser().getId(); List<ApiRunVipVo> apiRunVipVos = new ArrayList<>(); - if (StrUtil.isEmpty(member.getLevel())) { + MallMember mallMember = mallMemberMapper.selectById(memberId); + if (StrUtil.isEmpty(mallMember.getLevel())) { return apiRunVipVos; } - String level = member.getLevel(); + String level = mallMember.getLevel(); //获取当前用户的VIP等级 RunVip runVip = this.baseMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, level)); //获取大于当前用户等级序号的所有的VIP等级 LambdaQueryWrapper<RunVip> runVipLambdaQueryWrapper = new LambdaQueryWrapper<>(); runVipLambdaQueryWrapper.eq(RunVip::getState, YesOrNoEnum.YES.getValue()); - runVipLambdaQueryWrapper.gt(RunVip::getOrderNumber, runVip.getOrderNumber()); + runVipLambdaQueryWrapper.ge(RunVip::getOrderNumber, runVip.getOrderNumber()); List<RunVip> runVips = this.baseMapper.selectList(runVipLambdaQueryWrapper); apiRunVipVos = RunVipConversion.INSTANCE.entityToVos(runVips); @@ -304,10 +305,19 @@ ); if(CollUtil.isNotEmpty(mallMoneyFlows)){ BigDecimal reduce = mallMoneyFlows.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - if(reduce.intValue() > realScore){ - apiRunHealthVo.setScoreUsed(reduce.intValue() - realScore); - apiRunHealthVo.setScoreTotal(reduce.intValue()); - } + apiRunHealthVo.setScoreTotal(reduce.intValue()); + } + List<MallMoneyFlow> mallMoneyFlowScoreOuts = mallMoneyFlowMapper.selectList( + new LambdaQueryWrapper<MallMoneyFlow>() + .eq(MallMoneyFlow::getMemberId, memberId) + .eq(MallMoneyFlow::getFlowType, FlowTypeEnum.SCORE.getValue()) + .eq(MallMoneyFlow::getType, RunVipMoneyFlowTypeEnum.SCORE_OUT_BALANCE.getValue()) + .ge(MallMoneyFlow::getCreatedTime, DateUtil.beginOfDay(DateUtil.date())) + .le(MallMoneyFlow::getCreatedTime, DateUtil.endOfDay(DateUtil.date())) + ); + if(CollUtil.isNotEmpty(mallMoneyFlowScoreOuts)){ + BigDecimal reduce = mallMoneyFlowScoreOuts.stream().map(MallMoneyFlow::getAmount).reduce(BigDecimal.ZERO, BigDecimal::add).abs(); + apiRunHealthVo.setScoreUsed(reduce.intValue()); } return apiRunHealthVo; } -- Gitblit v1.9.1