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 |   85 ++++++++++++++++++++++++++++++++----------
 1 files changed, 64 insertions(+), 21 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 07f35d7..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);
 
@@ -217,6 +219,12 @@
 					rate = null;
 				}
 			} else if (buyerLevel == UserLevelEnum.normalVIP && firstBoss.getLevel() == UserLevelEnum.normalVIP) {
+				if (boss.getLevel() == UserLevelEnum.normalVIP)
+					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 {
@@ -361,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