69 lines
1.7 KiB
Go
69 lines
1.7 KiB
Go
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
|
||
}
|