package users import ( "recook/internal/back" "recook/internal/dbc" "recook/internal/define" "recook/internal/model/user" service "recook/internal/service/app" "recook/tools" "regexp" "github.com/astaxie/beego" "github.com/gin-gonic/gin" ) type wxBindingParam struct { UserId uint `json:"userId"` Code string `json:"code" validate:"required"` } /** 手机号注册之后绑定微信用 */ func WxBinding(c *gin.Context) { var p wxBindingParam err := tools.ParseParams(&p, c) if err != nil { back.Fail(c, err.Error()) return } wxUserInfo, err := service.GetInfoByCode(p.Code) if err != nil { back.Err(c, "wechat err:"+err.Error()) return } // 拿到 userInfo 去更新数据库中的信息 var userInfo user.Information dbc.DB.Find(&userInfo, p.UserId) if userInfo.ID <= 0 { back.Fail(c, "用户不存在") return } if len(userInfo.WxUnionId) > 0 { back.Fail(c, "该账号,已经绑定了微信") return } sql := `select count(*) from recook_user_info where wx_union_id=? and wx_app_open_id =?` var is_count int dbc.DB.Raw(sql, wxUserInfo.UnionId, wxUserInfo.OpenID).Count(&is_count) if is_count > 0 { back.Fail(c, "该微信号已经绑定了其他账号") return } beego.Info(sql, is_count) reg := regexp.MustCompile(`瑞库客\d+`) res := reg.FindAllString(userInfo.Nickname, -1) if len(res) >= 0 { wxUserInfo.Nickname = userInfo.Nickname // 昵称 前缀是瑞库客的是系统自动生成的,会更新 } if userInfo.HeadImgUrl != define.DefaultHeadImage { wxUserInfo.HeadImgUrl = userInfo.HeadImgUrl } if err = dbc.DB.Model(&userInfo).Update(user.Information{ Nickname: wxUserInfo.Nickname, HeadImgUrl: wxUserInfo.HeadImgUrl, WxUnionId: wxUserInfo.UnionId, WxAppOpenId: wxUserInfo.OpenID, Gender: wxUserInfo.Sex, }).Error; err != nil { back.Err(c, "数据错误:"+err.Error()) return } // not good dbc.DB.Find(&userInfo, p.UserId) login(c, &userInfo) return }