From 9b51a95fa8bc9b3a86108c6900e17fc55f8db467 Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Mon, 19 May 2025 17:02:07 +0800 Subject: [PATCH] refactor(vip): 优化积分和返佣计算逻辑 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java | 53 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 44 insertions(+), 9 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java index 42a9dbf..b4722f6 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallActServiceImpl.java @@ -3,8 +3,10 @@ import cc.mrbird.febs.common.enumerates.DataDictionaryEnum; import cc.mrbird.febs.common.enumerates.FlowTypeEnum; import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; +import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum; import cc.mrbird.febs.common.exception.FebsException; import cc.mrbird.febs.common.utils.LoginUserUtil; +import cc.mrbird.febs.common.utils.MallUtils; import cc.mrbird.febs.mall.dto.ApiMallActListDto; import cc.mrbird.febs.mall.dto.ApiMallActWinDetailsDto; import cc.mrbird.febs.mall.entity.*; @@ -134,7 +136,7 @@ BigDecimal prizeScore = wallet.getPrizeScore(); Integer actScoreCnt = mallActSet.getActScoreCnt(); if(prizeScore.compareTo(new BigDecimal(actScoreCnt))<0){ - throw new FebsException("竞猜积分不足"); + throw new FebsException("积分不足"); } /** * 中奖概率 20% @@ -190,6 +192,7 @@ }else{ apiMallAwardDetailsVo.setAwardName("未中奖"); } + apiMallAwardDetailsVo.setAwardType(MallActAwardSet.AWARD_TYPE_XXCY); }else if(new BigDecimal(randomInt).compareTo(failureScope) > 0 && new BigDecimal(randomInt).compareTo(failureScope.add(maxProbability.multiply(new BigDecimal(100)))) <= 0){ //大于failureScope.add(maxProbability.multiply(new BigDecimal(100)))这个数字,则中奖 @@ -225,6 +228,7 @@ }else{ apiMallAwardDetailsVo.setAwardName("未中奖"); } + apiMallAwardDetailsVo.setAwardType(MallActAwardSet.AWARD_TYPE_XXCY); }else{ List<MallActAwardSet> idList = new ArrayList(); for(MallActAwardSet mallActAwardSet : mallActAwardSets){ @@ -293,6 +297,7 @@ }else{ apiMallAwardDetailsVo.setAwardName("未中奖"); } + apiMallAwardDetailsVo.setAwardType(MallActAwardSet.AWARD_TYPE_XXCY); } }else{ //获取活动下该类别的奖品 @@ -315,6 +320,7 @@ }else{ apiMallAwardDetailsVo.setAwardName("未中奖"); } + apiMallAwardDetailsVo.setAwardType(MallActAwardSet.AWARD_TYPE_XXCY); }else{ List<MallActAwardSet> idList = new ArrayList(); for(MallActAwardSet mallActAwardSet : mallActAwardSets){ @@ -400,6 +406,7 @@ }else{ apiMallAwardDetailsVo.setAwardName("未中奖"); } + apiMallAwardDetailsVo.setAwardType(MallActAwardSet.AWARD_TYPE_XXCY); }else{ List<MallActAwardSet> idList = new ArrayList(); for(MallActAwardSet mallActAwardSet : mallActAwardSets){ @@ -468,6 +475,7 @@ }else{ apiMallAwardDetailsVo.setAwardName("未中奖"); } + apiMallAwardDetailsVo.setAwardType(MallActAwardSet.AWARD_TYPE_XXCY); } }else{ //获取活动下该类别的奖品 @@ -490,6 +498,7 @@ }else{ apiMallAwardDetailsVo.setAwardName("未中奖"); } + apiMallAwardDetailsVo.setAwardType(MallActAwardSet.AWARD_TYPE_XXCY); }else{ List<MallActAwardSet> idList = new ArrayList(); for(MallActAwardSet mallActAwardSet : mallActAwardSets){ @@ -552,15 +561,41 @@ // 消耗积分 BigDecimal useScore = new BigDecimal(actScoreCnt); mallMemberWalletService.reduce(useScore, wallet.getMemberId(), "prizeScore"); - mallMoneyFlowService.addMoneyFlow(wallet.getMemberId(), useScore.negate(), MoneyFlowTypeEnum.PRIZE.getValue(), null, FlowTypeEnum.PRIZE_SCORE.getValue()); + mallMoneyFlowService.addMoneyFlow( + wallet.getMemberId(), + useScore.negate(), + ScoreFlowTypeEnum.LUCKY_DRAW.getValue(), + MallUtils.getOrderNum(), + FlowTypeEnum.PRIZE_SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.LUCKY_DRAW.getDesc(),useScore), + 2 + ); - BigDecimal prize = new BigDecimal(apiMallAwardDetailsVo.getAwardValue()); - if (apiMallAwardDetailsVo.getAwardType() == 1) { - mallMemberWalletService.add(prize, wallet.getMemberId(), "prizeScore"); - mallMoneyFlowService.addMoneyFlow(wallet.getMemberId(), prize, MoneyFlowTypeEnum.PRIZE.getValue(), null, FlowTypeEnum.PRIZE_SCORE.getValue()); - } else if (apiMallAwardDetailsVo.getAwardType() == 2) { - mallMemberWalletService.add(prize, wallet.getMemberId(), "commission"); - mallMoneyFlowService.addMoneyFlow(wallet.getMemberId(), prize, MoneyFlowTypeEnum.PRIZE.getValue(), null, FlowTypeEnum.COMMISSION.getValue()); + if (apiMallAwardDetailsVo.getAwardType() != 3) { + BigDecimal prize = new BigDecimal(apiMallAwardDetailsVo.getAwardValue()); + if (apiMallAwardDetailsVo.getAwardType() == 1) { + mallMemberWalletService.add(prize, wallet.getMemberId(), "prizeScore"); + mallMoneyFlowService.addMoneyFlow( + wallet.getMemberId(), + prize, + ScoreFlowTypeEnum.LUCKY_DRAW.getValue(), + MallUtils.getOrderNum(), + FlowTypeEnum.PRIZE_SCORE.getValue(), + StrUtil.format(ScoreFlowTypeEnum.LUCKY_DRAW.getDesc(),prize), + 2 + ); + } else if (apiMallAwardDetailsVo.getAwardType() == 2) { + mallMemberWalletService.add(prize, wallet.getMemberId(), "commission"); + mallMoneyFlowService.addMoneyFlow( + wallet.getMemberId(), + prize, + ScoreFlowTypeEnum.LUCKY_DRAW_COMMISSION.getValue(), + MallUtils.getOrderNum(), + FlowTypeEnum.COMMISSION.getValue(), + StrUtil.format(ScoreFlowTypeEnum.LUCKY_DRAW_COMMISSION.getDesc(),prize), + 2 + ); + } } return apiMallAwardDetailsVo; } -- Gitblit v1.9.1