feat: 更新SproutGate前后端代码

This commit is contained in:
2026-04-01 22:04:01 +08:00
parent 90590c7cb0
commit 650e1c7707
49 changed files with 3609 additions and 768 deletions

View File

@@ -30,6 +30,7 @@ type UserRecord struct {
Banned bool `json:"banned"`
BanReason string `json:"banReason,omitempty"`
BannedAt string `json:"bannedAt,omitempty"`
TokenEpoch int64 `json:"-"` // 递增使用户此前签发的 JWT 全局失效;不对外 JSON 序列化
AuthClients []AuthClientEntry `json:"authClients,omitempty"`
}
@@ -52,6 +53,7 @@ type UserPublic struct {
SecondaryEmails []string `json:"secondaryEmails,omitempty"`
Phone string `json:"phone,omitempty"`
AvatarURL string `json:"avatarUrl,omitempty"`
CustomAvatarURL string `json:"customAvatarUrl,omitempty"` // 用户自选头像链接;为空时 avatarUrl 可能为 QQ 邮箱推断头像
WebsiteURL string `json:"websiteUrl,omitempty"`
Bio string `json:"bio,omitempty"`
CreatedAt string `json:"createdAt"`
@@ -85,13 +87,14 @@ func (u UserRecord) Public() UserPublic {
LastVisitAt: lastVisitAt,
VisitDays: visitDays,
VisitStreak: visitStreak,
SecondaryEmails: u.SecondaryEmails,
Phone: u.Phone,
AvatarURL: u.AvatarURL,
WebsiteURL: u.WebsiteURL,
Bio: u.Bio,
CreatedAt: u.CreatedAt,
UpdatedAt: u.UpdatedAt,
SecondaryEmails: u.SecondaryEmails,
Phone: u.Phone,
AvatarURL: u.ResolvedAvatarURL(),
CustomAvatarURL: strings.TrimSpace(u.AvatarURL),
WebsiteURL: u.WebsiteURL,
Bio: u.Bio,
CreatedAt: u.CreatedAt,
UpdatedAt: u.UpdatedAt,
}
}
@@ -133,12 +136,25 @@ func (u UserRecord) Showcase() UserShowcase {
Username: u.Username,
Level: u.Level,
SproutCoins: u.SproutCoins,
AvatarURL: u.AvatarURL,
AvatarURL: u.ResolvedAvatarURL(),
WebsiteURL: u.WebsiteURL,
Bio: u.Bio,
}
}
// PublicUserListEntry 公开用户目录条目(含注册时间供排序与展示)。
type PublicUserListEntry struct {
UserShowcase
CreatedAt string `json:"createdAt"`
}
func (u UserRecord) PublicListEntry() PublicUserListEntry {
return PublicUserListEntry{
UserShowcase: u.Showcase(),
CreatedAt: u.CreatedAt,
}
}
func NowISO() string {
return time.Now().Format(time.RFC3339)
}