| | |
| | |
|
| | | 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;
|
| | |
| | | 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
|
| | |
| | |
|
| | | // 获取基础佣金
|
| | | 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
|
| | |
| | | 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)
|
| | |
| | | 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)
|
| | |
| | | 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);
|
| | |
|
| | |
| | | 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);
|
| | |
| | | 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;
|
| | | }
|
| | |
| | | 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) {
|
| | |
|
| | |
| | | // 导师分红
|
| | | 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;
|
| | | }
|
| | | }
|
| | |
| | | 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;
|
| | | }
|
| | |
|
| | | }
|