This commit is contained in:
parent
16fb22479f
commit
e26a9e7735
|
|
@ -111,18 +111,19 @@ func (w *MiniUserApi) GetUserInfo(c *gin.Context) {
|
||||||
|
|
||||||
// 构造响应数据
|
// 构造响应数据
|
||||||
resp := wechatResponse.MiniUserInfoResponse{
|
resp := wechatResponse.MiniUserInfoResponse{
|
||||||
ID: user.ID,
|
ID: user.ID,
|
||||||
OpenID: user.OpenID,
|
OpenID: user.OpenID,
|
||||||
UnionID: user.UnionID,
|
UnionID: user.UnionID,
|
||||||
NickName: user.Nickname,
|
NickName: user.Nickname,
|
||||||
Avatar: user.AvatarURL,
|
Avatar: user.AvatarURL,
|
||||||
Phone: user.Phone,
|
Phone: user.Phone,
|
||||||
Gender: user.Gender,
|
Gender: user.Gender,
|
||||||
City: user.City,
|
City: user.City,
|
||||||
Province: user.Province,
|
Province: user.Province,
|
||||||
Country: user.Country,
|
Country: user.Country,
|
||||||
CreateTime: user.CreatedAt.Format("2006-01-02 15:04:05"),
|
CreateTime: user.CreatedAt.Format("2006-01-02 15:04:05"),
|
||||||
UpdateTime: user.UpdatedAt.Format("2006-01-02 15:04:05"),
|
UpdateTime: user.UpdatedAt.Format("2006-01-02 15:04:05"),
|
||||||
|
NeedPhoneAuth: user.Phone == nil || *user.Phone == "", // 如果没有手机号则需要授权
|
||||||
}
|
}
|
||||||
|
|
||||||
c.JSON(200, wechatResponse.SuccessResponseWithMsg(resp, "获取成功"))
|
c.JSON(200, wechatResponse.SuccessResponseWithMsg(resp, "获取成功"))
|
||||||
|
|
|
||||||
|
|
@ -135,18 +135,19 @@ type MiniLoginResponse struct {
|
||||||
|
|
||||||
// MiniUserInfoResponse 小程序用户信息响应
|
// MiniUserInfoResponse 小程序用户信息响应
|
||||||
type MiniUserInfoResponse struct {
|
type MiniUserInfoResponse struct {
|
||||||
ID uint `json:"id"` // 用户ID
|
ID uint `json:"id"` // 用户ID
|
||||||
OpenID string `json:"openid"` // 用户openid
|
OpenID string `json:"openid"` // 用户openid
|
||||||
UnionID *string `json:"unionid"` // 用户unionid
|
UnionID *string `json:"unionid"` // 用户unionid
|
||||||
NickName *string `json:"nickName"` // 用户昵称
|
NickName *string `json:"nickName"` // 用户昵称
|
||||||
Avatar *string `json:"avatar"` // 用户头像
|
Avatar *string `json:"avatar"` // 用户头像
|
||||||
Phone *string `json:"phone"` // 用户手机号
|
Phone *string `json:"phone"` // 用户手机号
|
||||||
Gender *int `json:"gender"` // 性别:0-未知,1-男,2-女
|
Gender *int `json:"gender"` // 性别:0-未知,1-男,2-女
|
||||||
City *string `json:"city"` // 城市
|
City *string `json:"city"` // 城市
|
||||||
Province *string `json:"province"` // 省份
|
Province *string `json:"province"` // 省份
|
||||||
Country *string `json:"country"` // 国家
|
Country *string `json:"country"` // 国家
|
||||||
CreateTime string `json:"createTime"` // 创建时间
|
CreateTime string `json:"createTime"` // 创建时间
|
||||||
UpdateTime string `json:"updateTime"` // 更新时间
|
UpdateTime string `json:"updateTime"` // 更新时间
|
||||||
|
NeedPhoneAuth bool `json:"needPhoneAuth"` // 是否需要授权手机号
|
||||||
}
|
}
|
||||||
|
|
||||||
// PhoneUpdateResponse 手机号更新响应
|
// PhoneUpdateResponse 手机号更新响应
|
||||||
|
|
|
||||||
|
|
@ -56,9 +56,13 @@ func (w *MiniService) Code2Session(code string) (*model.MiniUser, error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
// 创建新用户
|
// 创建新用户
|
||||||
|
// 生成默认昵称:萌宠爱 + OpenID的前6位
|
||||||
|
defaultNickname := "萌宠爱" + session.OpenID[:6]
|
||||||
|
|
||||||
user = model.MiniUser{
|
user = model.MiniUser{
|
||||||
OpenID: session.OpenID,
|
OpenID: session.OpenID,
|
||||||
SessionKey: &session.SessionKey,
|
SessionKey: &session.SessionKey,
|
||||||
|
Nickname: &defaultNickname,
|
||||||
}
|
}
|
||||||
if session.UnionID != "" {
|
if session.UnionID != "" {
|
||||||
user.UnionID = &session.UnionID
|
user.UnionID = &session.UnionID
|
||||||
|
|
|
||||||
|
|
@ -68,13 +68,24 @@ func SetUserToken(c *gin.Context, token string, maxAge int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetUserToken(c *gin.Context) string {
|
func GetUserToken(c *gin.Context) string {
|
||||||
|
// 首先尝试从 user-token 头部获取
|
||||||
token := c.Request.Header.Get("user-token")
|
token := c.Request.Header.Get("user-token")
|
||||||
|
|
||||||
|
// 如果没有,尝试从 Authorization Bearer 头部获取
|
||||||
|
if token == "" {
|
||||||
|
authHeader := c.Request.Header.Get("Authorization")
|
||||||
|
if authHeader != "" && len(authHeader) > 7 && authHeader[:7] == "Bearer " {
|
||||||
|
token = authHeader[7:] // 去掉 "Bearer " 前缀
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 如果还是没有,尝试从 cookie 获取
|
||||||
if token == "" {
|
if token == "" {
|
||||||
j := NewJWT()
|
j := NewJWT()
|
||||||
token, _ = c.Cookie("user-token")
|
token, _ = c.Cookie("user-token")
|
||||||
claims, err := j.ParseToken(token)
|
claims, err := j.ParseToken(token)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
global.GVA_LOG.Error("重新写入cookie token失败,未能成功解析token,请检查请求头是否存在user-token且claims是否为规定结构")
|
global.GVA_LOG.Error("重新写入cookie token失败,未能成功解析token,请检查请求头是否存在user-token或Authorization Bearer且claims是否为规定结构")
|
||||||
return token
|
return token
|
||||||
}
|
}
|
||||||
SetUserToken(c, token, int((claims.ExpiresAt.Unix()-time.Now().Unix())/60))
|
SetUserToken(c, token, int((claims.ExpiresAt.Unix()-time.Now().Unix())/60))
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue