From dfd8d21293c86603fc0a42421bfbdb137ea1b1e4 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 20 May 2025 10:44:56 +0800 Subject: [PATCH] refactor(vip): 优化会员购买经验记录和分数更新逻 - 移除错误的代码块,避免重复记录会员购买经验 - 在计算推荐人积分的同时,记录会员购买经验 - 修复了原代码中可能导致分数更新不正确的问题 --- src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java | 41 ++++++++++++++++++++++++++++------------- 1 files changed, 28 insertions(+), 13 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java index 7fcf385..e403f53 100644 --- a/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java @@ -86,19 +86,6 @@ Long memberId = mallOrderInfo.getMemberId(); // 根据会员ID查询会员信息 MallMember member = mallMemberMapper.selectById(memberId); - - // 记录会员购买获得的经验 - mallMoneyFlowService.addMoneyFlow( - memberId, - amount, - ScoreFlowTypeEnum.BUY.getValue(), - mallOrderInfo.getOrderNo(), - FlowTypeEnum.SCORE.getValue(), - StrUtil.format(ScoreFlowTypeEnum.BUY.getDesc(),amount), - 2 - ); - // 更新会员钱包中的分数 - mallMemberWalletService.add(amount, memberId, "score"); BigDecimal scorePercent = BigDecimal.ONE; DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( DataDictionaryEnum.SCORE_SIGN_SETTING.getType(), @@ -138,6 +125,20 @@ StrUtil.format( ScoreFlowTypeEnum.MINE_RECOMMEND.getDesc(),mineScore), 2); mallMemberWalletService.add(mineScore,memberId , "prizeScore"); + + // 记录会员购买获得的经验 + BigDecimal multiply = amount.multiply(minePercent); + mallMoneyFlowService.addMoneyFlow( + memberId, + multiply, + ScoreFlowTypeEnum.BUY.getValue(), + mallOrderInfo.getOrderNo(), + FlowTypeEnum.SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.BUY.getDesc(),multiply), + 2 + ); + // 更新会员钱包中的分数 + mallMemberWalletService.add(multiply, memberId, "score"); } // 计算推荐人获得的积分 if(StrUtil.isNotEmpty(member.getReferrerId())){ @@ -155,6 +156,20 @@ StrUtil.format( ScoreFlowTypeEnum.OTHER_RECOMMEND.getDesc(),otherScore), 2); mallMemberWalletService.add(otherScore,refMember.getId() , "prizeScore"); + + // 记录会员购买获得的经验 + BigDecimal multiply = amount.multiply(otherPercent); + mallMoneyFlowService.addMoneyFlow( + refMember.getId(), + multiply, + ScoreFlowTypeEnum.BUY.getValue(), + mallOrderInfo.getOrderNo(), + FlowTypeEnum.SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.BUY.getDesc(),multiply), + 2 + ); + // 更新会员钱包中的分数 + mallMemberWalletService.add(multiply, refMember.getId(), "score"); } } } -- Gitblit v1.9.1