59 lines
2.4 KiB
Go
59 lines
2.4 KiB
Go
package types
|
||
|
||
//user定义用户结构体。
|
||
type User struct {
|
||
ID int `json:"id"` //用户id,唯一,自增
|
||
Token string `json:"token"` //用户token,唯一
|
||
Username string `json:"username"` //用户名,唯一
|
||
Password string `json:"password"` //用户密码md5值,md5(原密码)
|
||
Email string `json:"email"` //邮箱,唯一
|
||
Affiliation string `json:"affiliation"` //组织、战队或机构等,非必需,默认为0
|
||
Country string `json:"country"` //国家,非必需,默认为0
|
||
Website string `json:"website"` //个人链接,默认为0
|
||
Hidden int `json:"hidden"` //1:隐藏,0:显示,默认为0
|
||
Banned int `json:"banned"` //1:禁止,0:正常,默认为1,邮箱激活后为0
|
||
TeamID int `json:"team_id"` //队伍id,在团队模式下必须,个人模式非必需,默认为0
|
||
Created int `json:"created"` //用户注册时间,10位数时间戳
|
||
Role int `json:"role"` //0:普通用户,默认为0,1:普通管理员,2:所有者(最高权限)
|
||
}
|
||
|
||
// Notice 定义一个公告
|
||
type Notice struct {
|
||
ID int `json:"id"`
|
||
Title string `json:"title"`
|
||
Content string `json:"content"`
|
||
CreatedAt int `json:"created_at"`
|
||
}
|
||
|
||
// Challenge 定义一个题目
|
||
type Challenge struct {
|
||
ID int `json:"id"`
|
||
Name string `json:"name"`
|
||
Score int `json:"score"`
|
||
Flag string `json:"flag"`
|
||
Description string `json:"description"`
|
||
Attachment []string `json:"attachment"`
|
||
Category string `json:"category"`
|
||
Tags string `json:"tags"`
|
||
Hints []string `json:"hints"`
|
||
Visible int `json:"visible"` // 0表示隐藏,1表示可见
|
||
}
|
||
|
||
// Submission 表示一次flag提交记录
|
||
type Submission struct {
|
||
ID int `json:"id"`
|
||
UserID int `json:"uid" gorm:"column:uid"`
|
||
ChallengeID int `json:"cid" gorm:"column:cid"`
|
||
Flag string `json:"flag"`
|
||
IP string `json:"ip"`
|
||
Time int `json:"submitted_at" gorm:"column:submitted_at"`
|
||
}
|
||
|
||
// Solve 表示一次正确的flag提交记录
|
||
type Solve struct {
|
||
ID int `json:"id" `
|
||
UserID int `json:"uid" gorm:"column:uid"`
|
||
ChallengeID int `json:"cid" gorm:"column:cid"`
|
||
Time int `json:"solved_at" gorm:"column:submitted_at"`
|
||
}
|