Files
backend/internal/pkg/utils/avatar.go

53 lines
1.5 KiB
Go
Raw Normal View History

package utils
import (
"net/url"
)
// AvatarServiceBaseURL 默认头像服务基础URL (使用 UI Avatars API)
const AvatarServiceBaseURL = "https://ui-avatars.com/api"
// DefaultAvatarSize 默认头像尺寸
const DefaultAvatarSize = 100
// AvatarInfo 头像信息
type AvatarInfo struct {
Username string
Nickname string
Avatar string
}
// GetAvatarOrDefault 获取头像URL如果为空则返回在线头像生成服务的URL
// 优先使用已有的头像,否则使用昵称或用户名生成默认头像
func GetAvatarOrDefault(username, nickname, avatar string) string {
if avatar != "" {
return avatar
}
// 使用用户名生成默认头像URL优先使用昵称
displayName := nickname
if displayName == "" {
displayName = username
}
return GenerateDefaultAvatarURL(displayName)
}
// GetAvatarOrDefaultFromInfo 从 AvatarInfo 获取头像URL
func GetAvatarOrDefaultFromInfo(info AvatarInfo) string {
return GetAvatarOrDefault(info.Username, info.Nickname, info.Avatar)
}
// GenerateDefaultAvatarURL 生成默认头像URL
// 使用 UI Avatars API 生成基于用户名首字母的头像
func GenerateDefaultAvatarURL(name string) string {
if name == "" {
name = "?"
}
// 使用 UI Avatars API 生成头像
params := url.Values{}
params.Set("name", url.QueryEscape(name))
params.Set("size", "100")
params.Set("background", "0D8ABC") // 默认蓝色背景
params.Set("color", "ffffff") // 白色文字
return AvatarServiceBaseURL + "?" + params.Encode()
}