fix: 统一戒烟小程序默认头像为指定OSS地址
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"wx_service/internal/model"
|
"wx_service/internal/model"
|
||||||
@@ -17,6 +18,8 @@ var (
|
|||||||
ErrMiniProgramNotFound = errors.New("mini program not found")
|
ErrMiniProgramNotFound = errors.New("mini program not found")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const defaultAvatarURL = "https://linghu-wmr.oss-cn-beijing.aliyuncs.com/smt/avatar.png"
|
||||||
|
|
||||||
type AuthService struct {
|
type AuthService struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
miniProgramSvc *MiniProgramService
|
miniProgramSvc *MiniProgramService
|
||||||
@@ -72,6 +75,8 @@ func (s *AuthService) LoginWithCode(ctx context.Context, req LoginRequest) (*Log
|
|||||||
return nil, fmt.Errorf("wechat response missing openid")
|
return nil, fmt.Errorf("wechat response missing openid")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
avatarURL := normalizeAvatarURL(req.AvatarURL)
|
||||||
|
|
||||||
tx := s.db.WithContext(ctx)
|
tx := s.db.WithContext(ctx)
|
||||||
var user model.User
|
var user model.User
|
||||||
err = tx.Where("mini_program_id = ? AND open_id = ?", miniProgram.ID, session.OpenID).First(&user).Error
|
err = tx.Where("mini_program_id = ? AND open_id = ?", miniProgram.ID, session.OpenID).First(&user).Error
|
||||||
@@ -81,7 +86,7 @@ func (s *AuthService) LoginWithCode(ctx context.Context, req LoginRequest) (*Log
|
|||||||
OpenID: session.OpenID,
|
OpenID: session.OpenID,
|
||||||
UnionID: session.UnionID,
|
UnionID: session.UnionID,
|
||||||
NickName: req.NickName,
|
NickName: req.NickName,
|
||||||
AvatarURL: req.AvatarURL,
|
AvatarURL: avatarURL,
|
||||||
Phone: req.Phone,
|
Phone: req.Phone,
|
||||||
SessionKey: session.SessionKey,
|
SessionKey: session.SessionKey,
|
||||||
}
|
}
|
||||||
@@ -105,9 +110,13 @@ func (s *AuthService) LoginWithCode(ctx context.Context, req LoginRequest) (*Log
|
|||||||
updates["nick_name"] = req.NickName
|
updates["nick_name"] = req.NickName
|
||||||
user.NickName = req.NickName
|
user.NickName = req.NickName
|
||||||
}
|
}
|
||||||
if req.AvatarURL != "" && req.AvatarURL != user.AvatarURL {
|
if req.AvatarURL != "" && avatarURL != user.AvatarURL {
|
||||||
updates["avatar_url"] = req.AvatarURL
|
updates["avatar_url"] = avatarURL
|
||||||
user.AvatarURL = req.AvatarURL
|
user.AvatarURL = avatarURL
|
||||||
|
}
|
||||||
|
if strings.TrimSpace(user.AvatarURL) == "" {
|
||||||
|
updates["avatar_url"] = defaultAvatarURL
|
||||||
|
user.AvatarURL = defaultAvatarURL
|
||||||
}
|
}
|
||||||
if req.Phone != "" && req.Phone != user.Phone {
|
if req.Phone != "" && req.Phone != user.Phone {
|
||||||
updates["phone"] = req.Phone
|
updates["phone"] = req.Phone
|
||||||
@@ -147,3 +156,11 @@ func (s *AuthService) getWeChatClient(mp *model.MiniProgram) *WeChatClient {
|
|||||||
s.cacheMu.Unlock()
|
s.cacheMu.Unlock()
|
||||||
return newClient
|
return newClient
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func normalizeAvatarURL(raw string) string {
|
||||||
|
text := strings.TrimSpace(raw)
|
||||||
|
if text == "" {
|
||||||
|
return defaultAvatarURL
|
||||||
|
}
|
||||||
|
return text
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user