admin
2020-05-20 98b1a0affd69bbe63223c21fdd2c404e8bedfccb
fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java
@@ -9,6 +9,7 @@
import org.springframework.stereotype.Service;
import com.yeshi.fanli.dto.ConfigParamsDTO;
import com.yeshi.fanli.dto.order.UserTeamLevel;
import com.yeshi.fanli.dto.order.UserTeamRate;
import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum;
@@ -17,6 +18,8 @@
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.MoneyBigDecimalUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.VersionUtil;
import com.yeshi.fanli.util.user.UserLevelUtil;
@Service
@@ -46,25 +49,13 @@
   // 获取基础佣金
   private BigDecimal getBaseCommission(CommonOrder order) {
      if (order.getThirdCreateTime().getTime() >= Constant.NEW_ORDER_FANLI_RULE_TIME) {
         BigDecimal rate = hongBaoManageService.getBaseFanliRate(order.getThirdCreateTime().getTime());
         if (order.getState() == CommonOrder.STATE_JS || order.getState() == CommonOrder.STATE_WQ)
            return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.geteIncome()), new BigDecimal(100));
         else if (order.getEstimate() != null)
            return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.getEstimate()), new BigDecimal(100));
         else
            return null;
      } else {
         BigDecimal rate = hongBaoManageService.getFanLiRate(UserLevelEnum.daRen,
               order.getThirdCreateTime().getTime());
         if (order.getState() == CommonOrder.STATE_JS || order.getState() == CommonOrder.STATE_WQ)
            return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.geteIncome()), new BigDecimal(100));
         else if (order.getEstimate() != null)
            return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.getEstimate()), new BigDecimal(100));
         else
            return null;
      }
      BigDecimal rate = hongBaoManageService.getBaseFanliRate(order.getThirdCreateTime().getTime());
      if (order.getState() == CommonOrder.STATE_JS || order.getState() == CommonOrder.STATE_WQ)
         return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.geteIncome()), new BigDecimal(100));
      else if (order.getEstimate() != null)
         return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.getEstimate()), new BigDecimal(100));
      else
         return null;
   }
   @Override
@@ -73,6 +64,10 @@
      BigDecimal rate = hongBaoManageService.getBaseFanliRate(order.getThirdCreateTime().getTime())
            .add(getOfficialSubsidyRate(order.getThirdCreateTime(),
                  getCommonUserLevel(order.getThirdCreateTime(), userLevel), false));
      if (userLevel == UserLevelEnum.normalVIP) {
         rate = new BigDecimal("61");
      }
      if (order.getState() == CommonOrder.STATE_JS || order.getState() == CommonOrder.STATE_WQ)
         return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.geteIncome()), new BigDecimal(100));
      else if (order.getEstimate() != null)
@@ -86,6 +81,11 @@
      BigDecimal rate = hongBaoManageService.getBaseFanliRate(order.getThirdCreateTime().getTime())
            .add(getOfficialSubsidyRate(order.getThirdCreateTime(),
                  getCommonUserLevel(order.getThirdCreateTime(), userLevel), true));
      if (userLevel == UserLevelEnum.normalVIP) {
         rate = new BigDecimal("61");
      }
      if (order.getState() == CommonOrder.STATE_JS || order.getState() == CommonOrder.STATE_WQ)
         return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.geteIncome()), new BigDecimal(100));
      else if (order.getEstimate() != null)
