package model import "time" type User struct { ID uint64 `gorm:"primaryKey" json:"id"` Phone string `gorm:"size:32;not null;uniqueIndex" json:"phone"` PasswordHash string `gorm:"size:255;not null;default:''" json:"-"` Nickname string `gorm:"size:64;not null;default:''" json:"nickname"` AvatarURL string `gorm:"size:512;not null;default:''" json:"avatar_url"` RealnameStatus string `gorm:"size:32;not null;default:'unverified'" json:"realname_status"` RiskStatus string `gorm:"size:32;not null;default:'normal'" json:"risk_status"` CreditScore int `gorm:"not null;default:100" json:"credit_score"` DepositFreeQuotaCent int64 `gorm:"not null;default:0" json:"-"` RenterGrowthPoints int64 `gorm:"not null;default:0;index:idx_users_renter_growth_level,priority:2" json:"renter_growth_points"` RenterGrowthLevel string `gorm:"size:32;not null;default:'normal';index:idx_users_renter_growth_level,priority:1" json:"renter_growth_level"` Status string `gorm:"size:32;not null;default:'active'" json:"status"` // 会话版本:递增后该用户已签发的全部令牌立即失效。 // 默认值对齐迁移 000052 的 users.token_version DEFAULT 0。 TokenVersion int64 `gorm:"not null;default:0" json:"-"` // 注册归因:注册时由前端携带的推广短码。 RegisterTrackCode string `gorm:"size:64;index:idx_users_register_track_code" json:"register_track_code,omitempty"` DistributionSiteID uint64 `gorm:"not null;default:0;index:idx_users_distribution_site_id" json:"distribution_site_id"` // 0=主站, >0=对应分销站点 InviteCode *string `gorm:"size:32;uniqueIndex:uk_users_invite_code" json:"invite_code,omitempty"` InvitedByID uint64 `gorm:"not null;default:0;index:idx_users_invited_by_id" json:"invited_by_id,omitempty"` InviteVerifiedAt *time.Time `json:"invite_verified_at,omitempty"` LastLoginAt *time.Time `json:"last_login_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } func (User) TableName() string { return "users" }