|
@@ -7,7 +7,6 @@ import (
|
|
|
"hongze/hongze_api/services"
|
|
|
"hongze/hongze_api/utils"
|
|
|
"strconv"
|
|
|
- "time"
|
|
|
)
|
|
|
|
|
|
type WechatController struct {
|
|
@@ -61,6 +60,11 @@ func (this *WechatCommonController) WechatLogin() {
|
|
|
return
|
|
|
}
|
|
|
openId := item.Openid
|
|
|
+ if openId == "" {
|
|
|
+ br.Msg = "获取用户信息失败"
|
|
|
+ br.ErrMsg = "获取openid失败,openid:" + item.Openid
|
|
|
+ return
|
|
|
+ }
|
|
|
accessToken, err := services.WxGetAccessToken()
|
|
|
if err != nil {
|
|
|
br.Msg = "获取用户信息失败"
|
|
@@ -69,6 +73,7 @@ func (this *WechatCommonController) WechatLogin() {
|
|
|
}
|
|
|
//获取用户信息
|
|
|
wxUserInfo, err := services.WxGetUserInfo(openId, accessToken)
|
|
|
+
|
|
|
if err != nil {
|
|
|
br.Msg = "获取用户信息失败"
|
|
|
br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
|
|
@@ -81,131 +86,13 @@ func (this *WechatCommonController) WechatLogin() {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- unionid := item.Unionid
|
|
|
- if unionid == "" {
|
|
|
- unionid = wxUserInfo.Unionid
|
|
|
- }
|
|
|
- firstLogin := 1
|
|
|
- userId := 0
|
|
|
- utils.FileLog.Info("openId:%s", openId)
|
|
|
- utils.FileLog.Info("unionid:%s", unionid)
|
|
|
- //获取成功
|
|
|
- if openId != "" {
|
|
|
- wxUser, err := models.GetWxUserItemByOpenId(openId)
|
|
|
- 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()) {
|
|
|
- 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 {
|
|
|
- firstLogin = wxUser.FirstLogin
|
|
|
- userId = wxUser.UserId
|
|
|
- }
|
|
|
- } else {
|
|
|
- br.Msg = "获取用户信息失败"
|
|
|
- br.ErrMsg = "获取openid失败,openid:" + item.Openid
|
|
|
- return
|
|
|
- }
|
|
|
- permission, err := services.CheckUserPermission(userId)
|
|
|
- if err != nil {
|
|
|
- utils.FileLog.Info("userId:%s,err:%s", strconv.Itoa(userId), err)
|
|
|
- }
|
|
|
- //if err != nil {
|
|
|
- // br.Msg = "登录失败"
|
|
|
- // br.ErrMsg = "登录失败,判断权限失败:" + err.Error()
|
|
|
- // return
|
|
|
- //}
|
|
|
- var token string
|
|
|
- tokenItem, err := models.GetTokenByUid(userId)
|
|
|
- if err != nil && err.Error() != utils.ErrNoRow() {
|
|
|
- br.Msg = "登录失败"
|
|
|
- br.ErrMsg = "登录失败,获取token失败:" + err.Error()
|
|
|
+ token,userId,firstLogin,permission,err := services.WxLogin(code,item,wxUserInfo)
|
|
|
+ if err != nil{
|
|
|
+ br.Msg = "微信登录失败"
|
|
|
+ br.ErrMsg = "微信登录失败,err:" + 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.OpenId = openId
|
|
|
- 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
|
|
|
- }
|
|
|
-
|
|
|
- if wxUserInfo != nil {
|
|
|
- go models.ModifyWxUserInfo(wxUserInfo.Nickname, wxUserInfo.Headimgurl, wxUserInfo.City, wxUserInfo.Province, wxUserInfo.Country, wxUserInfo.Sex, userId)
|
|
|
- }
|
|
|
- //firstLogin==1,强制绑定手机号或者邮箱
|
|
|
- {
|
|
|
- newItem, _ := models.GetWxUserItemByUserId(userId)
|
|
|
- if newItem.Mobile == "" && newItem.Email == "" {
|
|
|
- firstLogin = 1
|
|
|
- }
|
|
|
- }
|
|
|
- //新增登录日志
|
|
|
- {
|
|
|
- loginLog := new(models.WxUserLog)
|
|
|
- loginLog.UserId = userId
|
|
|
- loginLog.OpenId = openId
|
|
|
- loginLog.UnionId = unionid
|
|
|
- loginLog.CreateTime = time.Now()
|
|
|
- loginLog.Handle = "wechat_login"
|
|
|
- loginLog.Remark = token
|
|
|
- go models.AddWxUserLog(loginLog)
|
|
|
- }
|
|
|
-
|
|
|
- {
|
|
|
- codeLog := new(models.WxUserCode)
|
|
|
- codeLog.WxCode = code
|
|
|
- codeLog.UserId = userId
|
|
|
- codeLog.Code = 0
|
|
|
- codeLog.FirstLogin = firstLogin
|
|
|
- codeLog.Authorization = token
|
|
|
- codeLog.UserPermission = permission
|
|
|
- codeLog.CreateTime=time.Now()
|
|
|
- models.AddWxUserCode(codeLog)
|
|
|
- }
|
|
|
-
|
|
|
resp.UserId = userId
|
|
|
resp.Code = 0
|
|
|
resp.FirstLogin = firstLogin
|
|
@@ -224,6 +111,208 @@ func (this *WechatCommonController) WechatLogin() {
|
|
|
utils.FileLog.Info(this.Ctx.Input.URI()+" code: %s , return data: %s", code, string(returnResult))
|
|
|
}
|
|
|
}
|
|
|
+//作废于2021-03-29 10:14:54
|
|
|
+//func (this *WechatCommonController) WechatLoginV1() {
|
|
|
+// br := new(models.BaseResponse).Init()
|
|
|
+// defer func() {
|
|
|
+// this.Data["json"] = br
|
|
|
+// this.ServeJSON()
|
|
|
+// }()
|
|
|
+// resp := new(models.WxLoginResp)
|
|
|
+//
|
|
|
+// code := this.GetString("Code")
|
|
|
+// fmt.Println("code:", code)
|
|
|
+// utils.FileLog.Info("WechatLogin code:%s", code)
|
|
|
+// wxCodeInfo, err := models.GetWxUserCode(code)
|
|
|
+// if err == nil && wxCodeInfo != nil && wxCodeInfo.Id > 0 {
|
|
|
+// utils.FileLog.Info("WechatLogin code exist:%s", code)
|
|
|
+// resp.UserId = wxCodeInfo.UserId
|
|
|
+// resp.Code = 0
|
|
|
+// resp.FirstLogin = wxCodeInfo.FirstLogin
|
|
|
+// resp.Authorization = wxCodeInfo.Authorization
|
|
|
+// resp.UserPermission = wxCodeInfo.UserPermission
|
|
|
+// br.Ret = 200
|
|
|
+// br.Success = true
|
|
|
+// br.Msg = "登录成功"
|
|
|
+// br.Data = resp
|
|
|
+// return
|
|
|
+// }
|
|
|
+//
|
|
|
+// item, err := services.WxGetUserOpenIdByCode(code)
|
|
|
+// if err != nil {
|
|
|
+// br.Msg = "获取用户信息失败"
|
|
|
+// br.ErrMsg = "获取用户信息失败,Err:" + err.Error()
|
|
|
+// return
|
|
|
+// }
|
|
|
+// if item.Errcode != 0 {
|
|
|
+// br.Msg = "获取用户信息失败"
|
|
|
+// br.ErrMsg = "获取access_token 失败 errcode:" + strconv.Itoa(item.Errcode) + " ;errmsg:" + item.Errmsg
|
|
|
+// return
|
|
|
+// }
|
|
|
+// openId := item.Openid
|
|
|
+// accessToken, err := services.WxGetAccessToken()
|
|
|
+// if err != nil {
|
|
|
+// br.Msg = "获取用户信息失败"
|
|
|
+// br.ErrMsg = "获取access_token失败,err:" + err.Error()
|
|
|
+// return
|
|
|
+// }
|
|
|
+// //获取用户信息
|
|
|
+// wxUserInfo, err := services.WxGetUserInfo(openId, accessToken)
|
|
|
+// if err != nil {
|
|
|
+// br.Msg = "获取用户信息失败"
|
|
|
+// br.ErrMsg = "获取微信用户信息失败,Err:" + err.Error()
|
|
|
+// return
|
|
|
+// }
|
|
|
+// if wxUserInfo.Errcode != 0 {
|
|
|
+// userInfoJson, _ := json.Marshal(wxUserInfo)
|
|
|
+// br.Msg = "登录失败"
|
|
|
+// br.ErrMsg = "获取用户信息失败,err:" + string(userInfoJson)
|
|
|
+// return
|
|
|
+// }
|
|
|
+//
|
|
|
+// unionid := item.Unionid
|
|
|
+// if unionid == "" {
|
|
|
+// unionid = wxUserInfo.Unionid
|
|
|
+// }
|
|
|
+// firstLogin := 1
|
|
|
+// userId := 0
|
|
|
+// utils.FileLog.Info("openId:%s", openId)
|
|
|
+// utils.FileLog.Info("unionid:%s", unionid)
|
|
|
+// //获取成功
|
|
|
+// if openId != "" {
|
|
|
+// wxUser, err := models.GetWxUserItemByOpenId(openId)
|
|
|
+// 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()) {
|
|
|
+// 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 {
|
|
|
+// firstLogin = wxUser.FirstLogin
|
|
|
+// userId = wxUser.UserId
|
|
|
+// }
|
|
|
+// } else {
|
|
|
+// br.Msg = "获取用户信息失败"
|
|
|
+// br.ErrMsg = "获取openid失败,openid:" + item.Openid
|
|
|
+// return
|
|
|
+// }
|
|
|
+// permission, err := services.CheckUserPermission(userId)
|
|
|
+// if err != nil {
|
|
|
+// utils.FileLog.Info("userId:%s,err:%s", strconv.Itoa(userId), err)
|
|
|
+// }
|
|
|
+// //if err != nil {
|
|
|
+// // br.Msg = "登录失败"
|
|
|
+// // br.ErrMsg = "登录失败,判断权限失败:" + err.Error()
|
|
|
+// // return
|
|
|
+// //}
|
|
|
+// 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.OpenId = openId
|
|
|
+// 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
|
|
|
+// }
|
|
|
+//
|
|
|
+// if wxUserInfo != nil {
|
|
|
+// go models.ModifyWxUserInfo(wxUserInfo.Nickname, wxUserInfo.Headimgurl, wxUserInfo.City, wxUserInfo.Province, wxUserInfo.Country, wxUserInfo.Sex, userId)
|
|
|
+// }
|
|
|
+// //firstLogin==1,强制绑定手机号或者邮箱
|
|
|
+// {
|
|
|
+// newItem, _ := models.GetWxUserItemByUserId(userId)
|
|
|
+// if newItem.Mobile == "" && newItem.Email == "" {
|
|
|
+// firstLogin = 1
|
|
|
+// }
|
|
|
+// }
|
|
|
+// //新增登录日志
|
|
|
+// {
|
|
|
+// loginLog := new(models.WxUserLog)
|
|
|
+// loginLog.UserId = userId
|
|
|
+// loginLog.OpenId = openId
|
|
|
+// loginLog.UnionId = unionid
|
|
|
+// loginLog.CreateTime = time.Now()
|
|
|
+// loginLog.Handle = "wechat_login"
|
|
|
+// loginLog.Remark = token
|
|
|
+// go models.AddWxUserLog(loginLog)
|
|
|
+// }
|
|
|
+//
|
|
|
+// {
|
|
|
+// codeLog := new(models.WxUserCode)
|
|
|
+// codeLog.WxCode = code
|
|
|
+// codeLog.UserId = userId
|
|
|
+// codeLog.Code = 0
|
|
|
+// codeLog.FirstLogin = firstLogin
|
|
|
+// codeLog.Authorization = token
|
|
|
+// codeLog.UserPermission = permission
|
|
|
+// codeLog.CreateTime=time.Now()
|
|
|
+// models.AddWxUserCode(codeLog)
|
|
|
+// }
|
|
|
+//
|
|
|
+// resp.UserId = userId
|
|
|
+// resp.Code = 0
|
|
|
+// resp.FirstLogin = firstLogin
|
|
|
+// resp.Authorization = token
|
|
|
+// resp.UserPermission = permission
|
|
|
+// br.Ret = 200
|
|
|
+// br.Success = true
|
|
|
+// br.Msg = "登录成功"
|
|
|
+// br.Data = resp
|
|
|
+// //登录日志
|
|
|
+// {
|
|
|
+// returnResult, err := json.Marshal(br)
|
|
|
+// if err != nil {
|
|
|
+// utils.FileLog.Info(this.Ctx.Input.URI() + " Err:%s" + err.Error())
|
|
|
+// }
|
|
|
+// utils.FileLog.Info(this.Ctx.Input.URI()+" code: %s , return data: %s", code, string(returnResult))
|
|
|
+// }
|
|
|
+//}
|
|
|
|
|
|
// @Title 微信获取签名接口
|
|
|
// @Description 微信获取签名接口
|