@@ -163,14 +163,16 @@
         key = String.format("official_subsidy_zigou_%s", userLevel.getLevel());
      BigDecimal rate = null;
      if (date != null)
         rate = hongBaoManageService.getByKeyAndMaxTime(key, date.getTime());
         rate = hongBaoManageService.getByKeyAndMaxTimeCache(key, TimeUtil
               .convertToTimeTemp(TimeUtil.getGernalTime(date.getTime(), "yyyy-MM-dd HH"), "yyyy-MM-dd HH"));
      else
         rate = new BigDecimal(hongBaoManageService.get(key));
      return rate;
   }
   private BigDecimal getRateByLevel(UserLevelEnum level, Date date) {
      BigDecimal baseRate = hongBaoManageService.getBaseFanliRate(date.getTime());
      BigDecimal baseRate = hongBaoManageService.getBaseFanliRateCache(
            TimeUtil.convertToTimeTemp(TimeUtil.getGernalTime(date.getTime(), "yyyy-MM-dd HH"), "yyyy-MM-dd HH"));
      BigDecimal subsidyRate = getOfficialSubsidyRate(date, level, false);
@@ -187,9 +189,9 @@
            return null;
         if (buyerLevel == UserLevelEnum.daRen && boss.getLevel() == UserLevelEnum.daRen) {
            rate = new BigDecimal(9);
            rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_daren_6", date.getTime());
         } else if (buyerLevel == UserLevelEnum.normalVIP && boss.getLevel() == UserLevelEnum.normalVIP) {
            rate = new BigDecimal(9);
            rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_daren_6", date.getTime());
         } else {
            BigDecimal bossRate = getRateByLevel(boss.getLevel(), date);
            BigDecimal buyerRate = getRateByLevel(buyerLevel, date);
@@ -212,13 +214,19 @@
         BigDecimal rate = null;
         if (buyerLevel == UserLevelEnum.daRen && firstBoss.getLevel() == UserLevelEnum.daRen) {
            if (boss.getLevel() == UserLevelEnum.daRen)
               rate = new BigDecimal(1);
               rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_daren_7", date.getTime());
            else {
               rate = null;
            }
         } else if (buyerLevel == UserLevelEnum.normalVIP && firstBoss.getLevel() == UserLevelEnum.normalVIP) {
            if (boss.getLevel() == UserLevelEnum.normalVIP)
               rate = new BigDecimal(1);
               rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_daren_7", date.getTime());
            else {
               rate = null;
            }
         } else if (buyerLevel == UserLevelEnum.daRen && firstBoss.getLevel() == UserLevelEnum.normalVIP) {
            if (boss.getLevel() == UserLevelEnum.normalVIP)
               rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_daren_7", date.getTime());
            else {
               rate = null;
            }
@@ -299,8 +307,10 @@
         highList = highList.subList(0, 4);
      }
      BigDecimal highTotalRate = new BigDecimal("0.9");
      BigDecimal vipTotalRate = new BigDecimal("1.5");
      BigDecimal highTotalRate = hongBaoManageService.getByKeyAndMaxTime("dividents_rate_same_level_high",
            date.getTime());
      BigDecimal vipTotalRate = hongBaoManageService.getByKeyAndMaxTime("dividents_rate_same_level_super",
            date.getTime());
      if (vipList.size() > 0 && highList.size() > 0) {
@@ -343,7 +353,8 @@
      // 导师分红
      for (UserTeamLevel level : bossLevelList) {
         if (level.getLevel() == UserLevelEnum.tearcher) {
            rateList.add(new UserTeamRate(level, new BigDecimal("0.6")));
            rateList.add(new UserTeamRate(level,
                  hongBaoManageService.getByKeyAndMaxTime("dividents_rate_tearcher", date.getTime())));
            break;
         }
      }
@@ -358,4 +369,39 @@
      return null;
   }
   private BigDecimal getFanliRate(Date time, UserLevelEnum userLevel) {
      BigDecimal rate = hongBaoManageService
            .getBaseFanliRateCache(TimeUtil
                  .convertToTimeTemp(TimeUtil.getGernalTime(time.getTime(), "yyyy-MM-dd HH"), "yyyy-MM-dd HH"))
            .add(getOfficialSubsidyRate(time, getCommonUserLevel(time, userLevel), false));
      if (userLevel == UserLevelEnum.normalVIP)
         rate = new BigDecimal("61");
      return rate;
   }
   @Override
   public ConfigParamsDTO getShowComputeRate(String platform, String version, UserLevelEnum userLevel) {
      BigDecimal fanLiRate = getFanliRate(new Date(), userLevel);
      BigDecimal shareRate = fanLiRate;
      ConfigParamsDTO paramsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,
            getFanliRate(new Date(), UserLevelEnum.superVIP));
      if (VersionUtil.greaterThan_2_0_5(platform, version)) {
         paramsDTO.setMaxRewardRate(null);
      }
      return paramsDTO;
   }
   @Override
   public ConfigParamsDTO getShowComputeRate(String platform, String version) {
      return getShowComputeRate(platform, version, UserLevelEnum.daRen);
   }
   @Override
   public BigDecimal getFanliRate(UserLevelEnum userLevel, Date date) {
      BigDecimal rate = hongBaoManageService.getBaseFanliRate(date.getTime())
            .add(getOfficialSubsidyRate(date, getCommonUserLevel(date, userLevel), false));
      return rate;
   }
}