yujian
2019-01-29 591b4fc369befea2b0a290cb848d48c71064573c
fanli/src/main/java/com/yeshi/fanli/service/impl/user/UserAccountServiceImpl.java
@@ -8,6 +8,7 @@
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Service;
@@ -43,14 +44,20 @@
import com.yeshi.fanli.exception.UserAccountException;
import com.yeshi.fanli.log.LogHelper;
import com.yeshi.fanli.service.inter.hongbao.HongBaoService;
import com.yeshi.fanli.service.inter.msg.UserAccountMsgNotificationService;
import com.yeshi.fanli.service.inter.user.SpreadUserImgService;
import com.yeshi.fanli.service.inter.user.UserAccountService;
import com.yeshi.fanli.service.inter.user.UserExtraTaoBaoInfoService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FileUtil;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.TimeUtil;
import com.yeshi.fanli.util.factory.AccountDetailsFactory;
import com.yeshi.fanli.util.factory.msg.MsgAccountDetailFactory;
import com.yeshi.fanli.util.wx.WXLoginUtil;
import net.sf.json.JSONObject;
import org.yeshi.utils.JsonUtil;
import org.yeshi.utils.tencentcloud.COSManager;
@@ -95,11 +102,27 @@
   @Resource
   private SpreadUserImgService spreadUserImgService;
   @Resource
   private UserAccountMsgNotificationService userAccountMsgNotificationService;
   @Resource
   private UserExtraTaoBaoInfoService userExtraTaoBaoInfoService;
   @Transactional
   @Override
   public LoginResult login(HttpSession session, Boolean first, String appId, String code, String phone,
   public LoginResult login(HttpServletRequest request, Boolean first, String appId, String code, String phone,
         UserInfo tbUserInfo, boolean wxinstall, int loginType) throws UserAccountException {
      JSONObject logInfo = new JSONObject();
      logInfo.put("appId", appId);
      logInfo.put("code", code);
      logInfo.put("phone", phone);
      if (tbUserInfo != null)
         logInfo.put("tbUserInfo", tbUserInfo.getId());
      logInfo.put("loginType", loginType);
      LogHelper.lgoinInfo(logInfo.toString());
      HttpSession session = request.getSession();
      if (first != null && first == true)
         session.removeAttribute("LAST_LOGIN_USER");
      // 会话中上次登录的用户
@@ -154,6 +177,11 @@
                     updateUserInfo.setPortrait(weiXinUser.getHeadimgurl());
                  updateUserInfo.setWxPic(weiXinUser.getHeadimgurl());
                  updateUserInfo.setWxName(weiXinUser.getNickname());
                  // 设置登录时间与登录类型
                  updateUserInfo.setLastLoginTime(System.currentTimeMillis());
                  updateUserInfo.setLoginType(loginType);
                  updateUserInfo.setLastLoginIp(request.getRemoteHost());
                  userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
                  // 删除邀请图片
                  spreadUserImgService.deleteImgUrl(userInfo.getId());
@@ -167,6 +195,9 @@
               userInfo.setWxOpenId(weiXinUser.getOpenid());
               userInfo.setWxUnionId(weiXinUser.getUnionid());
               userInfo.setWxPic(weiXinUser.getHeadimgurl());
               userInfo.setLastLoginTime(System.currentTimeMillis());
               userInfo.setLoginType(loginType);
               userInfo.setLastLoginIp(request.getRemoteHost());
               addUser(userInfo);
               return new LoginResult(LoginResult.TYPE_NORMAL, userInfo);
@@ -197,13 +228,17 @@
                     // 绑定关系
                     UserInfo updateUserInfo = new UserInfo(userInfo.getId());
                     if (!StringUtil.isNullOrEmpty(lastUser.getPhone()))
                     if (!StringUtil.isNullOrEmpty(lastUser.getPhone())) {
                        updateUserInfo.setPhone(lastUser.getPhone());
                        userAccountMsgNotificationService.bindingSuccess(userInfo.getId(),
                              MsgAccountDetailFactory.TYPE_PHONE);
                     }
                     if (!StringUtil.isNullOrEmpty(lastUser.getOpenid())) {
                        updateUserInfo.setOpenid(lastUser.getOpenid());
                        updateUserInfo.setTbName(lastUser.getTbName());
                        updateUserInfo.setTbPic(lastUser.getTbPic());
                        userAccountMsgNotificationService.bindingSuccess(userInfo.getId(),
                              MsgAccountDetailFactory.TYPE_TB);
                     }
                     updateUserInfo.setLastLoginTime(System.currentTimeMillis());
                     userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
@@ -247,6 +282,8 @@
                     userInfo.setTbPic(lastUser.getTbPic());
                  }
                  userInfo.setLastLoginTime(System.currentTimeMillis());
                  userInfo.setLoginType(loginType);
                  userInfo.setLastLoginIp(request.getRemoteHost());
                  addUser(userInfo);
                  session.removeAttribute("LAST_LOGIN_USER");
                  return new LoginResult(LoginResult.TYPE_NORMAL, userInfo);
@@ -292,6 +329,15 @@
   @Override
   public LoginResult loginNoInstallWX(String appId, String code, String phone, UserInfo tbUserInfo, int loginType)
         throws UserAccountException {
      JSONObject logInfo = new JSONObject();
      logInfo.put("appId", appId);
      logInfo.put("code", code);
      logInfo.put("phone", phone);
      if (tbUserInfo != null)
         logInfo.put("tbUserInfo", tbUserInfo.getId());
      logInfo.put("loginType", loginType);
      LogHelper.lgoinInfo(logInfo.toString());
      UserInfo userInfo = null;
      WeiXinUser weiXinUser = null;
      switch (loginType) {
@@ -499,6 +545,7 @@
         moneyRecordMapper.insertSelective(moneyRecord);
      }
      userAccountMsgNotificationService.connectSuccess(mainUser.getId(), lessUser.getId());
   }
   /**
@@ -508,7 +555,12 @@
    * @param unionId
    * @return
    */
   public UserInfo getUserInfoByWXUnionId(String appId, String unionId) {
   public UserInfo getUserInfoByWXUnionId(String appId, String unionId) throws UserAccountException {
      if (StringUtil.isNullOrEmpty(appId))
         throw new UserAccountException(1, "appId为空");
      if (StringUtil.isNullOrEmpty(unionId))
         throw new UserAccountException(2, "unionId为空");
      return userInfoMapper.getUserInfoByAppIdAndWXUnionId(appId, unionId);
   }
@@ -519,8 +571,11 @@
    * @param openId
    * @return
    */
   public UserInfo getUserInfoByTaoBaoOpenId(String appId, String openId) {
   public UserInfo getUserInfoByTaoBaoOpenId(String appId, String openId) throws UserAccountException {
      if (StringUtil.isNullOrEmpty(appId))
         throw new UserAccountException(1, "appId为空");
      if (StringUtil.isNullOrEmpty(openId))
         throw new UserAccountException(2, "openId为空");
      return userInfoMapper.getUserInfoByAppIdAndTaoBaoOpenId(appId, openId);
   }
@@ -531,8 +586,11 @@
    * @param phone
    * @return
    */
   public UserInfo getUserInfoByPhone(String appId, String phone) {
   public UserInfo getUserInfoByPhone(String appId, String phone) throws UserAccountException {
      if (StringUtil.isNullOrEmpty(appId))
         throw new UserAccountException(1, "appId为空");
      if (StringUtil.isNullOrEmpty(phone))
         throw new UserAccountException(2, "phone为空");
      return userInfoMapper.getUserInfoByAppIdAndPhone(appId, phone);
   }
@@ -613,6 +671,7 @@
      UserInfo update = new UserInfo(user.getId());
      update.setPhone(phone);
      userInfoMapper.updateByPrimaryKeySelective(update);
      userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE);
   }
   @Override
@@ -633,6 +692,7 @@
      UserInfo updateUserInfo = new UserInfo(uid);
      updateUserInfo.setPhone("");
      userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
      userAccountMsgNotificationService.unBindingSuccess(uid, MsgAccountDetailFactory.TYPE_PHONE);
   }
   @Override
@@ -642,8 +702,12 @@
      if (user == null)
         throw new UserAccountException(4, "用户不存在");
      if (!StringUtil.isNullOrEmpty(user.getOpenid()))
      if (!StringUtil.isNullOrEmpty(user.getOpenid()) && !user.getOpenid().equalsIgnoreCase(tbOpenId))
         throw new UserAccountException(5, "当前账号已经绑定了淘宝,请先解绑");
      //绑定同一个淘宝号
      if (!StringUtil.isNullOrEmpty(user.getOpenid()) && user.getOpenid().equalsIgnoreCase(tbOpenId))
         return;
      UserInfo taoBaoUser = getUserInfoByTaoBaoOpenId(user.getAppId(), tbOpenId);
      if (taoBaoUser != null)
@@ -658,6 +722,8 @@
         update.setPortrait(tbPortrait);
      }
      userInfoMapper.updateByPrimaryKeySelective(update);
      userAccountMsgNotificationService.bindingSuccess(uid, MsgAccountDetailFactory.TYPE_TB);
   }
   @Override
@@ -682,6 +748,10 @@
      }
      userInfoMapper.updateByPrimaryKeySelective(update);
      userExtraTaoBaoInfoService.unBindUid(uid);
      userAccountMsgNotificationService.unBindingSuccess(uid, MsgAccountDetailFactory.TYPE_TB);
   }
   @Override
@@ -714,6 +784,8 @@
         updateUserInfo.setPortrait(Constant.systemCommonConfig.getDefaultPortrait());
      }
      userInfoMapper.updateByPrimaryKeySelective(updateUserInfo);
      userAccountMsgNotificationService.changeBindingSuccess(uid, MsgAccountDetailFactory.TYPE_WX);
   }
   @Override