Files

56 lines
1.2 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 models
import "strings"
func qqNumericLocalPart(email string) string {
e := strings.TrimSpace(strings.ToLower(email))
if e == "" {
return ""
}
at := strings.LastIndex(e, "@")
if at <= 0 || at >= len(e)-1 {
return ""
}
local, domain := e[:at], e[at+1:]
if domain != "qq.com" {
return ""
}
if local == "" {
return ""
}
for _, r := range local {
if r < '0' || r > '9' {
return ""
}
}
return local
}
func firstQQUINFromRecord(u UserRecord) string {
if q := qqNumericLocalPart(u.Email); q != "" {
return q
}
for _, em := range u.SecondaryEmails {
if q := qqNumericLocalPart(em); q != "" {
return q
}
}
return ""
}
func qqAvatarHeadimgURL(uin string) string {
return "https://q.qlogo.cn/headimg_dl?dst_uin=" + uin + "&spec=640&img_type=jpg"
}
// ResolvedAvatarURL 返回用户自选头像;若未设置但主邮箱或辅助邮箱为「纯数字 @qq.com」
// 则返回 QQ 头像 CDN 地址(与手动填写该链接等价,不入库)。
func (u UserRecord) ResolvedAvatarURL() string {
if s := strings.TrimSpace(u.AvatarURL); s != "" {
return s
}
if uin := firstQQUINFromRecord(u); uin != "" {
return qqAvatarHeadimgURL(uin)
}
return ""
}