admin
2020-05-20 98b1a0affd69bbe63223c21fdd2c404e8bedfccb
fanli/src/main/java/com/yeshi/fanli/service/manger/order/HongBaoV2AddManager.java
@@ -136,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) {
@@ -498,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) {
@@ -539,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级BOSS存在且红包未失效,免单不支持多级分销
@@ -549,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());
@@ -564,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);
@@ -574,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
@@ -591,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")) {
@@ -605,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);
@@ -618,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);
@@ -652,7 +654,7 @@
      } else
         throw new HongBaoException(2, "type错误");
      return false;
      return new HongBaoSaveResult(true, false);
   }
   /**
@@ -665,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) {
@@ -927,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;
      }
   }
}