xiaoyong931011
2023-03-14 7655547b449a79a9330fd03440a616b3d6ef8362
src/main/java/cc/mrbird/febs/mall/service/impl/AgentServiceImpl.java
@@ -425,6 +425,7 @@
     * @param orderNo
     * @param memberId
     */
    @Override
    public void flowTotalScoreBalance(List<MallMemberWallet> mallMemberWallets,BigDecimal amount,int flowType,String orderNo,Long memberId){
        //给当前等级的每个用户发放星级奖励
        int count = 0;
@@ -488,50 +489,5 @@
        }
    }
    /**
     * 平级奖励补贴
     */
    public void getPeerPerk(){
        /**
         * 全体用户
         *      对象:产生了收益的用户的直属上级
         *      条件:等级和用户等级一样
         *      补贴:每日补贴的10%,例如用户当日的补贴总额为100,直属上级拿100*10%=10,
         *      限制:直推收益除外。
         */
        //平级补贴百分比
        DataDictionaryCustom teamEqualsPerkDic = dataDictionaryCustomMapper.selectDicDataByTypeAndCode(
                DataDictionaryEnum.TEAM_EQUALS_PERK.getType(),
                DataDictionaryEnum.TEAM_EQUALS_PERK.getCode());
        BigDecimal teamEqualsPerkPercent = new BigDecimal(teamEqualsPerkDic.getValue()).abs().multiply(BigDecimal.valueOf(0.01));
        //产生了收益的用户和直属上级
        List<AdminTeamEqualsPerkVo> adminTeamEqualsPerkVos = mallMoneyFlowMapper.selectTeamEqualsMemberByDate(new Date());
        if(CollUtil.isNotEmpty(adminTeamEqualsPerkVos)){
            for(AdminTeamEqualsPerkVo adminTeamEqualsPerkVo : adminTeamEqualsPerkVos){
                BigDecimal sumAmount = adminTeamEqualsPerkVo.getSumAmount();
                //平级补贴
                BigDecimal teamEqualsPerkAmount = teamEqualsPerkPercent.multiply(sumAmount).setScale(2, BigDecimal.ROUND_DOWN);
                MallMemberWallet mallMemberWallet = mallMemberWalletMapper.selectWalletByMemberId(adminTeamEqualsPerkVo.getRtMemberId());
                BigDecimal totalScore = mallMemberWallet.getTotalScore();
                if(totalScore.compareTo(teamEqualsPerkAmount) < 0){
                    teamEqualsPerkAmount = totalScore;
                }
                if(BigDecimal.ZERO.compareTo(teamEqualsPerkAmount) < 0){
                //减少补贴额度
                mallMemberWalletMapper.reduceTotalScoreById(teamEqualsPerkAmount, mallMemberWallet.getId());
                mallMemberWalletMapper.addBalanceById(teamEqualsPerkAmount, mallMemberWallet.getId());
                mallMoneyFlowService.addMoneyFlow(
                        adminTeamEqualsPerkVo.getRtMemberId(),
                        teamEqualsPerkAmount,
                        MoneyFlowTypeEnum.TEAM_EQUALS_PERK.getValue(),
                        MallUtils.getOrderNum("TEP"),
                        FlowTypeEnum.BALANCE.getValue());
                }
            }
        }
    }
}