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