From 28cf328a098334b51a3e9d2d56f983fb8c862211 Mon Sep 17 00:00:00 2001 From: yujian <yujian@163.com> Date: 星期六, 23 五月 2020 09:54:38 +0800 Subject: [PATCH] 足迹、收藏订单兼容新需求 --- fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java | 104 +++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 75 insertions(+), 29 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java index bb92104..10ff0a0 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java @@ -25,7 +25,6 @@ import com.yeshi.fanli.entity.bus.user.HongBaoV2; import com.yeshi.fanli.entity.bus.user.ThreeSale; import com.yeshi.fanli.entity.bus.user.UserInfo; -import com.yeshi.fanli.entity.bus.user.vip.TeamUserLevelStatistic; import com.yeshi.fanli.entity.bus.user.vip.UserLevelEnum; import com.yeshi.fanli.entity.order.CommonOrder; import com.yeshi.fanli.entity.order.CommonOrderGoods; @@ -43,7 +42,6 @@ import com.yeshi.fanli.service.inter.user.UserSystemCouponRecordService; import com.yeshi.fanli.service.inter.user.UserSystemCouponService; import com.yeshi.fanli.service.inter.user.invite.ThreeSaleSerivce; -import com.yeshi.fanli.service.inter.user.vip.TeamUserLevelStatisticService; import com.yeshi.fanli.service.inter.user.vip.UserVIPInfoService; import com.yeshi.fanli.service.manger.user.UserLevelManager; import com.yeshi.fanli.util.Constant; @@ -97,9 +95,6 @@ @Resource private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService; - @Resource - private TeamUserLevelStatisticService teamUserLevelStatisticService; - /** * 娣诲姞绾㈠寘淇℃伅 * @@ -141,8 +136,10 @@ throw new HongBaoException(1, "璁㈠崟淇℃伅涓嶅畬鏁�"); HongBaoOrder hongBaoOrder = hongBaoOrderMapper.selectByCommonOrderId(commonOrder.getId()); if (hongBaoOrder == null) { - miandan = saveHongBao(commonOrder, type, notificationMap, userLevel, placeOrderDate); - hasAdd = true; + HongBaoSaveResult result = saveHongBao(commonOrder, type, notificationMap, userLevel, + placeOrderDate); + miandan = result.isMiandan(); + hasAdd = result.isAdd(); } else { boolean update = updateHongBao(hongBaoOrder, commonOrder, type, notificationMap, placeOrderDate); if (update) { @@ -151,7 +148,6 @@ } } - int state = getOrderState(stateSet); /** @@ -191,20 +187,20 @@ case HongBaoV2.TYPE_ERJI: userOrderMsgNotificationService.orderInviteStatistic(uid, orderId, orderType, - commonOrder.getPayment(), money, new BigDecimal(0), goodsCount, state, + commonOrder.getPayment(), money, new BigDecimal(0), goodsCount, state, commonOrder.getThirdCreateTime()); break; case HongBaoV2.TYPE_SHARE_YIJI: userOrderMsgNotificationService.orderInviteStatistic(uid, orderId, orderType, - commonOrder.getPayment(), money, new BigDecimal(0), goodsCount, state, + commonOrder.getPayment(), money, new BigDecimal(0), goodsCount, state, commonOrder.getThirdCreateTime()); break; case HongBaoV2.TYPE_SHARE_ERJI: userOrderMsgNotificationService.orderInviteStatistic(uid, orderId, orderType, - commonOrder.getPayment(), money, new BigDecimal(0), goodsCount, state, + commonOrder.getPayment(), money, new BigDecimal(0), goodsCount, state, commonOrder.getThirdCreateTime()); break; @@ -248,13 +244,32 @@ List<Long> uidList = new ArrayList<Long>(); for (ThreeSale ts : threeSales) uidList.add(ts.getBoss().getId()); - List<TeamUserLevelStatistic> levelList = teamUserLevelStatisticService.listByUids(uidList); - if (levelList != null) - for (TeamUserLevelStatistic s : levelList) { - resultList.add(new UserTeamLevel(s.getId(), s.getLevel())); - } + + for (Long bossUid : uidList) { + UserLevelEnum level = userLevelManager.getUserLevel(bossUid); + resultList.add(new UserTeamLevel(bossUid, level)); + } + } + return resultList; + } + + private List<UserTeamLevel> getBossList(List<HongBaoV2> children) { + List<UserTeamLevel> resultList = new ArrayList<>(); + for (HongBaoV2 v2 : children) { + + UserLevelEnum level = UserLevelUtil.getByOrderRank(v2.getUrank()); + if (level == null) + level = UserLevelEnum.daRen; + UserTeamLevel teamLevel = new UserTeamLevel(v2.getUserInfo().getId(), level); + + if (v2.getType() == HongBaoV2.TYPE_YIJI || v2.getType() == HongBaoV2.TYPE_SHARE_YIJI) { + resultList.add(0, teamLevel); + } else { + resultList.add(teamLevel); + } + } return resultList; } @@ -334,7 +349,7 @@ // 鑾峰彇瀛愮孩鍖� List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBao.getId()); if (children != null && children.size() > 0) { - List<UserTeamLevel> bossList = getBossList(hongBao.getUserInfo().getId(), 2); + List<UserTeamLevel> bossList = getBossList(children); for (HongBaoV2 child : children) { if (child.getState() == HongBaoV2.STATE_YILINGQU) @@ -381,7 +396,7 @@ } if (boss != null) { - List<UserTeamLevel> bossList = getBossList(hongBao.getUserInfo().getId(), 2); + List<UserTeamLevel> bossList = getBossList(oldHongBao.getUserInfo().getId(), 2); // 鎻掑叆涓�绾у瓙绾㈠寘 money = orderHongBaoMoneyComputeService.computeFirstInviteMoney(commonOrder, buyerLevel, @@ -440,7 +455,7 @@ // 鑾峰彇瀛愮孩鍖� List<HongBaoV2> children = hongBaoV2Mapper.listChildrenById(hongBao.getId()); if (children != null && children.size() > 0) { - List<UserTeamLevel> bossList = getBossList(hongBao.getUserInfo().getId(), 2); + List<UserTeamLevel> bossList = getBossList(children); for (HongBaoV2 child : children) { if (child.getState() == HongBaoV2.STATE_YILINGQU) continue; @@ -485,7 +500,7 @@ } @Transactional(rollbackFor = Exception.class) - private boolean saveHongBao(CommonOrder commonOrder, int type, Map<Integer, HongBaoOrder> notificationMap, + private HongBaoSaveResult saveHongBao(CommonOrder commonOrder, int type, Map<Integer, HongBaoOrder> notificationMap, UserLevelEnum buyerLevel, Date placeOrderDate) throws HongBaoException, UserAccountException { if (type == HongBaoV2.TYPE_ZIGOU) { @@ -526,7 +541,7 @@ orderHongBaoMoneyComputeService.computeFanliMoney(commonOrder, buyerLevel), mianDanMoney, buyerLevel); if (hongBao == null) - return mianDanMoney != null; + return new HongBaoSaveResult(false, mianDanMoney != null); addFanLiOrShareHongBao(hongBao, commonOrder, notificationMap); UserInfo boss = threeSaleSerivce.getBoss(hongBao.getUserInfo().getId()); if (boss != null && hongBao.getState() != HongBaoV2.STATE_SHIXIAO && mianDanMoney == null) {// 1绾OSS瀛樺湪涓旂孩鍖呮湭澶辨晥,鍏嶅崟涓嶆敮鎸佸绾у垎閿� @@ -536,7 +551,7 @@ BigDecimal money = orderHongBaoMoneyComputeService.computeFirstInviteMoney(commonOrder, buyerLevel, bossList); if (money == null)// 杩斿埄璧勯噾涓虹┖涓嶅弬涓庡垎鎴� - return mianDanMoney != null; + return new HongBaoSaveResult(true, mianDanMoney != null); UserLevelEnum bossLevel = userLevelManager.getUserLevel(boss.getId()); @@ -551,7 +566,7 @@ money = orderHongBaoMoneyComputeService.computeSecondInviteMoney(commonOrder, buyerLevel, bossList); bossLevel = userLevelManager.getUserLevel(boss.getId()); if (money == null) - return mianDanMoney != null; + return new HongBaoSaveResult(true, mianDanMoney != null); HongBaoV2 secondHongbao = createInviteHongBao(boss.getId(), hongBao, commonOrder, HongBaoV2.TYPE_ERJI, money, bossLevel); addInviteHongBao(secondHongbao, null, notificationMap, commonOrder); @@ -561,7 +576,7 @@ } else if (type == HongBaoV2.TYPE_SHARE_GOODS) { // 鍒嗕韩璧氫笉鍔犲叆澶辨晥鐨勮鍗� if (commonOrder.getState() == CommonOrder.STATE_SX || commonOrder.getState() == CommonOrder.STATE_WQ) - return false; + return new HongBaoSaveResult(false, false); // 鍒嗕韩璧� BigDecimal money = null; if (commonOrder.getSourceType() == Constant.SOURCE_TYPE_TAOBAO @@ -578,10 +593,10 @@ money = orderHongBaoMoneyComputeService.computeShareMoney(commonOrder, buyerLevel); if (money == null || money.compareTo(new BigDecimal(0)) <= 0) - return false; + return new HongBaoSaveResult(false, false); HongBaoV2 hongBao = createShareHongBao(commonOrder, money, buyerLevel); if (hongBao == null) - return false; + return new HongBaoSaveResult(false, false); addFanLiOrShareHongBao(hongBao, commonOrder, notificationMap); // 4鏈�17鏃ュ悗鎵嶆湁涓�绾у垎浜禋 if (placeOrderDate.getTime() > TimeUtil.convertToTimeTemp("2019-04-17", "yyyy-MM-dd")) { @@ -592,7 +607,7 @@ money = orderHongBaoMoneyComputeService.computeFirstInviteMoney(commonOrder, buyerLevel, bossList); if (money == null) - return false; + return new HongBaoSaveResult(true, false); UserLevelEnum bossLevel = userLevelManager.getUserLevel(boss.getId()); HongBaoV2 firstHongbao = createInviteHongBao(boss.getId(), hongBao, commonOrder, HongBaoV2.TYPE_SHARE_YIJI, money, bossLevel); @@ -605,7 +620,7 @@ money = orderHongBaoMoneyComputeService.computeSecondInviteMoney(commonOrder, buyerLevel, bossList); if (money == null)// 杩斿埄姣斾緥涓�0灏变笉缁熻 - return false; + return new HongBaoSaveResult(true, false); bossLevel = userLevelManager.getUserLevel(boss.getId()); HongBaoV2 secondChild = createInviteHongBao(boss.getId(), hongBao, commonOrder, HongBaoV2.TYPE_SHARE_ERJI, money, bossLevel); @@ -639,7 +654,7 @@ } else throw new HongBaoException(2, "type閿欒"); - return false; + return new HongBaoSaveResult(true, false); } /** @@ -652,6 +667,11 @@ private void addInviteHongBao(HongBaoV2 child, String parentHongBaoUserName, Map<Integer, HongBaoOrder> notificationMap, CommonOrder commonOrder) { if (child != null) { + // 鑰佺増鏈祫閲戜负0鐨勭孩鍖呬笉鍔犲叆閭�璇疯鍗� + if (child.getMoney() == null || (child.getMoney().compareTo(new BigDecimal(0)) == 0 + && commonOrder.getThirdCreateTime().getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME)) + return; + hongBaoV2Mapper.insertSelective(child); // 鐢ㄦ埛閫氱煡 if (notificationMap.get(child.getType()) == null) { @@ -914,4 +934,30 @@ return hongBao; } + class HongBaoSaveResult { + boolean add; + boolean miandan; + + public void setMiandan(boolean miandan) { + this.miandan = miandan; + } + + public HongBaoSaveResult(boolean add, boolean miandan) { + super(); + this.add = add; + this.miandan = miandan; + } + + public boolean isAdd() { + return add; + } + + public void setAdd(boolean add) { + this.add = add; + } + + public boolean isMiandan() { + return miandan; + } + } } -- Gitblit v1.8.0