Files
backend/internal/pkg/utils/avatar.go
lan 4d8f2ec997 Initial backend repository commit.
Set up project files and add .gitignore to exclude local build/runtime artifacts.

Made-with: Cursor
2026-03-09 21:28:58 +08:00

53 lines
1.5 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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()
}