Skip to content

API 接口 | API Interface

Heran Yang edited this page Mar 7, 2024 · 15 revisions

/

方法

GET

作用

没有实际作用,可以用作 Ping。

请求数据结构

请求中不需附加任何数据。

响应数据结构

返回一个常量字符串 xcpc-team-reg

权限

任意用户。

/getIDSchool

方法

GET

作用

获得以 ID 为 key 的学院列表。

请求数据结构

请求中不需附加任何数据。

响应数据结构

返回一个 JSON 对象,格式为:

{
	"<id_1>": "<school_name_1>",
	"<id_2>": "<school_name_2>"
}

其中 <id> 为学院 ID,<school_name> 为学院名称,ID 与名称一一对应,并且在服务中 ID 是学院的唯一标识。

权限

任意用户。

/getContestInfo

方法

GET

作用

获得在报名的比赛详细信息。

请求数据结构

请求中不需附加任何数据。

响应数据结构

type ContestInfo struct {
	Name       string   `json:"name"`
	StartTime  string   `json:"start_time"`
	EndTime    string   `json:"end_time"`
	Note       string   `json:"note"`
	TshirtSize []string `json:"tshirt_size"`
}

其中:

  • name:比赛名称
  • start_time:报名开始时间
  • end_time:报名结束时间
  • note:注意事项
  • tshirt_size:T 恤衫尺码

权限

任意用户。

/sendEmail

方法

POST

作用

验证用户邮箱。

请求数据结构

type EmailVerificationReq struct {
	StuID *string `json:"stuid,omitempty"`
	Email *string `json:"email,omitempty"`
	Type  string  `json:"type"`
}

其中:

  • stuid:要验证的学号
  • email:要验证的邮箱
  • type:当前操作类型,和 action 对齐。注册时为 register,找回密码时为 reset

响应数据结构

返回一个常量字符串 ok

权限

任意用户。

/register

方法

POST

作用

用户注册。

请求数据结构

type UserRegisterReq struct {
	Name       string  `json:"name"`
	School     int     `json:"school"`
	Email      *string `json:"email,omitempty"`
	StuID      *string `json:"stuid,omitempty"`
	Tshirt     string  `json:"tshirt"`
	EmailToken string  `json:"email_token"`
	PwdToken   string  `json:"pwd_token"`
	Action     string  `json:"action"`
}

其中:

  • name:用户真实姓名
  • school:用户学院 ID
  • email:用户邮箱
  • stuid:用户学号
  • tshirt:用户 T 恤衫大小
  • email_token:邮箱验证码,用户需要先请求一个邮箱验证码
  • pwd_token:用户密码
  • action:当前在进行的操作,应为一常量字符串 register

响应数据结构

返回一个常量字符串 ok

权限

任意用户。

/login

方法

POST

作用

用户登录。

请求数据结构

type UserLoginReq struct {
	StuID    *string `json:"stuid,omitempty"`
	Email    *string `json:"email,omitempty"`
	PwdToken string  `json:"pwd_token"`
}

其中:

  • stuid:用户学号
  • email:用户邮箱
  • pwd_token:用户密码

响应数据结构

返回一个常量字符串 ok。同时后端会在此 Session 中保留 Session cookie,前端并无感知。

权限

任意未登录的用户。

/forgot

方法

POST

作用

用户重置密码。

请求数据结构

type UserResetPwdReq struct {
	StuID      *string `json:"stuid,omitempty"`
	Email      *string `json:"email,omitempty"`
	EmailToken string  `json:"email_token"`
	PwdToken   string  `json:"pwd_token"`
	Action     string  `json:"action"`
}

其中:

  • stuid:用户学号
  • email:用户邮箱
  • email_token:邮箱验证码,用户需要先请求一个邮箱验证码
  • pwd_token:用户密码
  • action:当前在进行的操作,应为一常量字符串 reset

响应数据结构

返回一个常量字符串 ok

权限

任意未登录的用户。

/logout

方法

POST

作用

用户登出。

请求数据结构

请求中不需附加任何数据。

响应数据结构

返回一个常量字符串 ok

权限

