From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001
From: yujian <yujian@163.com>
Date: 星期六, 23 五月 2020 09:54:38 +0800
Subject: [PATCH] 足迹、收藏订单兼容新需求

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java |  102 +++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 74 insertions(+), 28 deletions(-)

diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java
index 7c34e4b..5ae1c42 100644
--- a/fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java
+++ b/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 @@
 
 	// 鑾峰彇鍩虹浣i噾
 	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;
+	}
+
 }

--
Gitblit v1.8.0