Browse Source

test(微信PC端登录逻辑)

Roc 4 years ago
parent
commit
8faa0fb03f
2 changed files with 57 additions and 156 deletions
  1. 57 153
      controllers/wechat_pc.go
  2. 0 3
      services/user.go

+ 57 - 153
controllers/wechat_pc.go

@@ -47,177 +47,81 @@ func (this *WechatCommonController) PcWechatLogin() {
 	utils.FileLog.Info("item.AccessToken):%s", item.AccessToken)
 
 	//获取用户信息
-	wxUserInfo, err := services.PcWxGetUserInfo(openId, item.AccessToken)
+	wxPcUserInfo, err := services.PcWxGetUserInfo(openId, item.AccessToken)
 	if err != nil {
 		br.Msg = "获取用户信息失败"
 		br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
 		return
 	}
-	if wxUserInfo.Errcode != 0 {
-		userInfoJson, _ := json.Marshal(wxUserInfo)
+	if wxPcUserInfo.Errcode != 0 {
+		userInfoJson, _ := json.Marshal(wxPcUserInfo)
 		br.Msg = "登录失败"
 		br.ErrMsg = "获取用户信息失败,err:" + string(userInfoJson)
 		return
 	}
-	var unionid string
-	unionid = item.Unionid
-	utils.FileLog.Info("item unionid:%s", unionid)
-	if unionid == "" {
-		unionid = wxUserInfo.Unionid
+	if err != nil{
+		br.Msg = "微信登录失败"
+		br.ErrMsg = "微信登录失败,err:" + err.Error()
+		return
 	}
-	utils.FileLog.Info("openId:%s", openId)
-	utils.FileLog.Info("unionid:%s", unionid)
 
-	firstLogin := 1
-	userId := 0
-	//获取成功
-	if unionid != "" {
-		wxUser, err := models.GetWxUserItemByUnionid(unionid)
-		if err != nil && err.Error() != utils.ErrNoRow() {
-			br.Msg = "获取用户信息失败"
-			br.ErrMsg = "根据openid获取用户信息失败,Eerr:" + err.Error()
-			return
-		}
-		if wxUser == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
-			utils.FileLog.Info("用户不存在,注册")
-			user := new(models.WxUser)
-			user.OpenId = openId
-			user.CompanyId = 1
-			user.CreatedTime = time.Now()
-			user.UnionId = unionid
-			user.Unionid = unionid
-			user.NickName = wxUserInfo.Nickname
-			user.Sex = wxUserInfo.Sex
-			user.City = wxUserInfo.City
-			user.Province = wxUserInfo.Province
-			user.Country = wxUserInfo.Country
-			user.Headimgurl = wxUserInfo.Headimgurl
-			user.FirstLogin = 1
-			user.Enabled = 1
-			user.RegisterTime = time.Now()
-			user.RegisterPlatform = 2
-			_, err = models.AddWxUser(user)
-			wxUser, err = models.GetWxUserItemByUnionid(wxUserInfo.Unionid)
-			if err != nil {
-				br.Msg = "获取用户信息失败"
-				br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
-				return
-			}
-			userId = wxUser.UserId
-		} else {
-			utils.FileLog.Info("用户已经存在")
-			firstLogin = wxUser.FirstLogin
-			userId = wxUser.UserId
-			utils.FileLog.Info("用户已经存在,用户id:%d", userId)
-		}
-	} else {
-		if openId != "" {
-			wxUser, err := models.GetWxUserItemByOpenId(openId)
-			if err != nil {
-				br.Msg = "获取用户信息失败"
-				br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
-				return
-			}
-			if wxUser == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
-				user := new(models.WxUser)
-				user.OpenId = openId
-				user.CompanyId = 1
-				user.CreatedTime = time.Now()
-				user.UnionId = unionid
-				user.Unionid = unionid
-				user.NickName = wxUserInfo.Nickname
-				user.Sex = wxUserInfo.Sex
-				user.City = wxUserInfo.City
-				user.Province = wxUserInfo.Province
-				user.Country = wxUserInfo.Country
-				user.Headimgurl = wxUserInfo.Headimgurl
-				user.FirstLogin = 1
-				user.Enabled = 1
-				user.RegisterPlatform = 1
-				user.RegisterTime = time.Now()
-				_, err = models.AddWxUser(user)
-				wxUser, err = models.GetWxUserItemByOpenId(openId)
-				if err != nil {
-					br.Msg = "获取用户信息失败"
-					br.ErrMsg = "unionid登录,获取微信用户信息失败,Err:" + err.Error()
-					return
-				}
-				userId = wxUser.UserId
-			} else {
-				userId = wxUser.UserId
-			}
-		}
+	wxUserInfo := &services.WxUserInfo{
+		Openid         :wxPcUserInfo.Openid,
+		Nickname       :wxPcUserInfo.Nickname,
+		Sex            :wxPcUserInfo.Sex,
+		Language       :wxPcUserInfo.Language,
+		City           :wxPcUserInfo.City,
+		Province       :wxPcUserInfo.Province,
+		Country        :wxPcUserInfo.Country,
+		Headimgurl     :wxPcUserInfo.Headimgurl,
+		//SubscribeTime  :0,
+		Unionid        :wxPcUserInfo.Unionid,
+		//Remark         :wxPcUserInfo.Province,
+		//Groupid        :wxPcUserInfo.Groupid,
+		//SubscribeScene string `json:"subscribe_scene"`
+		//Errcode        int    `json:"errcode"`
+		//Errmsg         string `json:"errmsg"`
 	}
+	token,userId,firstLogin,permission,err := services.WxLogin(code,item,wxUserInfo)
 
-	permission, err := services.CheckUserPermission(userId)
-	if err != nil {
-		br.Msg = "登录失败"
-		br.ErrMsg = "登录失败,判断权限失败:" + err.Error()
-		return
-	}
 
-	//更新用户微信信息
-	if wxUserInfo != nil {
-		models.ModifyWxUserInfo(wxUserInfo.Nickname, wxUserInfo.Headimgurl, wxUserInfo.City, wxUserInfo.Province, wxUserInfo.Country, wxUserInfo.Sex, userId)
-	}
-	newUser, _ := models.GetWxUserItemByUserId(userId)
+	newUser, userErr := services.GetWxUserItemByOpenId(wxUserInfo.Openid)
 	utils.FileLog.Info("获取用户信息:%d", userId)
 
-	var token string
-	tokenItem, err := models.GetTokenByUid(userId)
-	if err != nil && err.Error() != utils.ErrNoRow() {
-		br.Msg = "登录失败"
-		br.ErrMsg = "登录失败,获取token失败:" + err.Error()
-		return
-	}
-	if tokenItem == nil || (err != nil && err.Error() == utils.ErrNoRow()) {
-		timeUnix := time.Now().Unix()
-		timeUnixStr := strconv.FormatInt(timeUnix, 10)
-		token = utils.MD5(strconv.Itoa(userId)) + utils.MD5(timeUnixStr)
-		//新增session
-		{
-			session := new(models.Session)
-			session.UserId = userId
-			session.CreatedTime = time.Now()
-			session.LastUpdatedTime = time.Now()
-			session.ExpireTime = time.Now().AddDate(0, 3, 0)
-			session.AccessToken = token
-			err = models.AddSession(session)
-			if err != nil {
-				br.Msg = "登录失败"
-				br.ErrMsg = "登录失败,新增用户session信息失败:" + err.Error()
-				return
-			}
-		}
-	} else {
-		token = tokenItem.AccessToken
-	}
+	var email,headimgurl,mobile,companyName, status, endDate, productName string
 
-	cp, err := models.GetCompanyProductsByUserId(userId)
-	if err != nil {
-		br.Msg = "登录失败"
-		br.ErrMsg = "登录失败,获取客户信息失败:" + err.Error()
-		return
-	}
-	var companyName, status, endDate, productName string
-	for _, v := range cp {
-		companyName = v.CompanyName
-		if v.EndDate == "0000-00-00" {
-			v.EndDate = ""
+	//用户信息赋值
+	if newUser != nil && userId > 0{
+		email = newUser.Email
+		headimgurl = newUser.Headimgurl
+		mobile = newUser.Mobile
+
+		cp, err := models.GetCompanyProductsByUserId(userId)
+		if err != nil {
+			br.Msg = "登录失败"
+			br.ErrMsg = "登录失败,获取客户信息失败:" + err.Error()
+			return
 		}
-		if status != "" {
-			status = status + "/" + v.Status
-			if v.EndDate != "" {
-				endDate = endDate + "/" + v.Status + ":" + v.EndDate
+		for _, v := range cp {
+			companyName = v.CompanyName
+			if v.EndDate == "0000-00-00" {
+				v.EndDate = ""
 			}
-			productName = productName + "/" + v.ProductName
-		} else {
-			status = v.Status
-			if v.EndDate != "" {
-				endDate = v.Status + ":" + v.EndDate
+			if status != "" {
+				status = status + "/" + v.Status
+				if v.EndDate != "" {
+					endDate = endDate + "/" + v.Status + ":" + v.EndDate
+				}
+				productName = productName + "/" + v.ProductName
+			} else {
+				status = v.Status
+				if v.EndDate != "" {
+					endDate = v.Status + ":" + v.EndDate
+				}
+				productName = v.ProductName
 			}
-			productName = v.ProductName
 		}
+
 	}
 
 	//新增登录日志
@@ -237,9 +141,9 @@ func (this *WechatCommonController) PcWechatLogin() {
 	resp.FirstLogin = firstLogin
 	resp.Authorization = token
 	resp.UserPermission = permission
-	resp.Email = newUser.Email
-	resp.Headimgurl = newUser.Headimgurl
-	resp.Mobile = newUser.Mobile
+	resp.Email = email
+	resp.Headimgurl = headimgurl
+	resp.Mobile = mobile
 	resp.CompanyName = companyName
 	resp.EndDate = endDate
 	resp.Status = status

+ 0 - 3
services/user.go

@@ -333,9 +333,6 @@ QUERY_WX_USER:
 	return
 }
 
-func UserLogin()  {
-	
-}
 
 //添加第三方用户(微信)记录
 func AddUserRecord(openId,unionId,nickName,realName,province,city,country,headimgurl,sessionKey string,platform,sex,subscribe int) (userRecord *models.UserRecord,err error) {