96 lines
2.9 KiB
Go
96 lines
2.9 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.PUT("/userinfo", api.UpdateUserInfo)
|
||
// 获取题目分类
|
||
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)
|
||
// 获取所有用户信息
|
||
personal.GET("/users", api.GetAllUserInfo)
|
||
// 校内排行api,暂时留空
|
||
}
|
||
// 管理员api,需要用户登陆且Role=1才能访问
|
||
manager := api_v1.Group("/admin")
|
||
manager.Use(admin.AuthRequired())
|
||
{
|
||
// 创建新题目
|
||
manager.POST("/challenge", admin.NewChallenge)
|
||
// 删除题目 测试通过,但是分数不会同步删除
|
||
manager.DELETE("/challenge/:id", admin.DelChallenge)
|
||
// 获取所有题目,包括不可见题目
|
||
manager.GET("/challenges", admin.GetAllChallenges)
|
||
// 更新题目信息
|
||
manager.PUT("/challenge/:id", admin.EditChallenge)
|
||
//创建新公告
|
||
manager.POST("/notice", api.AddNewNotices)
|
||
//删除公告
|
||
manager.DELETE("/notice/:id", api.DelNotice)
|
||
|
||
//显示数据库中所有用户信息
|
||
manager.GET("/users", admin.GetAllUserInfo)
|
||
//删除用户信息
|
||
manager.DELETE("/user/:id", admin.DelUser)
|
||
//修改用户信息
|
||
manager.PUT("/user/:id", admin.EditUser)
|
||
//新增用户
|
||
manager.POST("/user", admin.AddUser)
|
||
|
||
}
|
||
|
||
err := router.Run(":9000")
|
||
if err != nil {
|
||
return
|
||
}
|
||
}
|