From 83bb6e0580b646c5d89da1cdb4085787c8136822 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期四, 23 四月 2020 14:29:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/service/impl/order/OrderHongBaoMoneyComputeServiceImpl.java | 174 ++++++++++++++++++++++------------------------------------ 1 files changed, 66 insertions(+), 108 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 6f4bcbb..7c34e4b 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 @@ -95,89 +95,53 @@ } @Override - public BigDecimal computeFirstInviteMoney(CommonOrder order, UserLevelEnum buyer) { - 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, getBaseCommission(order)), - new BigDecimal(100)); - else if (order.getEstimate() != null) - 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 || 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, getBaseCommission(order)), - new BigDecimal(100)); - else if (order.getEstimate() != null) - return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, getBaseCommission(order)), - new BigDecimal(100)); - else - return null; - } - - @Override - public BigDecimal computeFirstTeamSubsidy(BigDecimal fanLiMoney, Date placeOrderTime, UserLevelEnum buyerUserLevel, - UserLevelEnum userLevel) { - BigDecimal rate = getTeamSubsidyRate(placeOrderTime, buyerUserLevel, userLevel, true); - 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 computeSecondTeamSubsidy(BigDecimal fanLiMoney, Date placeOrderTime, UserLevelEnum buyerUserLevel, - UserLevelEnum userLevel) { - BigDecimal rate = getTeamSubsidyRate(placeOrderTime, buyerUserLevel, userLevel, false); - 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))); - } - - /** - * 鑾峰彇绮変笣鐨勮ˉ璐存瘮渚� - * @Title: getSecondTeamSubsidy - * @Description: - * @param date - * @param buyerUserLevel - * @param userLevel - * @return - * BigDecimal 杩斿洖绫诲瀷 - * @throws - */ - @Override - public BigDecimal getTeamSubsidyRate(Date date, UserLevelEnum buyerUserLevel, UserLevelEnum userLevel, - boolean direct) { - String key = null; - 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()); + public BigDecimal computeFirstInviteMoney(CommonOrder order, UserLevelEnum buyer, + List<UserTeamLevel> bossLevelList) { BigDecimal rate = null; - if (date != null) - rate = hongBaoManageService.getByKeyAndMaxTime(key, date.getTime()); - else - rate = new BigDecimal(hongBaoManageService.get(key)); - return rate; + if (order.getThirdCreateTime().getTime() >= Constant.NEW_ORDER_FANLI_RULE_TIME) { + rate = getTeamRewardRate(buyer, bossLevelList, order.getThirdCreateTime(), 1).getRate(); + if (rate == null) + return null; + 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 {// 鑰佺殑杩斿埄姣斾緥 + 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, getBaseCommission(order)), + new BigDecimal(100)); + else if (order.getEstimate() != null) + return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, getBaseCommission(order)), + new BigDecimal(100)); + } + + return null; + } + + @Override + public BigDecimal computeSecondInviteMoney(CommonOrder order, UserLevelEnum buyer, + List<UserTeamLevel> bossLevelList) { + BigDecimal rate = null; + if (order.getThirdCreateTime().getTime() >= Constant.NEW_ORDER_FANLI_RULE_TIME) { + rate = getTeamRewardRate(buyer, bossLevelList, order.getThirdCreateTime(), 2).getRate(); + if (rate == null) + return null; + 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 {// 鑰佺殑杩斿埄姣斾緥 + 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, getBaseCommission(order)), + new BigDecimal(100)); + else if (order.getEstimate() != null) + return MoneyBigDecimalUtil.div(MoneyBigDecimalUtil.mul(rate, getBaseCommission(order)), + new BigDecimal(100)); + } + + return null; } /** @@ -205,22 +169,16 @@ return rate; } - private BigDecimal getRateByLevel(UserLevelEnum level) { - if (level == UserLevelEnum.daRen) - return new BigDecimal(58); - else if (level == UserLevelEnum.normalVIP) - return new BigDecimal(66); - else if (level == UserLevelEnum.highVIP) - return new BigDecimal(78); - else if (level == UserLevelEnum.superVIP) - return new BigDecimal(85); - else if (level == UserLevelEnum.tearcher) - return new BigDecimal(86); - return null; + private BigDecimal getRateByLevel(UserLevelEnum level, Date date) { + BigDecimal baseRate = hongBaoManageService.getBaseFanliRate(date.getTime()); + + BigDecimal subsidyRate = getOfficialSubsidyRate(date, level, false); + + return baseRate.add(subsidyRate); } @Override - public UserTeamRate getTeamRewardRate(UserLevelEnum buyerLevel, List<UserTeamLevel> bossLevelList, + public UserTeamRate getTeamRewardRate(UserLevelEnum buyerLevel, List<UserTeamLevel> bossLevelList, Date date, int deep) { if (deep == 1) {// 鐩存帴閭�璇蜂汉濂栭噾 UserTeamLevel boss = bossLevelList.get(0); @@ -233,8 +191,8 @@ } else if (buyerLevel == UserLevelEnum.normalVIP && boss.getLevel() == UserLevelEnum.normalVIP) { rate = new BigDecimal(9); } else { - BigDecimal bossRate = getRateByLevel(boss.getLevel()); - BigDecimal buyerRate = getRateByLevel(buyerLevel); + BigDecimal bossRate = getRateByLevel(boss.getLevel(), date); + BigDecimal buyerRate = getRateByLevel(buyerLevel, date); rate = bossRate.subtract(buyerRate); if (rate.compareTo(new BigDecimal(0)) < 0) rate = new BigDecimal(0); @@ -246,8 +204,8 @@ if (bossLevelList == null || bossLevelList.size() < 2) return null; - BigDecimal buyerRate = getRateByLevel(buyerLevel); - BigDecimal firstRate = getTeamRewardRate(buyerLevel, bossLevelList, 1).getRate(); + BigDecimal buyerRate = getRateByLevel(buyerLevel, date); + BigDecimal firstRate = getTeamRewardRate(buyerLevel, bossLevelList, date, 1).getRate(); UserTeamLevel boss = bossLevelList.get(1); UserTeamLevel firstBoss = bossLevelList.get(0); @@ -267,7 +225,7 @@ } // 鏋佸樊璁$畻娉� if (rate == null) { - rate = getRateByLevel(boss.getLevel()).subtract(buyerRate).subtract(firstRate); + rate = getRateByLevel(boss.getLevel(), date).subtract(buyerRate).subtract(firstRate); if (rate.compareTo(new BigDecimal(0)) < 0) rate = new BigDecimal(0); } @@ -279,25 +237,25 @@ @Override public List<UserTeamRate> getTeamRewardMoreThan2LevelRates(UserLevelEnum buyerLevel, - List<UserTeamLevel> bossLevelList) { + List<UserTeamLevel> bossLevelList, Date date) { if (bossLevelList == null || bossLevelList.size() < 3) return null; - UserTeamRate firstBoss = getTeamRewardRate(buyerLevel, bossLevelList, 1); + UserTeamRate firstBoss = getTeamRewardRate(buyerLevel, bossLevelList, date, 1); if (firstBoss == null) return null; - UserTeamRate secondBoss = getTeamRewardRate(buyerLevel, bossLevelList, 2); + UserTeamRate secondBoss = getTeamRewardRate(buyerLevel, bossLevelList, date, 2); if (secondBoss == null) return null; - BigDecimal buyerRate = getRateByLevel(buyerLevel); + BigDecimal buyerRate = getRateByLevel(buyerLevel, date); BigDecimal totalRate = firstBoss.getRate().add(secondBoss.getRate()).add(buyerRate); List<UserTeamRate> rateList = new ArrayList<>(); for (int i = 2; i < bossLevelList.size(); i++) { - BigDecimal rate = getRateByLevel(bossLevelList.get(i).getLevel()); + BigDecimal rate = getRateByLevel(bossLevelList.get(i).getLevel(), date); if (rate.compareTo(totalRate) > 0) { BigDecimal subRate = rate.subtract(totalRate); totalRate = subRate.add(totalRate);// 绱鍒嗘垚姣斾緥 @@ -310,8 +268,8 @@ // 鍥㈤槦鍒嗙孩 @Override - public List<UserTeamRate> getTeamDividentsRates(UserLevelEnum buyerLevel, - List<UserTeamLevel> bossLevelList) { + public List<UserTeamRate> getTeamDividentsRates(UserLevelEnum buyerLevel, List<UserTeamLevel> bossLevelList, + Date date) { List<UserTeamRate> rateList = new ArrayList<>(); List<UserTeamLevel> levelList = new ArrayList<>(); @@ -395,7 +353,7 @@ @Override public UserTeamRate getTearcherSubsidy(UserLevelEnum buyerLevel, BigDecimal money, - List<UserTeamLevel> bossLevelList) { + List<UserTeamLevel> bossLevelList, Date date) { // TODO Auto-generated method stub return null; } -- Gitblit v1.8.0