72 lines
2.0 KiB
Go
72 lines
2.0 KiB
Go
package routers
|
||
|
||
import (
|
||
"github.com/gin-gonic/gin"
|
||
"main.go/api"
|
||
"main.go/api/admin"
|
||
)
|
||
|
||
|
||
func Initrouter(){
|
||
router := gin.Default()
|
||
api_v1 := router.Group("/api/v1")
|
||
|
||
//公共接口(无需登录)
|
||
public := api_v1.Group("")
|
||
{
|
||
//用户登录
|
||
public.POST("/login",api.Login)
|
||
//用户注册
|
||
public.POST("/register",api.Register)
|
||
//用户登出
|
||
public.GET("/logout",api.Logout)
|
||
//获取指定id用户可公开信息
|
||
public.GET("/user/:id",api.GetInfoByUserId)
|
||
//获取指定id用户分数
|
||
public.GET("/score/:id",api.GetScoreByUserId)
|
||
//获取所有用户分数,降序排列
|
||
public.GET("/score",api.GetAllScore)
|
||
//获取全部公告
|
||
public.GET("/notice",api.GetAllNotices)
|
||
|
||
}
|
||
// 普通用户api,需要用户登陆且Role=0才能访问
|
||
personal := api_v1.Group("/user")
|
||
personal.Use(api.AuthRequired())
|
||
{
|
||
// 获取当前用户信息
|
||
personal.GET("/session", api.Session)
|
||
// 获取题目分类
|
||
personal.GET("/category", api.GetCategories)
|
||
// 获取所有题目信息
|
||
personal.GET("/challenges/all", api.GetAllChallenges)
|
||
// 获取指定分类题目信息
|
||
personal.GET("/challenges/:category", api.GetChallengesByCategory)
|
||
|
||
// 提交flag
|
||
personal.POST("/submitflag", api.SubmitFlag)
|
||
// 获取所有正确的flag提交记录
|
||
personal.GET("/solves/all", api.GetAllSolves)
|
||
// 获取指定用户正确的flag提交记录
|
||
personal.GET("/solves/uid/:uid", api.GetSolvesByUid)
|
||
// 获取指定题目正确的flag提交记录
|
||
personal.GET("/solves/cid/:cid", api.GetSolvesByCid)
|
||
// 获取当前用户正确flag提交记录(即解题记录)按时间从早到晚排序
|
||
personal.GET("/solves/self", api.GetSelfSolves)
|
||
// 获取当前用户分数、排名
|
||
personal.GET("/score/self", api.GetSelfScoreAndRank)
|
||
// 校内排行api,暂时留空
|
||
}
|
||
// 管理员api,需要用户登陆且Role=1才能访问
|
||
manager := api_v1.Group("/admin")
|
||
manager.Use(admin.AuthRequired())
|
||
{
|
||
// 创建新题目
|
||
manager.POST("/challenge", admin.NewChallenge)
|
||
}
|
||
|
||
|
||
|
||
|
||
router.Run(":9000")
|
||
} |