| | |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.math.RoundingMode; |
| | | import java.util.List; |
| | | |
| | | /** |
| | |
| | | RunVip runVip = runVipMapper.selectOne(new LambdaQueryWrapper<RunVip>().eq(RunVip::getVipCode, vipCode)); |
| | | BigDecimal rebatePercent = runVip.getRebatePercent(); |
| | | BigDecimal amount = mallCharge.getAmount(); |
| | | BigDecimal rebateAmount = amount.multiply(rebatePercent).setScale(2, BigDecimal.ROUND_DOWN); |
| | | BigDecimal rebateAmount = amount.multiply(rebatePercent).setScale(2, RoundingMode.DOWN); |
| | | BigDecimal balanceToCoin = |
| | | new BigDecimal( |
| | | dataDictionaryCustomMapper.selectDicDataByTypeAndCode( |
| | |
| | | RunVipDataDictionaryEnum.RUN_VIP_BALANCE_TO_COIN.getCode() |
| | | ).getValue() |
| | | ); |
| | | BigDecimal rebateCoin = rebateAmount.divide(balanceToCoin, 2, BigDecimal.ROUND_DOWN); |
| | | BigDecimal rebateCoin = rebateAmount.divide(balanceToCoin, 2, RoundingMode.DOWN); |
| | | if(BigDecimal.ZERO.compareTo(rebateCoin) >= 0){ |
| | | return; |
| | | } |
| | |
| | | } |
| | | String orderNo = MallUtils.getOrderNum("FL"); |
| | | if(null != parent.getReferrerId()){ |
| | | BigDecimal rebateCoinGrandpa = rebateCoin.multiply(rebatePercent); |
| | | BigDecimal rebateCoinGrandpa = rebateCoin.multiply(rebatePercent).setScale(2, RoundingMode.DOWN); |
| | | MallMember grandpa = mallMemberMapper.selectInfoByInviteId(parent.getReferrerId()); |
| | | if(null != grandpa){ |
| | | //返利给上上级 |
| | | walletService.addBalance(rebateCoinGrandpa,grandpa.getId()); |
| | | mallMemberService.runVipMoneyFlowAdd( |
| | | grandpa.getId(), |
| | | mallMember.getId(), |
| | | orderNo, |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getValue(), |
| | | rebateCoinGrandpa, |
| | | StrUtil.format(RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getDescription(),mallMember.getPhone(),runVip.getVipName(),rebateCoinGrandpa), |
| | | YesOrNoEnum.YES.getValue() |
| | | ); |
| | | rebateCoin = rebateCoin.subtract(rebateCoinGrandpa); |
| | | if(BigDecimal.ZERO.compareTo(rebateCoinGrandpa) < 0){ |
| | | //返利给上上级 |
| | | walletService.addBalance(rebateCoinGrandpa,grandpa.getId()); |
| | | mallMemberService.runVipMoneyFlowAdd( |
| | | grandpa.getId(), |
| | | mallMember.getId(), |
| | | orderNo, |
| | | FlowTypeEnum.BALANCE.getValue(), |
| | | RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getValue(), |
| | | rebateCoinGrandpa, |
| | | StrUtil.format(RunVipMoneyFlowTypeEnum.BUY_VIP_REBATE.getDescription(),mallMember.getPhone(),runVip.getVipName(),rebateCoinGrandpa), |
| | | YesOrNoEnum.YES.getValue() |
| | | ); |
| | | rebateCoin = rebateCoin.subtract(rebateCoinGrandpa).setScale(2, RoundingMode.DOWN); |
| | | } |
| | | } |
| | | } |
| | | //返利给上级 |