From d4588f4e43336b26b356b869c29d0c76390167d5 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 15 四月 2020 10:22:51 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java |  152 +++++++++++++++++++-------------------------------
 1 files changed, 57 insertions(+), 95 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 51566cf..b7b2316 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
@@ -11,7 +11,9 @@
 import com.yeshi.fanli.entity.order.CommonOrder;
 import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
 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.user.UserLevelUtil;
 
 @Service
 public class OrderHongBaoMoneyComputeServiceImpl implements OrderHongBaoMoneyComputeService {
@@ -29,33 +31,58 @@
 		return getBaseCommission(order);
 	}
 
+	private UserLevelEnum getCommonUserLevel(Date time, UserLevelEnum userLevel) {
+		if (userLevel == null)
+			return UserLevelEnum.daRen;
+		if (time.getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME)
+			return UserLevelUtil.getOldLevel(userLevel);
+		else
+			return userLevel;
+	}
+
 	// 鑾峰彇鍩虹浣i噾
 	private BigDecimal getBaseCommission(CommonOrder order) {
-		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;
+
+		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;
+		}
 	}
 
 	@Override
 	public BigDecimal computeFanliMoney(CommonOrder order, UserLevelEnum userLevel) {
+
 		BigDecimal rate = hongBaoManageService.getBaseFanliRate(order.getThirdCreateTime().getTime())
-				.add(getOfficialSubsidyRate(order.getThirdCreateTime(), userLevel, false));
+				.add(getOfficialSubsidyRate(order.getThirdCreateTime(),
+						getCommonUserLevel(order.getThirdCreateTime(), userLevel), false));
 		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
 	public BigDecimal computeShareMoney(CommonOrder order, UserLevelEnum userLevel) {
 		BigDecimal rate = hongBaoManageService.getBaseFanliRate(order.getThirdCreateTime().getTime())
-				.add(getOfficialSubsidyRate(order.getThirdCreateTime(), userLevel, true));
+				.add(getOfficialSubsidyRate(order.getThirdCreateTime(),
+						getCommonUserLevel(order.getThirdCreateTime(), userLevel), true));
 		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)
@@ -66,32 +93,35 @@
 
 	@Override
 	public BigDecimal computeFirstInviteMoney(CommonOrder order, UserLevelEnum buyer) {
-		if (buyer == UserLevelEnum.superVIP) {
-			BigDecimal rate = hongBaoManageService.getByKeyAndMaxTime("new_share_vip_21",
-					order.getThirdCreateTime().getTime());
-			BigDecimal fanLiMoney = computeFanliMoney(order, buyer);
-			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, fanLiMoney), new BigDecimal(100));
-		}
-
 		BigDecimal rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_6", order.getThirdCreateTime().getTime());
+		if (buyer == UserLevelEnum.superVIP || buyer == UserLevelEnum.tearcher)
+			rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_vip_6", order.getThirdCreateTime().getTime());
+
+		if (rate.compareTo(new BigDecimal(0)) == 0)
+			return null;
+
 		if (order.getState() == CommonOrder.STATE_JS || order.getState() == CommonOrder.STATE_WQ)
-			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.geteIncome()), new BigDecimal(100));
+			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, getBaseCommission(order)),
+					new BigDecimal(100));
 		else if (order.getEstimate() != null)
-			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.getEstimate()), new BigDecimal(100));
+			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, getBaseCommission(order)),
+					new BigDecimal(100));
 		else
 			return null;
 	}
 
 	@Override
 	public BigDecimal computeSecondInviteMoney(CommonOrder order, UserLevelEnum buyer) {
-		if (buyer == UserLevelEnum.superVIP)
+		if (buyer == UserLevelEnum.superVIP || buyer == UserLevelEnum.tearcher)
 			return null;
 
 		BigDecimal rate = hongBaoManageService.getByKeyAndMaxTime("new_invite_7", 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));
+			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, getBaseCommission(order)),
+					new BigDecimal(100));
 		else if (order.getEstimate() != null)
-			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, order.getEstimate()), new BigDecimal(100));
+			return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, getBaseCommission(order)),
+					new BigDecimal(100));
 		else
 			return null;
 	}
