浏览代码

fix:用户微信登录后,新增记录当前的sessionKey

Roc 3 年之前
父节点
当前提交
20b6dceaaf
共有 2 个文件被更改,包括 18 次插入2 次删除
  1. 8 1
      models/tables/user_record/update.go
  2. 10 1
      services/user/user.go

+ 8 - 1
models/tables/user_record/update.go

@@ -32,10 +32,17 @@ func (userRecord *UserRecord) UnBindUserRecordByOpenid() (err error) {
 
 // UnBindUserRecordByOpenid 根据openid解除绑定用户关系
 func UnBindUserRecordByOpenid(openId string) (err error) {
-
 	err = global.DEFAULT_MYSQL.Model(UserRecord{}).Select("UserID", "BindAccount").Where("open_id = ? ", openId).Updates(UserRecord{
 		UserID:      0,
 		BindAccount: "",
 	}).Error
 	return
 }
+
+// ModifySessionKeyByOpenid 根据openid更新sessionKey
+func ModifySessionKeyByOpenid(openId, sessionKey string) (err error) {
+	err = global.DEFAULT_MYSQL.Model(UserRecord{}).Select("SessionKey").Where("open_id = ? ", openId).Updates(UserRecord{
+		SessionKey: sessionKey,
+	}).Error
+	return
+}

+ 10 - 1
services/user/user.go

@@ -170,16 +170,20 @@ func formatWxUser(wxUser *wx_user.WxUser, platform int) (userInfo UserInfo) {
 func WxLogin(wxPlatform int, wxSession auth.ResCode2Session) (token string, userId int, isBind bool, err error) {
 	openId := wxSession.OpenID
 	unionId := wxSession.UnionID
+	sessionKey := wxSession.SessionKey
 
+	needUpdateSessionKey := true //是否更新sessionKey
 QUERY_WX_USER:
 	wxUser, wxUserErr := GetWxUserItemByOpenId(openId)
 	if wxUserErr == ERR_NO_USER_RECORD { //没有用户openid记录
-		_, recordErr := AddUserRecord(openId, unionId, "", "", "", "", "", "", "", wxPlatform, 0, 0)
+		_, recordErr := AddUserRecord(openId, unionId, "", "", "", "", "", "", sessionKey, wxPlatform, 0, 0)
 		//如果插入失败,那么直接将错误信息返回
 		if recordErr != nil {
 			err = recordErr
 			return
 		}
+		needUpdateSessionKey = false //因为是新增用户微信信息,所以不需要更新sessionKey的数据了
+
 		//插入成功后,需要重新查询该用户,并进入下面的逻辑
 		goto QUERY_WX_USER
 	} else if wxUserErr == ERR_USER_NOT_BIND {
@@ -189,6 +193,11 @@ QUERY_WX_USER:
 		return
 	}
 
+	//更新微信用户的sessionKey
+	if needUpdateSessionKey {
+		_ = user_record.ModifySessionKeyByOpenid(openId, sessionKey)
+	}
+
 	//如果已经登录注册绑定的情况下
 	if wxUserErr == nil {
 		userId = int(wxUser.UserID)