From dd5b15229cb15459fa7c31ccea77dac28cbfafbd Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期一, 13 四月 2020 10:04:20 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/div' into div --- fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java | 122 ++++++++++++++++++++++++++++++++++++---- 1 files changed, 109 insertions(+), 13 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..1ef7474 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 @@ -16,25 +16,31 @@ import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic; import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; -import com.yeshi.fanli.entity.money.UserMoneyDetail; +import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.dividents.TeamDividentsDebt; import com.yeshi.fanli.entity.order.dividents.TeamDividentsRecord; import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceOrder; import com.yeshi.fanli.entity.order.dividents.TeamDividentsSourceUser; import com.yeshi.fanli.exception.ParamsException; import com.yeshi.fanli.exception.money.TeamDividentsDebtException; +import com.yeshi.fanli.exception.money.TeamEincomeRecordException; import com.yeshi.fanli.exception.money.UserMoneyDetailException; import com.yeshi.fanli.exception.order.dividents.TeamDividentsRecordException; +import com.yeshi.fanli.exception.order.dividents.TeamDividentsSourceOrderException; 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.service.manger.money.TeamEincomeManager; +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; +import com.yeshi.fanli.util.factory.order.dividents.TeamDividentsSourceOrderFactory; +import com.yeshi.fanli.util.user.UserLevelUtil; /** * 鍥㈤槦鍒嗙孩绠$悊 @@ -65,6 +71,28 @@ @Resource private UserMoneyService userMoneyService; + @Resource + private HongBaoManageService hongBaoManageService; + + @Resource + private TeamEincomeManager teamEincomeManager; + + @Transactional(rollbackFor = Exception.class) + public void addDividentsSourceOrder(List<CommonOrder> commonOrderList) throws TeamDividentsSourceOrderException { + UserLevelEnum level = UserLevelUtil.getByOrderRank(commonOrderList.get(0).getUrank()); + if (level == null) + level = UserLevelEnum.daRen; + BigDecimal rate = getSourceOrderDividentsRate(level); + TeamDividentsSourceOrder order = TeamDividentsSourceOrderFactory.create(commonOrderList, rate); + try { + teamDividentsSourceOrderService.addTeamDividentsSourceOrder(order); + } catch (TeamDividentsSourceOrderException e) { + e.printStackTrace(); + } catch (ParamsException e) { + e.printStackTrace(); + } + } + /** * 寮�濮嬪垎绾� * @Title: startDividents @@ -77,6 +105,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 +166,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 +201,8 @@ teamDividentsSourceUser.setTargetUid(uid); teamDividentsSourceUserService.addTeamDividentsSourceUser(teamDividentsSourceUser); } + // if (1 / 0 > 0) + // return; } // 璁$畻骞冲潎鍒嗙孩 @@ -146,6 +223,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; @@ -177,11 +256,12 @@ * @throws */ @Transactional(rollbackFor = Exception.class) - public void addDividents(Long uid, String day) - throws TeamDividentsRecordException, TeamDividentsDebtException, UserMoneyDetailException, ParamsException { + public void addToTeamEincome(Long uid, String day) throws TeamDividentsRecordException, TeamDividentsDebtException, + UserMoneyDetailException, ParamsException, TeamEincomeRecordException { + Date preSendTime = new Date(TimeUtil.convertToTimeTemp(day, "yyyy-MM-dd")); BigDecimal money = teamDividentsSourceUserService.sumMoneyByUidAndDay(uid, day); // 鏌ヨ闇�瑕佹墸闄ょ殑璧勯噾 - List<TeamDividentsDebt> list = teamDividentsDebtService.listNeedRepayDebt(uid, 1, 1000); + List<TeamDividentsDebt> list = teamDividentsDebtService.listNeedRepayDebt(uid, preSendTime, 1, 1000); for (TeamDividentsDebt debt : list) { if (money.subtract(debt.getLeftMoney()).compareTo(new BigDecimal(0)) >= 0) {// 杩樻湁閽辫繕 money = money.subtract(debt.getLeftMoney()); @@ -201,12 +281,11 @@ record.setUid(uid); teamDividentsRecordService.addTeamDividentsRecord(record); - UserMoneyDetail detail = UserMoneyDetailFactory.createOrderTeamDividents(uid, money, new Date()); - // 澧炲姞璧勯噾 - userMoneyService.addUserMoney(uid, money, detail); + // 鏈夊垎绾㈡墠鏄剧ず璧勯噾鏄庣粏 + if (money.compareTo(new BigDecimal(0)) > 0) { - // TODO 鍔犲叆閫氱煡 - + teamEincomeManager.addTeamDividents(uid, preSendTime, money); + } } /** @@ -234,6 +313,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 +342,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