admin
2019-08-22 c044b6dd024b6884a4f39bc56e4873c95b13fe02
fanli/src/main/java/com/yeshi/fanli/service/impl/hongbao/ThreeSaleSerivceImpl.java
@@ -8,6 +8,7 @@
import javax.annotation.Resource;
import org.springframework.core.task.TaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -15,14 +16,18 @@
import com.yeshi.fanli.dao.mybatis.UserInfoMapper;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.ThreeSaleExtraInfo;
import com.yeshi.fanli.entity.bus.user.UserActiveLog;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.exception.ThreeSaleException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.HongBaoManageService;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleExtraInfoSerivce;
import com.yeshi.fanli.service.inter.hongbao.ThreeSaleSerivce;
import com.yeshi.fanli.service.inter.msg.MsgInviteDetailService;
import com.yeshi.fanli.service.inter.msg.UserInviteMsgNotificationService;
import com.yeshi.fanli.service.inter.tlj.UserTaoLiJinOriginService;
import com.yeshi.fanli.service.inter.user.UserActiveLogService;
import com.yeshi.fanli.service.inter.user.UserInfoExtraService;
import com.yeshi.fanli.service.inter.user.UserInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.StringUtil;
@@ -55,6 +60,20 @@
   
   @Resource
   private UserTaoLiJinOriginService userTaoLiJinOriginService;
   @Resource
   private UserActiveLogService userActiveLogService;
   @Resource
   private UserInfoExtraService userInfoExtraService;
   @Resource
   private ThreeSaleExtraInfoSerivce threeSaleExtraInfoSerivce;
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
   
   public UserInfo getBoss(final long uid) {
@@ -330,7 +349,7 @@
   public List<ThreeSale> listbyIdAndBossId(Long id, Long uid, Integer expire) {
      return threeSaleMapper.listbyIdAndBossId(id, uid, expire);
   }
   @Override
   public JSONObject getMyFirstTeam(long start, int count, Long uid, Integer state) {
@@ -470,7 +489,8 @@
      return result;
   }
   @Override
   public List<ThreeSale> listByWorkerId(Long workerId) {
      return threeSaleMapper.listByWorkerId(workerId);
@@ -483,7 +503,7 @@
   @Override
   @Transactional
   public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter, String platform, String version) throws ThreeSaleException {
   public void bindRelationshipByInviteCode(UserInfo invitee, UserInfo inviter) throws ThreeSaleException {
      if (invitee == null || inviter == null) 
         throw new ThreeSaleException(1, "用户信息为空");
@@ -493,6 +513,8 @@
      if (threeSale != null) {
         // 有效关系--生效
         threeSale.setBoss(inviter);
         threeSale.setWorker(invitee);
         threeSale.setState(true);
         threeSale.setExpire(ThreeSale.EXPIRE_NORMAL);
         threeSale.setSucceedTime(java.lang.System.currentTimeMillis());
@@ -527,26 +549,48 @@
      // 邀请消息
      userInviteMsgNotificationService.inviteSuccess(inviter.getId(), threeSale);
      
      if (VersionUtil.greaterThan_1_5_60(platform, version)) {
         // 奖励淘礼金红包
         try {
            String inviteName= invitee.getNickName();
            if (StringUtil.isNullOrEmpty(inviteName)) {
               UserInfo userInfo = userInfoService.selectByPKey(invitee.getId());
               if (userInfo != null) {
                  inviteName= userInfo.getNickName();
      executor.execute(new Runnable() {
         @Override
         public void run() {
            try {
               UserActiveLog activeLog  = userActiveLogService.getUserLatestActiveInfo(inviter.getId());
               if (activeLog != null  && !StringUtil.isNullOrEmpty(activeLog.getVersionCode()) ) {
                  String versionCode = activeLog.getVersionCode();
                  String channel = activeLog.getChannel();
                  boolean result = false;
                  // 渠道是appstore 判断为IOS
                  if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) {
                     result = VersionUtil.greaterThan_1_5_60("ios", versionCode);
                  } else {
                     result = VersionUtil.greaterThan_1_5_60("android", versionCode);
                  }
                  if (result) {
                     // 被邀请名称
                     String inviteName= invitee.getNickName();
                     if (StringUtil.isNullOrEmpty(inviteName)) {
                        UserInfo userInfo = userInfoService.selectByPKey(invitee.getId());
                        if (userInfo != null) {
                           inviteName= userInfo.getNickName();
                        }
                     }
                     // 奖励邀请红包(淘礼金)
                     userTaoLiJinOriginService.addInviteWinMoney(inviter.getId(), inviteName);
                  }
               }
            } catch (Exception e) {
               LogHelper.errorDetailInfo(e);
            }
            userTaoLiJinOriginService.addInviteWinMoney(inviter.getId(), inviteName);
         } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
         }
      }
      });
   }
   @Override
   @Transactional
   public void bindRelationshipByWX(UserInfo invitee, Long inviterId, ThreeSale threeSaleOld, String platform, String version) throws ThreeSaleException {
   public void bindRelationshipByWX(UserInfo invitee, Long inviterId, ThreeSale threeSaleOld) throws ThreeSaleException {
      if (invitee == null || (inviterId == null && threeSaleOld == null))
         throw new ThreeSaleException(1, "用户信息为空");
@@ -589,30 +633,50 @@
      
      UserInfo boss = userInfoService.selectByPKey(threeSale.getBoss().getId());
      threeSale.setBoss(boss);
      threeSale.setWorker(invitee);
      
      // 添加到队列
      ThreeSaleCMQManager.getInstance().addThreeSaleMsg(threeSale);
      // 邀请消息
      userInviteMsgNotificationService.inviteSuccess(threeSale.getBoss().getId(), threeSale);
      
      if (VersionUtil.greaterThan_1_5_60(platform, version)) {
         // 奖励淘礼金红包
         try {
            String inviteName= invitee.getNickName();
            if (StringUtil.isNullOrEmpty(inviteName)) {
               UserInfo userInfo = userInfoService.selectByPKey(invitee.getId());
               if (userInfo != null) {
                  inviteName= userInfo.getNickName();
      executor.execute(new Runnable() {
         @Override
         public void run() {
            try {
               UserActiveLog activeLog  = userActiveLogService.getUserLatestActiveInfo(inviterId);
               if (activeLog != null  && !StringUtil.isNullOrEmpty(activeLog.getVersionCode()) ) {
                  boolean result = false;
                  String versionCode = activeLog.getVersionCode();
                  String channel = activeLog.getChannel();
                  // 渠道是appstore 判断为IOS
                  if (!StringUtil.isNullOrEmpty(channel) && "appstore".equalsIgnoreCase(channel)) {
                     result = VersionUtil.greaterThan_1_5_60("ios", versionCode);
                  } else {
                     result = VersionUtil.greaterThan_1_5_60("android", versionCode);
                  }
                  if (result) {
                     // 被邀请名称
                     String inviteName= invitee.getNickName();
                     if (StringUtil.isNullOrEmpty(inviteName)) {
                        UserInfo userInfo = userInfoService.selectByPKey(invitee.getId());
                        if (userInfo != null) {
                           inviteName= userInfo.getNickName();
                        }
                     }
                     // 奖励邀请红包(淘礼金)
                     userTaoLiJinOriginService.addInviteWinMoney(inviterId, inviteName);
                  }
               }
            } catch (Exception e) {
               LogHelper.errorDetailInfo(e);
            }
            userTaoLiJinOriginService.addInviteWinMoney(inviterId, inviteName);
         } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
         }
      }
      });
   }
   
   /**
@@ -636,5 +700,22 @@
   public ThreeSale selectByWorkerId(Long workerId) {
      return threeSaleMapper.selectSuccessByWorkerId(workerId);
   }
   @Override
   public List<ThreeSale> getSuccessByDate(Long bossId, Long minTime, Long maxTime){
      return threeSaleMapper.getSuccessByDate(bossId, minTime, maxTime);
   }
   @Override
   public List<ThreeSale> listFirstTeam(long start, int count, Long uid, Integer state) {
      return threeSaleMapper.listFirstTeam(start, count, uid, state);
   }
   @Override
   public List<ThreeSale> listSecondTeam(long start, int count, Long uid, Integer state) {
      return threeSaleMapper.listSecondTeam(start, count, uid, state);
   }
}