admin
2020-03-20 12518ae8cf2a7d769580ab45328041a4f15b0655
团队补贴,团队奖励bug修改
3个文件已修改
81 ■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/service/impl/order/InviteOrderSubsidyServiceImplV2.java 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/manger/user/UserLevelManager.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/service/impl/order/InviteOrderSubsidyServiceImplV2.java
@@ -136,6 +136,8 @@
            throw new CommonOrderException(1, "订单不存在");
        }
        Date orderTime = commonOrderList.get(0).getThirdCreateTime();
        Long sourceUid = commonOrderList.get(0).getUserInfo().getId();
        List<ThreeSale> bossList = threeSaleSerivce.getMyBossDeepList(sourceUid, 4);
@@ -147,7 +149,8 @@
        for (int i = 2; i < bossList.size(); i++) {
            rewardUid.add(bossList.get(i).getBoss().getId());
        }
        // 删除本补贴用户的下级
        // 删除补贴用户的下级用户
        for (int i = 0; i < bossList.size(); i++) {
            if (bossList.get(i).getBoss().getId().longValue() == subsidy.getUid()) {
                break;
@@ -157,30 +160,36 @@
            }
        }
        // 获取补贴用户的直接上级
        if (bossList.size() > 1 && bossList.get(1).getSucceedTime() < subsidy.getCreateTime().getTime()) {
            UserInfo boss = bossList.get(1).getBoss();
            UserLevelEnum userLevel = userLevelManager.getUserLevel(boss.getId());
            BigDecimal rewardMoney = orderHongBaoMoneyComputeService.computeFirstTeamReward(subsidy.getMoney(),
                    subsidy.getCreateTime(), userLevel);
        for (int i = 1; i < bossList.size(); i++) {
            if (rewardUid.contains(bossList.get(i).getBoss().getId())) {
                UserInfo boss = bossList.get(i).getBoss();
                if (i == 1) {
                    if (bossList.get(i).getSucceedTime() < subsidy.getCreateTime().getTime()) {
                        UserLevelEnum userLevel = userLevelManager.getUserLevel(boss.getId(), orderTime);
                        BigDecimal rewardMoney = orderHongBaoMoneyComputeService
                                .computeFirstTeamReward(subsidy.getMoney(), subsidy.getCreateTime(), userLevel);
            if (rewardMoney != null) {
                // 添加奖励
                orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(), OrderTeamReward.LEVEL_ONE);
            }
                        if (rewardMoney != null) {
                            // 添加奖励
                            orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(),
                                    OrderTeamReward.LEVEL_ONE);
                        }
                    }
                } else if (i == 2) {
                    if (bossList.get(i).getSucceedTime() < subsidy.getCreateTime().getTime()) {
                        UserLevelEnum userLevel = userLevelManager.getUserLevel(boss.getId(), orderTime);
                        BigDecimal rewardMoney = orderHongBaoMoneyComputeService
                                .computeSecondTeamReward(subsidy.getMoney(), subsidy.getCreateTime(), userLevel);
            // 获取补贴的间接上级
            if (bossList.size() > 2 && bossList.get(2).getSucceedTime() < subsidy.getCreateTime().getTime()) {
                boss = bossList.get(2).getBoss();
                userLevel = userLevelManager.getUserLevel(boss.getId());
                rewardMoney = orderHongBaoMoneyComputeService.computeSecondTeamReward(subsidy.getMoney(),
                        subsidy.getCreateTime(), userLevel);
                if (rewardMoney != null) {
                    // 添加奖励
                    orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(), OrderTeamReward.LEVEL_TWO);
                        if (rewardMoney != null) {
                            // 添加奖励
                            orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(),
                                    OrderTeamReward.LEVEL_TWO);
                        }
                    }
                }
            }
            }
        }
    }
@@ -249,7 +258,7 @@
                    // 计算奖励金
                    for (Iterator<Long> its = uidHongBaoMap.keySet().iterator(); its.hasNext();) {
                        Long uid = its.next();
                        UserLevelEnum userLevel = userLevelManager.getUserLevel(uid);
                        UserLevelEnum userLevel = userLevelManager.getUserLevel(uid, placeOrderTime);
                        int type = uidHongBaoMap.get(uid);
                        if (type == HongBaoV2.TYPE_YIJI || type == HongBaoV2.TYPE_ERJI) {
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java
@@ -93,7 +93,7 @@
        if (rate == null)
            return null;
        BigDecimal baseRate = hongBaoManageService.getBaseFanliRate(placeOrderTime.getTime());
        BigDecimal officialSubsidyRate = getOfficialSubsidyRate(placeOrderTime, userLevel, false);
        BigDecimal officialSubsidyRate = getOfficialSubsidyRate(placeOrderTime, buyerUserLevel, false);
        return MoneyBigDecimalUtil.div(fanLiMoney.multiply(baseRate).multiply(rate),
                baseRate.add(officialSubsidyRate).multiply(new BigDecimal(100)));
    }
@@ -105,7 +105,7 @@
        if (rate == null)
            return null;
        BigDecimal baseRate = hongBaoManageService.getBaseFanliRate(placeOrderTime.getTime());
        BigDecimal officialSubsidyRate = getOfficialSubsidyRate(placeOrderTime, userLevel, false);
        BigDecimal officialSubsidyRate = getOfficialSubsidyRate(placeOrderTime, buyerUserLevel, false);
        return MoneyBigDecimalUtil.div(fanLiMoney.multiply(baseRate).multiply(rate),
                baseRate.add(officialSubsidyRate).multiply(new BigDecimal(100)));
    }
fanli/src/main/java/com/yeshi/fanli/service/manger/user/UserLevelManager.java
@@ -1,5 +1,7 @@
package com.yeshi.fanli.service.manger.user;
import java.util.Date;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
@@ -36,5 +38,27 @@
                    return level;
        return UserLevelEnum.daRen;
    }
    /**
     * 获取当时的用户等级
     * @Title: getUserLevel
     * @Description:
     * @param uid
     * @param date
     * @return
     * UserLevelEnum 返回类型
     * @throws
     */
    public UserLevelEnum getUserLevel(Long uid,Date date) {
        //TODO 按时间段获取
        if (userVIPInfoService.isVIP(uid))
            return UserLevelEnum.superVIP;
        UserVIPPreInfo info = userVIPPreInfoService.getLatestProcessInfo(uid);
        if (info != null)
            for (UserLevelEnum level : UserLevelEnum.values())
                if (level.getLevel() == info.getProcess())
                    return level;
        return UserLevelEnum.daRen;
    }
}