yujian
2020-05-09 7e7db2fa55a9a3af46d4fd8ede0dee147f101d64
fanli/src/main/java/com/yeshi/fanli/service/impl/redpack/RedPackWinInviteServiceImpl.java
@@ -93,7 +93,7 @@
   public BigDecimal getRewardMoney(Long uid) {
      return redPackWinInviteMapper.getRewardMoney(uid);
   }
   @Override
   @RequestSerializableByKeyService(key = "#teamUid")
   @Transactional(rollbackFor = Exception.class)
@@ -106,13 +106,13 @@
      if (!VersionUtil.greaterThan_2_0_5("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
            activeLog.getVersionCode()))
         return;
      // 同一队员只记录一次
      int totalReward = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid,
            RedPackWinInviteTypeEnum.zeroStageReward.name());
      if (totalReward > 0)
         return;
      // 获得红包
      RedPackWinInvite winInvite = new RedPackWinInvite();
      winInvite.setUid(bossId);
@@ -124,14 +124,14 @@
      winInvite.setUpdateTime(new Date());
      redPackWinInviteMapper.insertSelective(winInvite);
   }
   @Override
   @RequestSerializableByKeyService(key = "#teamUid")
   @Transactional(rollbackFor = Exception.class)
   public void inviteSucceedReward(Long teamUid) throws Exception {
      // 是否在上线之后的邀请关系
      ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME));
      ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid,
            TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME));
      if (threeSale == null)
         return;
@@ -144,6 +144,11 @@
      // 小于2.0.2版本不增加
      if (!VersionUtil.greaterThan_2_0_5("appstore".equalsIgnoreCase(activeLog.getChannel()) ? "ios" : "android",
            activeLog.getVersionCode()))
         return;
      int totalRewardZero = redPackWinInviteMapper.countByUidAndTeamUidAndType(bossId, teamUid,
            RedPackWinInviteTypeEnum.zeroStageReward.name());
      if (totalRewardZero <= 0)
         return;
      // 同一队员奖励一次
@@ -222,7 +227,8 @@
         return;
      // 验证上下级关系
      ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid, TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME));
      ThreeSale threeSale = threeSaleSerivce.getByWorkerIdAndTime(teamUid,
            TimeUtil.convertDateToTemp(Constant.RED_PACK_ONLINE_TIME));
      if (threeSale == null || threeSale.getBoss().getId().longValue() != uid.longValue())
         return;
@@ -252,7 +258,7 @@
    * @param orderNo
    * @param bossId
    */
   @Transactional(rollbackFor=Exception.class)
   @Transactional(rollbackFor = Exception.class)
   private void twoStageRewardToBoss(Long bossId, Long teamUid, Date oneStageTime, Integer source, String orderNo)
         throws Exception {
      // 第一阶段完成之后的90天内 ; 队友产生的订单中(自购+分享),邀请人累计产生≥1 元奖金
@@ -305,7 +311,7 @@
    * @param orderNo
    * @param bossId
    */
   @Transactional(rollbackFor=Exception.class)
   @Transactional(rollbackFor = Exception.class)
   private void threeStageRewardToBoss(Long bossId, Long teamUid, Date twoStageTime, Integer source, String orderNo)
         throws Exception {
      // 二、三阶段不可同月
@@ -366,25 +372,24 @@
            money, "粉丝(好友)完成第三阶段连续[第" + monthSpace + "个月]", new Gson().toJson(dto));
   }
   @Override
   public List<RedPackWinProgressVO> getInviteProgressByWorkerId(Long uid, Long tid) {
      List<RedPackWinProgressVO> listVO = new ArrayList<RedPackWinProgressVO>();
      ThreeSale threeSale = threeSaleSerivce.getNearRelationByBossIdAndWorkerId(uid, tid);
      if (threeSale == null || threeSale.getSucceedTime() == null)
         return listVO;
      UserInfo userInfo = userInfoService.selectByPKey(tid);
      if (userInfo == null)
      if (userInfo == null)
         return listVO;
      // 奖励记录
      List<RedPackWinInvite> listWin = redPackWinInviteMapper.getWinListByBossIdAndTeamUid(uid, tid);
      if (listWin == null || listWin.size() == 0)
      if (listWin == null || listWin.size() == 0)
         return listVO;
      int month = 1;
      for (RedPackWinInvite win: listWin) {
      for (RedPackWinInvite win : listWin) {
         if (win.getType() == RedPackWinInviteTypeEnum.zeroStageReward) {
            listVO.add(new RedPackWinProgressVO("成功注册", TimeUtil.formatDate(userInfo.getCreatetime())));
            listVO.add(new RedPackWinProgressVO("确立邀请", TimeUtil.formatDate(threeSale.getSucceedTime())));
@@ -394,37 +399,49 @@
         if (win.getType() == RedPackWinInviteTypeEnum.oneStageReward) {
            listVO.add(new RedPackWinProgressVO("第一阶段", time, money.toString()));
            continue;
         }
         }
         if (win.getType() == RedPackWinInviteTypeEnum.twoStageReward) {
            listVO.add(new RedPackWinProgressVO("第二阶段", time, money.toString()));
            continue;
         }
         }
         if (win.getType() == RedPackWinInviteTypeEnum.threeStageReward) {
            listVO.add(new RedPackWinProgressVO("第三阶段第" + month + "个月", time, money.toString()));
            month ++;
            month++;
            continue;
         }
      }
      return listVO;
   }
   @Override
   public List<RedPackWinInvite> getWinTopListByBossId(int page, int count, Long uid) {
      return redPackWinInviteMapper.getWinTopListByBossId(count * (page-1), count, uid);
      return redPackWinInviteMapper.getWinTopListByBossId(count * (page - 1), count, uid);
   }
   @Override
   public long countWinTopListByBossId(Long uid) {
      return redPackWinInviteMapper.countWinTopListByBossId(uid);
   }
   @Override
   public long countTeamNumByTid(Long uid, Long teamUid) {
      return redPackWinInviteMapper.countTeamNumByTid(uid, teamUid);
   }
   
   @Override
   public List<RedPackWinInvite> query(long page, int count, String key, String type){
      return redPackWinInviteMapper.query(count * (page - 1), count, key, type);
   }
   @Override
   public long count(String key, String type){
      Long count = redPackWinInviteMapper.count(key, type);
      if (count == null) {
         count = 0L;
      }
      return count;
   }
}