@@ -100,7 +130,7 @@
 	public BigDecimal computeFirstTeamSubsidy(BigDecimal fanLiMoney, Date placeOrderTime, UserLevelEnum buyerUserLevel,
 			UserLevelEnum userLevel) {
 		BigDecimal rate = getTeamSubsidyRate(placeOrderTime, buyerUserLevel, userLevel, true);
-		if (rate == null)
+		if (rate == null || rate.compareTo(new BigDecimal(0)) == 0)
 			return null;
 		BigDecimal baseRate = hongBaoManageService.getBaseFanliRate(placeOrderTime.getTime());
 		BigDecimal officialSubsidyRate = getOfficialSubsidyRate(placeOrderTime, buyerUserLevel, false);
@@ -112,51 +142,12 @@
 	public BigDecimal computeSecondTeamSubsidy(BigDecimal fanLiMoney, Date placeOrderTime, UserLevelEnum buyerUserLevel,
 			UserLevelEnum userLevel) {
 		BigDecimal rate = getTeamSubsidyRate(placeOrderTime, buyerUserLevel, userLevel, false);
-		if (rate == null)
+		if (rate == null || rate.compareTo(new BigDecimal(0)) == 0)
 			return null;
 		BigDecimal baseRate = hongBaoManageService.getBaseFanliRate(placeOrderTime.getTime());
 		BigDecimal officialSubsidyRate = getOfficialSubsidyRate(placeOrderTime, buyerUserLevel, false);
 		return MoneyBigDecimalUtil.div(fanLiMoney.multiply(baseRate).multiply(rate),
 				baseRate.add(officialSubsidyRate).multiply(new BigDecimal(100)));
-	}
-
-	@Override
-	public BigDecimal computeFirstTeamReward(BigDecimal money, Date placeOrderTime, UserLevelEnum userLevel) {
-
-		if (userLevel != UserLevelEnum.superVIP)
-			return null;
-
-		BigDecimal firstRate = getTeamRewardRate(placeOrderTime, userLevel, true);
-
-		if (firstRate == null)
-			return null;
-
-		BigDecimal reward = MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(firstRate, money), new BigDecimal(100));
-
-		return reward;
-	}
-
-	/**
-	 * 璁$畻浜岀骇鍥㈤槦濂栧姳
-	 * @Title: computeSecondTeamReward
-	 * @Description: 
-	 * @param secondTeamSubsidy 璐拱鑰呬笂涓ょ骇鍥㈤槦琛ヨ创
-	 * @param userLevel 褰撳墠鐢ㄦ埛鐨勭瓑绾�
-	 * @return 
-	 * BigDecimal 杩斿洖绫诲瀷
-	 * @throws
-	 */
-	public BigDecimal computeSecondTeamReward(BigDecimal secondTeamSubsidy, Date placeOrderTime,
-			UserLevelEnum userLevel) {
-		if (userLevel != UserLevelEnum.superVIP)
-			return null;
-		// 鑾峰彇濂栧姳姣斾緥
-		BigDecimal secondRate = getTeamRewardRate(placeOrderTime, userLevel, false);
-		if (secondRate == null)
-			return null;
-		BigDecimal secondReward = MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(secondRate, secondTeamSubsidy),
-				new BigDecimal(100));
-		return secondReward;
 	}
 
 	/**
@@ -170,10 +161,11 @@
 	 * BigDecimal 杩斿洖绫诲瀷
 	 * @throws
 	 */
-	private BigDecimal getTeamSubsidyRate(Date date, UserLevelEnum buyerUserLevel, UserLevelEnum userLevel,
-			boolean first) {
+	@Override
+	public BigDecimal getTeamSubsidyRate(Date date, UserLevelEnum buyerUserLevel, UserLevelEnum userLevel,
+			boolean direct) {
 		String key = null;
-		if (first)
+		if (direct)
 			key = String.format("team_subsidy_6_pre_%s_%s", buyerUserLevel.getLevel(), userLevel.getLevel());
 		else
 			key = String.format("team_subsidy_7_pre_%s_%s", buyerUserLevel.getLevel(), userLevel.getLevel());
@@ -202,36 +194,6 @@
 			key = String.format("official_subsidy_share_%s", userLevel.getLevel());
 		else
 			key = String.format("official_subsidy_zigou_%s", userLevel.getLevel());
-		BigDecimal rate = null;
-		if (date != null)
-			rate = hongBaoManageService.getByKeyAndMaxTime(key, date.getTime());
-		else
-			rate = new BigDecimal(hongBaoManageService.get(key));
-		return rate;
-	}
-
-	/**
-	 * 鑾峰彇鍥㈤槦濂栧姳姣斾緥
-	 * @Title: getTeamRewardRate
-	 * @Description: 
-	 * @param date
-	 * @param userLevel
-	 * @param first
-	 * @return 
-	 * BigDecimal 杩斿洖绫诲瀷
-	 * @throws
-	 */
-	private BigDecimal getTeamRewardRate(Date date, UserLevelEnum userLevel, boolean first) {
-		if (userLevel == null)
-			return null;
-		if (userLevel != UserLevelEnum.superVIP)
-			return new BigDecimal(0);
-
-		String key = null;
-		if (first)
-			key = "team_reward_6_10";
-		else
-			key = "team_reward_7_10";
 		BigDecimal rate = null;
 		if (date != null)
 			rate = hongBaoManageService.getByKeyAndMaxTime(key, date.getTime());

--
Gitblit v1.8.0