package handle import ( "Lee-WineList/common/constant" "Lee-WineList/model/entity" "Lee-WineList/repository" "Lee-WineList/utils" "errors" "git.echol.cn/loser/logger/log" "strconv" ) // 获取普通用户信息 func getUser(account string, loginType constant.LoginType, nikeName string, avatarUrl string) (userId string, err error) { // 根据登录类型获取用户信息 // 定义微信小程序信息 //var unionId, openId, sessionKey string var mobile string // 定义用户信息 var user entity.User switch loginType { case constant.LoginTypeWeChatMiniApp: mobile, err = utils.WeChatUtils().GetPhoneNumber(account) if err != nil { return } if mobile == "" { err = errors.New("获取手机号失败") return } user.Phone = mobile user.Nickname = nikeName user.Avatar = avatarUrl default: user.Phone = account user.Nickname = nikeName user.Avatar = avatarUrl } // 查询用户信息 if err = repository.User().GetOrCreate(&user); err != nil { log.Errorf("获取用户信息或创建用户失败,错误信息:%s", err.Error()) err = errors.New("登录失败,请联系管理员") return } // 校验用户状态 if user.Status == constant.UserStatusDisabled { err = errors.New("账户已被禁用") return } // 异步缓存小程序SessionKey //go func() { // if loginType == constant.LoginTypeWeChatMiniApp { // // 缓存SessionKey // if client.Redis.Set(context.Background(), constant.WeChatSessionKey+user.Id, sessionKey, 3*24*time.Hour).Err() != nil { // log.Errorf("缓存SessionKey失败,用户Id:%s", user.Id) // } // } //}() // 返回用户Id userId = strconv.Itoa(user.Id) return }