Prechádzať zdrojové kódy

fix:修复登录逻辑

zqbao 11 mesiacov pred
rodič
commit
b0f31c1224
2 zmenil súbory, kde vykonal 24 pridanie a 10 odobranie
  1. 17 10
      controllers/wechat.go
  2. 7 0
      models/wx_sesssion.go

+ 17 - 10
controllers/wechat.go

@@ -207,18 +207,25 @@ func (this *WechatController) Login() {
 		br.ErrMsg = "用户信息获取失败,系统错误,Err:" + err.Error()
 		return
 	}
-	session := &models.WxSession{
-		WxSessionId: utils.MD5(userInfo.OpenID),
-		OpenId:      userInfo.OpenID,
-		UnionId:     userInfo.UnionID,
-		CreateTime:  time.Now(),
-	}
-	er := session.Insert()
-	if er != nil {
-		br.Msg = "用户登录失败"
-		br.ErrMsg = "用户登录获取失败,系统错误,Err:" + er.Error()
+	session, err := models.GetWxSessionByOpenId(userInfo.OpenID)
+	if err != nil && err.Error() != utils.ErrNoRow() {
+		br.Msg = "登录失败,请重新尝试"
+		br.ErrMsg = "用户信息获取失败,系统错误,Err:" + err.Error()
 		return
 	}
+	if session == nil {
+		session = &models.WxSession{
+			OpenId:     userInfo.OpenID,
+			UnionId:    userInfo.UnionID,
+			CreateTime: time.Now(),
+		}
+		er := session.Insert()
+		if er != nil {
+			br.Msg = "用户登录失败"
+			br.ErrMsg = "用户登录获取失败,系统错误,Err:" + er.Error()
+			return
+		}
+	}
 	var token string
 	timeUnix := time.Now().Unix()
 	timeUnixStr := strconv.FormatInt(timeUnix, 10)

+ 7 - 0
models/wx_sesssion.go

@@ -33,3 +33,10 @@ func GetWxSessionByAccessToken(accessToken string) (item *WxSession, err error)
 	err = o.Raw(sql, accessToken).QueryRow(&item)
 	return
 }
+
+func GetWxSessionByOpenId(openId string) (item *WxSession, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT * FROM wx_session WHERE open_id = ?`
+	err = o.Raw(sql, openId).QueryRow(&item)
+	return
+}