Initial backend repository commit.
Set up project files and add .gitignore to exclude local build/runtime artifacts. Made-with: Cursor
This commit is contained in:
52
internal/pkg/utils/avatar.go
Normal file
52
internal/pkg/utils/avatar.go
Normal file
@@ -0,0 +1,52 @@
|
||||
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()
|
||||
}
|
||||
Reference in New Issue
Block a user