yujian
2020-03-28 393e3a365b5ebbed6e9eef07fbd18881cde73711
fanli/src/main/java/com/yeshi/fanli/service/impl/order/InviteOrderSubsidyServiceImplV2.java
@@ -136,6 +136,8 @@
         throw new CommonOrderException(1, "订单不存在");
      }
      Date orderTime = commonOrderList.get(0).getThirdCreateTime();
      Long sourceUid = commonOrderList.get(0).getUserInfo().getId();
      List<ThreeSale> bossList = threeSaleSerivce.getMyBossDeepList(sourceUid, 4);
@@ -147,7 +149,8 @@
      for (int i = 2; i < bossList.size(); i++) {
         rewardUid.add(bossList.get(i).getBoss().getId());
      }
      // 删除本补贴用户的下级
      // 删除补贴用户的下级用户
      for (int i = 0; i < bossList.size(); i++) {
         if (bossList.get(i).getBoss().getId().longValue() == subsidy.getUid()) {
            break;
@@ -157,30 +160,36 @@
         }
      }
      // 获取补贴用户的直接上级
      if (bossList.size() > 1 && bossList.get(1).getSucceedTime() < subsidy.getCreateTime().getTime()) {
         UserInfo boss = bossList.get(1).getBoss();
         UserLevelEnum userLevel = userLevelManager.getUserLevel(boss.getId());
         BigDecimal rewardMoney = orderHongBaoMoneyComputeService.computeFirstTeamReward(subsidy.getMoney(),
               subsidy.getCreateTime(), userLevel);
      for (int i = 1; i < bossList.size(); i++) {
         if (rewardUid.contains(bossList.get(i).getBoss().getId())) {
            UserInfo boss = bossList.get(i).getBoss();
            if (i == 1) {
               if (bossList.get(i).getSucceedTime() < subsidy.getCreateTime().getTime()) {
                  UserLevelEnum userLevel = userLevelManager.getUserLevel(boss.getId(), orderTime);
                  BigDecimal rewardMoney = orderHongBaoMoneyComputeService
                        .computeFirstTeamReward(subsidy.getMoney(), subsidy.getCreateTime(), userLevel);
         if (rewardMoney != null) {
            // 添加奖励
            orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(), OrderTeamReward.LEVEL_ONE);
         }
                  if (rewardMoney != null) {
                     // 添加奖励
                     orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(),
                           OrderTeamReward.LEVEL_ONE);
                  }
               }
            } else if (i == 2) {
               if (bossList.get(i).getSucceedTime() < subsidy.getCreateTime().getTime()) {
                  UserLevelEnum userLevel = userLevelManager.getUserLevel(boss.getId(), orderTime);
                  BigDecimal rewardMoney = orderHongBaoMoneyComputeService
                        .computeSecondTeamReward(subsidy.getMoney(), subsidy.getCreateTime(), userLevel);
         // 获取补贴的间接上级
         if (bossList.size() > 2 && bossList.get(2).getSucceedTime() < subsidy.getCreateTime().getTime()) {
            boss = bossList.get(2).getBoss();
            userLevel = userLevelManager.getUserLevel(boss.getId());
            rewardMoney = orderHongBaoMoneyComputeService.computeSecondTeamReward(subsidy.getMoney(),
                  subsidy.getCreateTime(), userLevel);
            if (rewardMoney != null) {
               // 添加奖励
               orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(), OrderTeamReward.LEVEL_TWO);
                  if (rewardMoney != null) {
                     // 添加奖励
                     orderTeamRewardService.addOrUpdate(subsidy, rewardMoney, boss.getId(),
                           OrderTeamReward.LEVEL_TWO);
                  }
               }
            }
         }
         }
      }
   }
@@ -191,7 +200,9 @@
      if (list != null && list.size() > 0) {
         // 必须是自购订单才返利
         HongBaoV2 parent = hongBaoV2Service.selectByPrimaryKey(list.get(0).getHongBaoV2().getId());
         if (parent != null && parent.getUrank() != UserLevelEnum.superVIP.getOrderRank()) {// 不是超级会员的自购/分享才补贴
         if (parent != null && parent.getUrank() != UserLevelEnum.superVIP.getOrderRank()
               && (parent.getType() == HongBaoV2.TYPE_SHARE_GOODS || parent.getType() == HongBaoV2.TYPE_ZIGOU)) {// 不是超级会员的自购/分享才补贴
            boolean isShare = (parent.getType() == HongBaoV2.TYPE_SHARE_GOODS);
            List<CommonOrder> orderList = commonOrderService.listBySourceTypeAndOrderId(sourceType, orderId);
            if (orderList == null || orderList.size() == 0)
@@ -249,7 +260,7 @@
               // 计算奖励金
               for (Iterator<Long> its = uidHongBaoMap.keySet().iterator(); its.hasNext();) {
                  Long uid = its.next();
                  UserLevelEnum userLevel = userLevelManager.getUserLevel(uid);
                  UserLevelEnum userLevel = userLevelManager.getUserLevel(uid, placeOrderTime);
                  int type = uidHongBaoMap.get(uid);
                  if (type == HongBaoV2.TYPE_YIJI || type == HongBaoV2.TYPE_ERJI) {
@@ -273,7 +284,7 @@
                     else
                        orderSubsidy.setLevel(InviteOrderSubsidy.LEVEL_TWO);
                     // 会员才能补贴
                     if (userLevel != UserLevelEnum.daRen)
                     if (userLevel != UserLevelEnum.daRen) {
                        try {
                           addOrderSubsidy(orderSubsidy);
                        } catch (OrderTeamRewardException e) {
@@ -281,6 +292,11 @@
                        } catch (CommonOrderException e) {
                           throw new InviteOrderSubsidyException(e.getCode(), e.getMsg());
                        }
                        // 分享赚不能使用返利奖励券,不用等待5天
                        if (isShare) {
                           validByOrderIdAndSourceType(orderId, sourceType);
                        }
                     }
                  }
               }
            }
@@ -328,6 +344,7 @@
               InviteOrderSubsidy update = new InviteOrderSubsidy(subsidy.getId());
               update.setState(InviteOrderSubsidy.STATE_INVALID);
               update.setUpdateTime(new Date());
               update.setInValidTime(new Date());
               inviteOrderSubsidyMapper.updateByPrimaryKeySelective(update);
               orderTeamRewardService.invalidByOrderIdAndSourceType(subsidy.getId());
            }
@@ -359,6 +376,7 @@
               InviteOrderSubsidy update = new InviteOrderSubsidy(subsidy.getId());
               update.setState(InviteOrderSubsidy.STATE_VALID);
               update.setUpdateTime(new Date());
               update.setValidTime(new Date());
               update.setPreGetTime(preGetTime);
               inviteOrderSubsidyMapper.updateByPrimaryKeySelective(update);
               orderTeamRewardService.validByOrderIdAndSourceType(subsidy.getId(), preGetTime);
@@ -375,4 +393,18 @@
      inviteOrderSubsidyMapper.updateByPrimaryKeySelective(orderSubsidy);
   }
   @Override
   public BigDecimal sumRecievedMoneyByUid(long uid,  Integer level) {
      return inviteOrderSubsidyMapper.sumRecievedMoneyByUid(uid, level);
   }
   @Override
   public BigDecimal sumValidMoneyByUidAndDate(long uid, Integer day, Integer level) {
      return inviteOrderSubsidyMapper.sumValidMoneyByUidAndDate(uid, day, level);
   }
}