任意登录的用户。

/getUserInfo

方法

GET

作用

查看用户信息。

请求数据结构

请求中不需附加任何数据。

响应数据结构

type UserInfo struct {
	Name       string `json:"name"`
	School     int    `json:"school"`
	StuID      string `json:"stuid"`
	BelongTeam int64  `json:"teamid"`
	Tshirt     string `json:"tshirt"`
	IsUESTCStu int    `json:"is_uestc_stu"`
}

其中:

  • name:用户真实姓名
  • school:用户所属学院
  • stuid:用户学号
  • teamid:用户所属队伍编号,0 为未加入任何队伍
  • tshirt:用户 T 恤衫大小
  • is_uestc_stu:是否使用学号注册,1 表示是,0 表示不是

权限

任意登录的用户。

/getTeamInfo

方法

GET

作用

查看用户所属队伍信息。

请求数据结构

请求中不需附加任何数据。

响应数据结构

type TeamInfo struct {
	TeamID          int64      `json:"team_id"`
	TeamName        string     `json:"team_name"`
	TeamAccount     string     `json:"account"`
	TeamPassword    string     `json:"password"`
	InviteToken     string     `json:"invite_token"`
	TeamMember      []UserInfo `json:"member"`
	MemberCnt       int        `json:"mem_cnt"`
	TeamAffiliation string     `json:"affiliation"`
}

其中:

  • team_id:队伍 ID
  • team_name:队伍名称
  • account:队伍账号
  • password:队伍密码
  • invite_token:队伍邀请码
  • member:队伍中所有队员的信息
  • mem_cnt:队伍中队员总数
  • affiliation:队伍所属组织

权限

任意登录的用户。

/modifyUserInfo

方法

POST

作用

用户修改个人信息。

请求数据结构

type UserInfoModifyReq struct {
	Name   *string `gorm:"column:user_name" json:"name,omitempty"`
	School *int    `gorm:"column:school" json:"school,omitempty"`
	Tshirt *string `gorm:"column:tshirt" json:"tshirt,omitempty"`
}

其中:

  • name:用户真实姓名
  • school:用户学院
  • tshirt:用户 T 恤衫大小

响应数据结构

返回一个常量字符串 ok

权限

任意登录的用户。

/modifyTeamInfo

方法

POST

作用

用户修改所属队伍信息。

请求数据结构

type TeamInfoModifyReq struct {
	TeamName        *string `gorm:"column:team_name" json:"team_name,omitempty"`
	TeamAffiliation *string `gorm:"column:team_affiliation" json:"team_affiliation,omitempty"`
}

其中:

  • team_name:队伍名称
  • team_affiliation:队伍组织

响应数据结构

返回一个常量字符串 ok

权限

任意登录的用户。

/createTeam

方法

POST

作用

用户新建一个队伍,并称为新队伍中的一个成员。

请求数据结构

type TeamInfoModifyReq struct {
	TeamName        *string `gorm:"column:team_name" json:"team_name,omitempty"`
	TeamAffiliation *string `gorm:"column:team_affiliation" json:"team_affiliation,omitempty"`
}

其中:

  • team_name:队伍名称
  • team_affiliation:队伍组织

响应数据结构

返回如下类型的 JSON 数据:

type JoinTeamReq struct {
	TeamID      string `json:"team_id"`
	InviteToken string `json:"invite_token"`
}

其中:

  • team_id:新创建队伍的 ID
  • invite_token:新创建队伍的邀请码

权限

任意登录的用户。

/joinTeam

方法

POST

作用

用户加入某个队伍。

请求数据结构

type JoinTeamRequest struct {
	TeamID      int64  `json:"team_id"`
	InviteToken string `json:"invite_token"`
}

其中:

  • team_id:要加入的队伍 ID
  • invite_token:加入队伍的邀请码

响应数据结构

返回一个常量字符串 ok

权限

任意登录的用户。

/quitTeam

方法

POST

作用

用户退出自己所属的队伍。

请求数据结构

请求中不需附加任何数据。

响应数据结构

返回一个常量字符串 ok

权限

任意登录的用户。