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