From aa774af6df16ef11e1e34ac5aeed9aae0cb3e8e2 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期四, 09 四月 2020 16:25:03 +0800 Subject: [PATCH] 团队分红完善 --- fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java | 91 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 83 insertions(+), 8 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java index cfe8bdb..6a14fc8 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java @@ -27,11 +27,13 @@ import com.yeshi.fanli.exception.order.dividents.TeamDividentsRecordException; import com.yeshi.fanli.service.inter.money.TeamDividentsDebtService; import com.yeshi.fanli.service.inter.money.UserMoneyService; +import com.yeshi.fanli.service.inter.order.config.HongBaoManageService; import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsRecordService; import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceOrderService; import com.yeshi.fanli.service.inter.order.dividents.TeamDividentsSourceUserService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService; +import com.yeshi.fanli.util.Constant; import com.yeshi.fanli.util.MoneyBigDecimalUtil; import com.yeshi.fanli.util.TimeUtil; import com.yeshi.fanli.util.factory.UserMoneyDetailFactory; @@ -65,6 +67,9 @@ @Resource private UserMoneyService userMoneyService; + @Resource + private HongBaoManageService hongBaoManageService; + /** * 寮�濮嬪垎绾� * @Title: startDividents @@ -77,6 +82,44 @@ public void startDividents(Long sourceUid) throws ParamsException { String day = TimeUtil.getGernalTime(System.currentTimeMillis(), "yyyy-MM-dd"); Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")); + startDividents(sourceUid, preSendTime); + } + + // 鏄惁鍙互鍒嗙孩 + private boolean isCanDividents(TeamUserLevelStatistic tus) { + if (Constant.IS_TEST) + return true; + + if (tus != null && (tus.getLevel() == UserLevelEnum.highVIP || tus.getLevel() == UserLevelEnum.superVIP + || tus.getLevel() == UserLevelEnum.tearcher)) { + if (tus.getLevel() == UserLevelEnum.highVIP) { + int vipFirstCount = tus.getNormalFirstCount() + tus.getHighFirstCount() + tus.getSuperFirstCount() + + tus.getTearcherFirstCount(); + if (vipFirstCount >= 3)// 鐩存帴绮変笣鏅�氫細鍛樼瓑绾т互涓婄殑鐢ㄦ埛>=3 + return true; + } else if (tus.getLevel() == UserLevelEnum.superVIP) { + int firstCount = tus.getSuperFirstCount() + tus.getTearcherFirstCount(); + int secondCount = tus.getNormalSecondCount() + tus.getHighSecondCount() + tus.getSuperSecondCount() + + tus.getTearcherSecondCount(); + if (firstCount >= 3 && secondCount >= 3) {// 鐩存帴绮変笣瓒呯骇浼氬憳绛夌骇浠ヤ笂鐨勭敤鎴�>=3 + // 闂存帴绮変笣鏅�氫細鍛樹互涓婄瓑绾�>=3 + return true; + } + } else { + int firstCount = tus.getSuperFirstCount() + tus.getTearcherFirstCount(); + int secondCount = tus.getHighSecondCount() + tus.getSuperSecondCount() + tus.getTearcherSecondCount(); + if (firstCount >= 3 && secondCount >= 3) {// 鐩存帴绮変笣瓒呯骇浼氬憳绛夌骇浠ヤ笂鐨勭敤鎴�>=3 + // 闂存帴绮変笣楂樼骇浼氬憳浠ヤ笂绛夌骇>=3 + return true; + } + } + } + return false; + } + + @Transactional(rollbackFor = Exception.class) + public void startDividents(Long sourceUid, Date preSendTime) throws ParamsException { + String day = TimeUtil.getGernalTime(preSendTime.getTime(), "yyyy-MM-dd"); // 鏌ヨ鍑哄彲鐢ㄤ簬鍒嗙孩鐨勭敤鎴风殑鎬婚噾棰� long count = teamDividentsSourceOrderService.countCanSendByUidAndPreSendTime(sourceUid, preSendTime); int pageSize = 1000; @@ -100,15 +143,24 @@ } } + // 鍒嗙孩閲戦涓�0鐨勪笉鍙備笌 + if (totalMoney.compareTo(new BigDecimal(0)) <= 0) + return; + // 鏌ヨ鍑哄彲浠ュ弬涓庡垎绾㈢殑鐢ㄦ埛 List<ThreeSale> threeSalesList = threeSaleSerivce.getMyBossDeepList(sourceUid); + if (threeSalesList == null) + return; + Map<Long, UserLevelEnum> uidLevel = new HashMap<Long, UserLevelEnum>(); for (ThreeSale ts : threeSalesList) { if (ts.getBoss() != null) { TeamUserLevelStatistic tus = teamUserLevelStatisticService.selectByUid(ts.getBoss().getId()); - if (tus != null - && (tus.getLevel() == UserLevelEnum.highVIP || tus.getLevel() == UserLevelEnum.superVIP)) { - // TODO 闇�瑕佸垽鏂洟闃熺殑瓒呯骇浼氬憳涓庨珮绾т細鍛� + if (tus == null) + teamUserLevelStatisticService.initData(ts.getBoss().getId()); + tus = teamUserLevelStatisticService.selectByUid(ts.getBoss().getId()); + + if (isCanDividents(tus)) { uidLevel.put(tus.getId(), tus.getLevel()); } } @@ -126,6 +178,8 @@ teamDividentsSourceUser.setTargetUid(uid); teamDividentsSourceUserService.addTeamDividentsSourceUser(teamDividentsSourceUser); } + // if (1 / 0 > 0) + // return; } // 璁$畻骞冲潎鍒嗙孩 @@ -146,6 +200,8 @@ if (userLevel == UserLevelEnum.highVIP) { return perDivident; } else if (userLevel == UserLevelEnum.superVIP) { + return MoneyBigDecimalUtil.mul(perDivident, new BigDecimal(2)); + } else if (userLevel == UserLevelEnum.tearcher) { return MoneyBigDecimalUtil.mul(perDivident, new BigDecimal(2)); } return null; @@ -201,11 +257,13 @@ record.setUid(uid); teamDividentsRecordService.addTeamDividentsRecord(record); - UserMoneyDetail detail = UserMoneyDetailFactory.createOrderTeamDividents(uid, money, new Date()); - // 澧炲姞璧勯噾 - userMoneyService.addUserMoney(uid, money, detail); - - // TODO 鍔犲叆閫氱煡 + // 鏈夊垎绾㈡墠鏄剧ず璧勯噾鏄庣粏 + if (money.compareTo(new BigDecimal(0)) > 0) { + UserMoneyDetail detail = UserMoneyDetailFactory.createOrderTeamDividents(uid, money, new Date()); + // 澧炲姞璧勯噾 + userMoneyService.addUserMoney(uid, money, detail); + // TODO 鍔犲叆閫氱煡 + } } @@ -234,6 +292,9 @@ BigDecimal money = sourceOrder.getMoney(); // 鏌ヨ鍙備笌杩欎竴鍗曞垎绾㈢殑浜� String day = TimeUtil.getGernalTime(sourceOrder.getSendTime().getTime(), "yyyy-MM-dd"); + if (Constant.IS_TEST) + day = TimeUtil.getGernalTime(sourceOrder.getPreSendTime().getTime(), "yyyy-MM-dd"); + List<TeamDividentsSourceUser> list = teamDividentsSourceUserService .listBySourceUidAndDay(sourceOrder.getUid(), day); // 璁$畻姣忎釜浜虹殑姣斾緥 @@ -260,4 +321,18 @@ } + /** + * 鑾峰彇婧愯鍗曢渶瑕佸弬涓庡垎绾㈢殑姣斾緥 + * @Title: getSourceOrderDividentsRate + * @Description: + * @param level + * @return + * BigDecimal 杩斿洖绫诲瀷 + * @throws + */ + public BigDecimal getSourceOrderDividentsRate(UserLevelEnum level) { + String rate = hongBaoManageService.get("team_source_order_dividents_" + level.getLevel()); + return new BigDecimal(rate); + } + } -- Gitblit v1.8.0