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