yujian
2020-04-16 c57f9a24c525aa557225b663fa55120a36f99735
fanli/src/main/java/com/yeshi/fanli/service/manger/order/TeamDividentsManager.java
@@ -16,7 +16,6 @@
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;
@@ -24,6 +23,7 @@
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;
@@ -35,10 +35,10 @@
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;
@@ -74,19 +74,25 @@
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private TeamEincomeManager teamEincomeManager;
   @Transactional(rollbackFor = Exception.class)
   public void addDividentsSourceOrder(List<CommonOrder> commonOrderList) throws TeamDividentsSourceOrderException {
      if (commonOrderList.get(0).getThirdCreateTime().getTime() < Constant.NEW_ORDER_FANLI_RULE_TIME)
         return;
      UserLevelEnum level = UserLevelUtil.getByOrderRank(commonOrderList.get(0).getUrank());
      if (level == null)
         level = UserLevelEnum.daRen;
      BigDecimal rate = getSourceOrderDividentsRate(level);
      TeamDividentsSourceOrder order = TeamDividentsSourceOrderFactory.create(commonOrderList, rate);
      if (order == null)
         return;
      try {
         teamDividentsSourceOrderService.addTeamDividentsSourceOrder(order);
      } catch (TeamDividentsSourceOrderException e) {
         e.printStackTrace();
      } catch (ParamsException e) {
         e.printStackTrace();
         throw new TeamDividentsSourceOrderException(101, "参数不完整");
      }
   }
@@ -107,7 +113,7 @@
   // 是否可以分红
   private boolean isCanDividents(TeamUserLevelStatistic tus) {
      if (Constant.IS_TEST)
      if (Constant.IS_TEST && tus.getLevel() != UserLevelEnum.daRen && tus.getLevel() != UserLevelEnum.normalVIP)
         return true;
      if (tus != null && (tus.getLevel() == UserLevelEnum.highVIP || tus.getLevel() == UserLevelEnum.superVIP
@@ -186,6 +192,11 @@
         }
      }
      // 没有参与分红的用户
      if (uidLevel == null || uidLevel.size() == 0) {
         return;
      }
      BigDecimal perDivident = computePerDivident(uidLevel, totalMoney);
      for (Iterator<Long> its = uidLevel.keySet().iterator(); its.hasNext();) {
         Long uid = its.next();
@@ -198,8 +209,6 @@
         teamDividentsSourceUser.setTargetUid(uid);
         teamDividentsSourceUserService.addTeamDividentsSourceUser(teamDividentsSourceUser);
      }
      // if (1 / 0 > 0)
      // return;
   }
   // 计算平均分红
@@ -253,11 +262,12 @@
    * @throws
    */
   @Transactional(rollbackFor = Exception.class)
   public void addDividents(Long uid, String day)
         throws TeamDividentsRecordException, TeamDividentsDebtException, UserMoneyDetailException, ParamsException {
   public void addToTeamEincome(Long uid, Date preSendTime) throws TeamDividentsRecordException,
         TeamDividentsDebtException, UserMoneyDetailException, ParamsException, TeamEincomeRecordException {
      String day = TimeUtil.getGernalTime(preSendTime.getTime(), "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());
@@ -279,12 +289,8 @@
      // 有分红才显示资金明细
      if (money.compareTo(new BigDecimal(0)) > 0) {
         UserMoneyDetail detail = UserMoneyDetailFactory.createOrderTeamDividents(uid, money, new Date());
         // 增加资金
         userMoneyService.addUserMoney(uid, money, detail);
         // TODO 加入通知
         teamEincomeManager.addTeamDividents(uid, preSendTime, money);
      }
   }
   /**
@@ -338,7 +344,6 @@
      } else if (sourceOrder.getState() == TeamDividentsSourceOrder.STATE_CAN_SEND) {
         teamDividentsSourceOrderService.invalidOrder(orderNo, sourceType, "订单维权");
      }
   }
   /**