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() }