// Package model 定义与数据库表一一对应的 GORM 模型 // 约定:created_at/updated_at/deleted_at 统一为 int 时间戳(秒), // 由 GORM 的 autoCreateTime/autoUpdateTime 与 soft_delete 插件自动维护 package model import "gorm.io/plugin/soft_delete" // 用户角色常量 const ( RoleAdmin = 1 // 超级管理员 RoleNormal = 2 // 普通用户 ) // 用户状态常量 const ( UserStatusNormal = 1 // 正常 UserStatusBanned = 2 // 禁用 ) // User 用户表:平台所有账号(超管与普通用户共用,靠 Role 区分) type User struct { ID int `gorm:"primaryKey" json:"id"` // 用户ID Username string `gorm:"size:32;uniqueIndex" json:"username"` // 登录用户名(唯一) Password string `gorm:"size:100" json:"-"` // bcrypt 密文(不下发给前端) Nickname string `gorm:"size:32" json:"nickname"` // 昵称 Avatar string `gorm:"size:16" json:"avatar"` // 头像(像素编码 px:01~px:32) Role int `gorm:"default:2" json:"role"` // 角色:1超管 2普通 Points int `gorm:"default:0" json:"points"` // 当前积分余额 TotalPoints int `gorm:"default:0" json:"total_points"` // 历史累计积分(排行榜依据) VipLevel int `gorm:"default:0" json:"vip_level"` // VIP等级(0=非VIP,1~5) VipExpire int64 `gorm:"default:0" json:"vip_expire"` // VIP到期时间戳(秒,0=未开通) Status int `gorm:"default:1" json:"status"` // 状态:1正常 2禁用 CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 创建时间(int 时间戳) UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at"` // 更新时间(int 时间戳) DeletedAt soft_delete.DeletedAt `gorm:"default:0" json:"-"` // 软删除时间(0=未删除) } // TableName 指定表名 func (User) TableName() string { return "users" } // LoginLog 登录记录表:每次登录成功写一条 type LoginLog struct { ID int `gorm:"primaryKey" json:"id"` // 记录ID UserID int `gorm:"index" json:"user_id"` // 登录用户ID IP string `gorm:"size:64" json:"ip"` // 登录IP UserAgent string `gorm:"size:255" json:"user_agent"` // 浏览器UA CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 登录时间(int 时间戳) } // TableName 指定表名 func (LoginLog) TableName() string { return "login_logs" }