admin
2019-09-16 cc55ffcea74c7d23dadaa0860befbcdf98f35341
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserInfoExtraServiceImpl.java
@@ -16,13 +16,14 @@
import com.yeshi.fanli.dao.mybatis.user.UserInfoExtraMapper;
import com.yeshi.fanli.dao.mybatis.user.UserRankRecordMapper;
import com.yeshi.fanli.dto.wx.WXAccountInfoDTO;
import com.yeshi.fanli.entity.bus.user.ThreeSale;
import com.yeshi.fanli.entity.bus.user.UserInfo;
import com.yeshi.fanli.entity.bus.user.UserInfoExtra;
import com.yeshi.fanli.entity.bus.user.UserRank;
import com.yeshi.fanli.entity.bus.user.UserRankRecord;
import com.yeshi.fanli.entity.bus.user.WeiXinUser;
import com.yeshi.fanli.exception.ThreeSaleException;
import com.yeshi.fanli.exception.user.ThreeSaleException;
import com.yeshi.fanli.exception.user.UserInfoExtraException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.config.ConfigService;
@@ -384,7 +385,7 @@
   
   
   @Override
   public void activationInviteWX(Long uid, String code) throws UserInfoExtraException{
   public void activationInviteWX(WXAccountInfoDTO wxAccount, Long uid, String code) throws UserInfoExtraException{
      if (uid == null || code == null) {
         throw new UserInfoExtraException(1, "激活信息不完整");
      }
@@ -405,7 +406,7 @@
      }
      
      // 获取微信信息
      WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code);
      WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUserWithSavePortrait(code,wxAccount.getAppId(),wxAccount.getAppSecret());
      if (weiXinUser == null) {
         throw new UserInfoExtraException(1, "微信授权失败");
      }
@@ -426,14 +427,25 @@
         UserInfo updateUserInfo = new UserInfo(uid);
         updateUserInfo.setWxOpenId(weiXinUser.getOpenid());
         updateUserInfo.setWxUnionId(weiXinUser.getUnionid());
         if (!StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
            updateUserInfo.setWxName(weiXinUser.getNickname());
            updateUserInfo.setNickName(weiXinUser.getNickname());
         updateUserInfo.setWxName(weiXinUser.getNickname());
         updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
         // 将默认昵称替换成微信昵称
         String defaultNickName = Constant.systemCommonConfig.getDefaultNickName();
         if (!StringUtil.isNullOrEmpty(defaultNickName) && !StringUtil.isNullOrEmpty(weiXinUser.getNickname())) {
            defaultNickName = defaultNickName + uid;
            if ((defaultNickName.equals(invitee.getNickName()) || "返利券".equals(invitee.getNickName()))) {
               updateUserInfo.setNickName(weiXinUser.getNickname());
            }
         }
         if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl())) {
            updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
         // 将默认头像替换成微信头像
         String defaultPortrait = Constant.systemCommonConfig.getDefaultPortrait();
         if (!StringUtil.isNullOrEmpty(weiXinUser.getHeadimgurl()) && !StringUtil.isNullOrEmpty(defaultPortrait)
               && defaultPortrait.equals(invitee.getPortrait())) {
            updateUserInfo.setPortrait(weiXinUser.getHeadimgurl());
         }
         userInfoService.updateByPrimaryKeySelective(updateUserInfo);
         
      } else if (!wxUnionId.equals(wxUnionIdExist)){
@@ -597,7 +609,7 @@
   
   
   @Override
   public UserInfo getInviterInfo(Long uid, String code) throws UserInfoExtraException{
   public UserInfo getInviterInfo(WXAccountInfoDTO wxAccount,Long uid, String code) throws UserInfoExtraException{
      if (code == null) {
         throw new UserInfoExtraException(1, "code信息不完整");
      }
@@ -618,7 +630,7 @@
      }
      
      // 获取微信信息
      WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code);
      WeiXinUser weiXinUser = WXLoginUtil.getWeiXinUser(code,wxAccount.getAppId(),wxAccount.getAppSecret());
      if (weiXinUser == null) {
         throw new UserInfoExtraException(1, "微信授权失败");
      }
@@ -649,68 +661,5 @@
         throw new UserInfoExtraException(1, "对应的邀请关系不存在");
      }
      return inviter;
   }
   @Override
   public String activateUser(Long uid, String inviteUid) throws UserInfoExtraException{
      if (uid == null || inviteUid == null) {
         throw new UserInfoExtraException(1, "传递id不能为空");
      }
      // 被邀请人信息
      UserInfo invitee = userInfoService.selectByPKey(uid);
      if (invitee == null) {
         throw new UserInfoExtraException(1, "用户不存在");
      }
      UserInfoExtra extra = userInfoExtraMapper.getInfoExtraByUid(uid);
      if (extra != null) {
         String inviteCodeHas = extra.getInviteCode();
         if (inviteCodeHas != null && inviteCodeHas.trim().length() > 0) {
            throw new UserInfoExtraException(1, "已存在邀请码,请刷新页面");
         }
      }
      // 邀请人信息
      UserInfo inviter = userInfoService.getInfoByPhoneOrInviteCode(inviteCode, inviteCode);
      if (inviter == null) {
         throw new UserInfoExtraException(1, "上级邀请码不存在");
      }
      // 绑定关系
      try {
         threeSaleSerivce.bindRelationshipByInviteCode(invitee, inviter);
      } catch (ThreeSaleException e) {
         try {
            LogHelper.errorDetailInfo(e);
         } catch (Exception e1) {
            e1.printStackTrace();
         }
         throw new UserInfoExtraException(1, "激活失败");
      }
      // 邀请码有效、生成邀请码
      String code = UserUtil.getInviteCode(uid);
      if (code == null || code.trim().length() == 0) {
         throw new UserInfoExtraException(1, "激活码生成失败");
      }
      UserInfoExtra userInfoExtra = new UserInfoExtra();
      userInfoExtra.setUserInfo(invitee);
      userInfoExtra.setInviteCode(code);
      // 保存额外信息
      saveUserInfoExtra(userInfoExtra);
      Long id = userInfoExtra.getId();
      if (id == null) {
         throw new UserInfoExtraException(1, "激活码生成失败");
      }
      return code;
   }
}