chore(utils): replace UI Avatars API with static default avatar
All checks were successful
Build Backend / build (push) Successful in 2m55s
Build Backend / build-docker (push) Successful in 1m18s

Remove external UI Avatars API dependency and use a static default avatar
URL instead. Simplifies avatar utility functions by eliminating dynamic
avatar generation.
This commit is contained in:
lafay
2026-04-24 16:43:12 +08:00
parent 496c8bb1aa
commit 3e90eefd51
2 changed files with 4 additions and 36 deletions

View File

@@ -1,52 +1,20 @@
package utils package utils
import ( const DefaultAvatarURL = "https://storage.littlelan.cn/withyou/avatars/74d567f5b8ab536483355a09a9767c77934bd0f1fd6de880b3a1c86f54e366e9.png"
"net/url"
)
// AvatarServiceBaseURL 默认头像服务基础URL (使用 UI Avatars API)
const AvatarServiceBaseURL = "https://ui-avatars.com/api"
// DefaultAvatarSize 默认头像尺寸
const DefaultAvatarSize = 100
// AvatarInfo 头像信息
type AvatarInfo struct { type AvatarInfo struct {
Username string Username string
Nickname string Nickname string
Avatar string Avatar string
} }
// GetAvatarOrDefault 获取头像URL如果为空则返回在线头像生成服务的URL
// 优先使用已有的头像,否则使用昵称或用户名生成默认头像
func GetAvatarOrDefault(username, nickname, avatar string) string { func GetAvatarOrDefault(username, nickname, avatar string) string {
if avatar != "" { if avatar != "" {
return avatar return avatar
} }
// 使用用户名生成默认头像URL优先使用昵称 return DefaultAvatarURL
displayName := nickname
if displayName == "" {
displayName = username
}
return GenerateDefaultAvatarURL(displayName)
} }
// GetAvatarOrDefaultFromInfo 从 AvatarInfo 获取头像URL
func GetAvatarOrDefaultFromInfo(info AvatarInfo) string { func GetAvatarOrDefaultFromInfo(info AvatarInfo) string {
return GetAvatarOrDefault(info.Username, info.Nickname, info.Avatar) 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()
}

View File

@@ -461,13 +461,13 @@ func (s *systemMessageServiceImpl) getActorInfo(ctx context.Context, operatorID
if s.userRepo != nil { if s.userRepo != nil {
user, err := s.userRepo.GetByID(operatorID) user, err := s.userRepo.GetByID(operatorID)
if err != nil { if err != nil {
return "用户", utils.GenerateDefaultAvatarURL("用户"), nil // 返回默认值,不阻断流程 return "用户", utils.DefaultAvatarURL, nil
} }
avatar := utils.GetAvatarOrDefault(user.Username, user.Nickname, user.Avatar) avatar := utils.GetAvatarOrDefault(user.Username, user.Nickname, user.Avatar)
return user.Nickname, avatar, nil return user.Nickname, avatar, nil
} }
// 如果没有用户仓储,返回默认值 // 如果没有用户仓储,返回默认值
return "用户", utils.GenerateDefaultAvatarURL("用户"), nil return "用户", utils.DefaultAvatarURL, nil
} }
// getPostTitle 获取帖子标题 // getPostTitle 获取帖子标题