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 | 24 +++++++++++++++++-------
1 files changed, 17 insertions(+), 7 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 d7d34dc..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,12 +50,13 @@
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等级
@@ -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