Set up project files and add .gitignore to exclude local build/runtime artifacts. Made-with: Cursor
53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
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()
|
||
}
|