From ad30586e75890d8d7ccdb18913a4d7c8c228456a Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Tue, 20 May 2025 10:06:24 +0800 Subject: [PATCH] feat(mall): 添加积分兑换比例设置功能 --- src/main/java/cc/mrbird/febs/vip/service/impl/VipCommonServiceImpl.java | 23 +++++++++++++++++------ 1 files changed, 17 insertions(+), 6 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 1740893..7fcf385 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 @@ -1,10 +1,8 @@ package cc.mrbird.febs.vip.service.impl; -import cc.mrbird.febs.common.enumerates.FlowTypeEnum; -import cc.mrbird.febs.common.enumerates.MoneyFlowTypeEnum; -import cc.mrbird.febs.common.enumerates.OrderStatusEnum; -import cc.mrbird.febs.common.enumerates.ScoreFlowTypeEnum; +import cc.mrbird.febs.common.enumerates.*; import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.mall.dto.ScoreSettingDto; import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.IApiMallGoodsService; @@ -22,6 +20,7 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -54,6 +53,7 @@ private final HappyMemberLevelMapper happyMemberLevelMapper; private final HappySaleLevelMapper happySaleLevelMapper; private final MallAchieveRecordMapper mallAchieveRecordMapper; + private final DataDictionaryCustomMapper dataDictionaryCustomMapper; /** * 根据订单ID获取分数 * 此方法处理订单得分逻辑,包括直接购买得分、会员等级得分和推荐人得分 @@ -99,6 +99,17 @@ ); // 更新会员钱包中的分数 mallMemberWalletService.add(amount, memberId, "score"); + BigDecimal scorePercent = BigDecimal.ONE; + DataDictionaryCustom dic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode( + DataDictionaryEnum.SCORE_SIGN_SETTING.getType(), + DataDictionaryEnum.SCORE_SIGN_SETTING.getCode()); + if (dic != null) { + ScoreSettingDto scoreSettingDto = JSONObject.parseObject(dic.getValue(), ScoreSettingDto.class); + BigDecimal bigDecimal = ObjectUtil.isEmpty(scoreSettingDto.getScorePercent()) ? BigDecimal.ONE : new BigDecimal(scoreSettingDto.getScorePercent()); + if (bigDecimal.compareTo(BigDecimal.ZERO) > 0) { + scorePercent = bigDecimal; + } + } // 下单自己获得积分,推荐人获得积分 //<memberId,积分数量>的map @@ -115,7 +126,7 @@ if(ObjectUtil.isNotEmpty(happyMemberLevel)){ // 计算自己获得的积分 BigDecimal minePercent = happyMemberLevel.getMinePercent(); - BigDecimal mineScore = amount.multiply(minePercent).setScale(0, RoundingMode.HALF_DOWN); + BigDecimal mineScore = amount.multiply(minePercent).multiply(scorePercent).setScale(0, RoundingMode.HALF_DOWN); log.info("下单获得积分:{}", mineScore); if(mineScore.compareTo(BigDecimal.ZERO) > 0){ mallMoneyFlowService.addMoneyFlow( @@ -132,7 +143,7 @@ if(StrUtil.isNotEmpty(member.getReferrerId())){ MallMember refMember = mallMemberMapper.selectInfoByInviteId(member.getReferrerId()); BigDecimal otherPercent = happyMemberLevel.getOtherPercent(); - BigDecimal otherScore = amount.multiply(otherPercent).setScale(0, RoundingMode.HALF_DOWN); + BigDecimal otherScore = amount.multiply(otherPercent).multiply(scorePercent).setScale(0, RoundingMode.HALF_DOWN); log.info("推荐人获得积分:{}", otherScore); if(otherScore.compareTo(BigDecimal.ZERO) > 0){ mallMoneyFlowService.addMoneyFlow( -- Gitblit v1.9.1