fix: 统一戒烟小程序默认头像为指定OSS地址

This commit is contained in:
root
2026-03-10 22:50:06 +08:00
parent 0cdfebd1dc
commit a46b51cd58
+21 -4
View File
@@ -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
}