1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- package services
- import (
- "errors"
- "fmt"
- "hongze/hongze_cygxzs/models"
- "hongze/hongze_cygxzs/utils"
- )
- var ERR_NO_USER_RECORD = errors.New("用户关系没有入库")
- var ERR_USER_NOT_BIND = errors.New("用户没有绑定")
- //通过openid获取用户信息
- func GetWxUserItemByOpenId(openid string) (item *models.WxUserItem, err error) {
- //通过openid获取用户关联信息
- userRecord, userRecordErr := models.GetUserRecordByOpenId(openid)
- fmt.Println("userRecordErr", userRecordErr)
- if userRecordErr != nil {
- if userRecordErr.Error() == utils.ErrNoRow() {
- err = ERR_NO_USER_RECORD
- return
- } else {
- err = userRecordErr
- return
- }
- }
- //该openid在系统中没有关联关系
- if userRecord == nil {
- err = ERR_NO_USER_RECORD
- return
- }
- //该openid没有绑定用户
- if userRecord.UserId <= 0 {
- err = ERR_USER_NOT_BIND
- item = new(models.WxUserItem)
- //格式化返回用户数据
- formatWxUserAndUserRecord(item, userRecord)
- return
- }
- //获取用户信息
- item, wxUserErr := models.GetWxUserItemByUserId(userRecord.UserId)
- fmt.Println("wxUserErr", wxUserErr)
- if wxUserErr != nil {
- err = wxUserErr
- //如果是找不到数据,那么可能是该用户被删除了,但是user_record没有删除对应的关系
- if wxUserErr.Error() == utils.ErrNoRow() {
- //用户被删除了,但是user_record没有删除对应的关系,那么去解除绑定
- userUnbindErr := models.UnBindUserRecordByOpenid(openid)
- if userUnbindErr != nil {
- err = userUnbindErr
- return
- }
- //返回状态为 用户未绑定 逻辑代码
- err = ERR_USER_NOT_BIND
- item = new(models.WxUserItem)
- //格式化返回用户数据
- formatWxUserAndUserRecord(item, userRecord)
- return
- }
- return
- }
- if item.RealName == "" {
- item.RealName = userRecord.RealName
- }
- //格式化返回用户数据
- formatWxUserAndUserRecord(item, userRecord)
- return
- }
- //通过用户 关系表记录 和 用户记录 格式化返回 用户数据
- func formatWxUserAndUserRecord(wxUser *models.WxUserItem, userRecord *models.UserRecord) {
- wxUser.OpenId = userRecord.OpenId
- wxUser.UnionId = userRecord.UnionId
- wxUser.NickName = userRecord.NickName
- //wxUser.RealName = userRecord.RealName
- //wxUser.BindAccount = userRecord.BindAccount
- wxUser.Headimgurl = userRecord.Headimgurl
- wxUser.SessionKey = userRecord.SessionKey
- }
|