From 457265eb82265650cf6c87519803975f23bd2fd3 Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期一, 13 四月 2020 18:33:21 +0800
Subject: [PATCH] 订单统计与返利到账集成测试相关的bug修改

---
 fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java |  137 +++++++++++++++------------------------------
 1 files changed, 47 insertions(+), 90 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 366743d..109cfaf 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,10 +11,15 @@
 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.TimeUtil;
+import com.yeshi.fanli.util.user.UserLevelUtil;
 
 @Service
 public class OrderHongBaoMoneyComputeServiceImpl implements OrderHongBaoMoneyComputeService {
+
+	static long newRuleTime = TimeUtil.convertToTimeTemp(Constant.NEW_ORDER_FANLI_RULE_TIME, "yyyy-MM-dd");
 
 	@Resource
 	private HongBaoManageService hongBaoManageService;
@@ -29,33 +34,57 @@
 		return getBaseCommission(order);
 	}
 
+	private UserLevelEnum getCommonUserLevel(Date time, UserLevelEnum userLevel) {
+		if (userLevel == null)
+			return UserLevelEnum.daRen;
+		if (time.getTime() < newRuleTime)
+			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() >= newRuleTime) {
+			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(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 +95,29 @@
 
 	@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 (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;
 	}
@@ -118,45 +144,6 @@
 		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;
 	}
 
 	/**
@@ -203,36 +190,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