329 lines
7.4 KiB
Go
329 lines
7.4 KiB
Go
package router
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/gin-gonic/gin"
|
|
"knowledge/api/controller"
|
|
"knowledge/api/exception"
|
|
"knowledge/api/middlewares"
|
|
"knowledge/config"
|
|
"knowledge/consts"
|
|
"net/http"
|
|
)
|
|
|
|
// Init 初始化路由
|
|
func Init() *gin.Engine {
|
|
r := gin.New()
|
|
|
|
// 环境设置
|
|
if config.C.Env == "prod" {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
}
|
|
|
|
// 获取请求参数中间件-json格式下会导致接口获取不到请求数据
|
|
r.Use(middlewares.RequestParamsMiddleware())
|
|
|
|
// 日志中间件
|
|
r.Use(middlewares.Logrus())
|
|
|
|
// 异常
|
|
r.Use(gin.Recovery())
|
|
|
|
// 404处理
|
|
r.NoRoute(func(c *gin.Context) {
|
|
path := c.Request.URL.Path
|
|
method := c.Request.Method
|
|
c.JSON(http.StatusNotFound, gin.H{
|
|
"msg": fmt.Sprintf("%s %s not found", method, path),
|
|
"code": consts.ClientHttpNotFound,
|
|
"data": "",
|
|
})
|
|
})
|
|
|
|
// 异常处理
|
|
r.Use(exception.Recover())
|
|
|
|
// 跨域处理
|
|
r.Use(middlewares.Cors())
|
|
|
|
// 加载基础路由
|
|
api := controller.Api{}
|
|
|
|
// 公开路由-不验证权限
|
|
publicRouter(r, api)
|
|
|
|
// 验证jwt
|
|
r.Use(middlewares.Jwt())
|
|
|
|
// 验证权限
|
|
r.Use(middlewares.Auth())
|
|
|
|
// 私有路由-验证权限
|
|
privateRouter(r, api)
|
|
|
|
// 公共路由-验证权限
|
|
adminRouter(r, api)
|
|
|
|
// 基础数据-验证权限
|
|
basicRouter(r, api)
|
|
|
|
return r
|
|
}
|
|
|
|
// publicRouter 公开路由-不验证权限
|
|
func publicRouter(r *gin.Engine, api controller.Api) {
|
|
migrateGroup := r.Group("/migrate")
|
|
{
|
|
migrateGroup.GET("", api.Migrate.Migrate)
|
|
}
|
|
|
|
// 获取分享数据
|
|
shareGroup := r.Group("/share")
|
|
{
|
|
// 获取背景图
|
|
shareGroup.GET("/background", api.Share.GetBackgroundImage)
|
|
|
|
// 授权
|
|
shareGroup.POST("/auth", api.Share.ShareAuth)
|
|
}
|
|
|
|
// 后台
|
|
adminGroup := r.Group("/admin")
|
|
{
|
|
// 验证码
|
|
adminGroup.GET("/captcha", api.Public.GetCaptcha)
|
|
|
|
// 登陆
|
|
adminGroup.POST("/login", api.AdminUser.Login)
|
|
|
|
// 配置
|
|
systemGroup := adminGroup.Group("/system")
|
|
{
|
|
// 编辑器配置
|
|
editorGroup := systemGroup.Group("/editor")
|
|
{
|
|
// 编辑器-获取配置
|
|
editorGroup.GET("", api.Editor.GetEditorConfig)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// adminRouter 公共路由-验证权限
|
|
func adminRouter(r *gin.Engine, api controller.Api) {
|
|
adminGroup := r.Group("/admin")
|
|
{
|
|
// 签名
|
|
signGroup := adminGroup.Group("/sign")
|
|
{
|
|
// 获取oss签名
|
|
signGroup.GET("/oss", api.Public.GetOssSign)
|
|
}
|
|
}
|
|
}
|
|
|
|
// basicRouter 基础数据-验证权限
|
|
func basicRouter(r *gin.Engine, api controller.Api) {
|
|
|
|
}
|
|
|
|
// privateRouter 私有路由-验证权限
|
|
func privateRouter(r *gin.Engine, api controller.Api) {
|
|
adminGroup := r.Group("/admin")
|
|
{
|
|
// 题目
|
|
questionGroup := adminGroup.Group("/question")
|
|
{
|
|
// 获取题目列表-分页
|
|
questionGroup.POST("/page", api.Question.GetQuestionPage)
|
|
|
|
// 获取题目详情
|
|
questionGroup.GET("/:question_id", api.Question.GetQuestion)
|
|
|
|
// 新增题目
|
|
questionGroup.POST("", api.Question.AddQuestion)
|
|
|
|
// 修改题目
|
|
questionGroup.PUT("/:question_id", api.Question.PutQuestion)
|
|
|
|
// 修改题目状态
|
|
questionGroup.PUT("/status/:question_id", api.Question.PutQuestionStatus)
|
|
|
|
// 删除题目
|
|
questionGroup.DELETE("", api.Question.DeleteQuestion)
|
|
|
|
// 获取题目数量
|
|
questionGroup.GET("/count", api.Question.GetQuestionCount)
|
|
}
|
|
|
|
// 问答
|
|
qaGroup := adminGroup.Group("/qa")
|
|
{
|
|
// 获取问答题库列表-分页
|
|
qaGroup.POST("/page", api.QuestionQa.GetQuestionQaPage)
|
|
|
|
// 新增问答题库
|
|
qaGroup.POST("", api.QuestionQa.AddQuestionQa)
|
|
|
|
// 修改问答题库
|
|
qaGroup.PUT("/:qa_id", api.QuestionQa.PutQuestionQa)
|
|
|
|
// 修改问答题库密码
|
|
qaGroup.PUT("/password/:qa_id", api.QuestionQa.PutQuestionQaPassword)
|
|
|
|
// 修改问答题库有效期
|
|
qaGroup.PUT("/expire/:qa_id", api.QuestionQa.PutQuestionQaExpire)
|
|
|
|
// 修改问答题库规则解释
|
|
qaGroup.PUT("/rule/:qa_id", api.QuestionQa.PutQuestionQaRule)
|
|
|
|
// 获取问答题库详情
|
|
qaGroup.GET("/:qa_id", api.QuestionQa.GetQuestionQa)
|
|
|
|
// 题库明细
|
|
itemGroup := qaGroup.Group("/item")
|
|
{
|
|
// 获取问答题库明细列表-分页
|
|
itemGroup.POST("/page", api.QuestionQaItem.GetQuestionQaItemPage)
|
|
|
|
// 删除问答题库明细
|
|
itemGroup.DELETE("", api.QuestionQaItem.DeleteQuestionQaItem)
|
|
|
|
// 修改必选
|
|
itemGroup.PUT("/must/:item_id", api.QuestionQaItem.PutQuestionQaItemMust)
|
|
}
|
|
}
|
|
|
|
// 基础数据
|
|
baseGroup := adminGroup.Group("/base")
|
|
{
|
|
// 标签
|
|
labelGroup := baseGroup.Group("/label")
|
|
{
|
|
// 获取标签列表
|
|
labelGroup.GET("/list", api.Label.GetLabelList)
|
|
|
|
// 新增标签
|
|
labelGroup.POST("", api.Label.AddLabel)
|
|
|
|
// 修改标签
|
|
labelGroup.PUT("/:label_id", api.Label.PutLabel)
|
|
}
|
|
|
|
// 飞花令
|
|
tokenGroup := baseGroup.Group("/token")
|
|
{
|
|
// 获取列表-分页
|
|
tokenGroup.GET("/page", api.BaseToken.GetTokenPage)
|
|
|
|
// 获取列表
|
|
tokenGroup.GET("/list", api.BaseToken.GetTokenList)
|
|
|
|
// 新增
|
|
tokenGroup.POST("", api.BaseToken.AddBaseToken)
|
|
|
|
// 修改
|
|
tokenGroup.PUT("/:token_id", api.BaseToken.PutBaseToken)
|
|
|
|
// 飞花令明细
|
|
itemGroup := tokenGroup.Group("/item")
|
|
{
|
|
// 获取列表-分页
|
|
itemGroup.GET("/page", api.BaseTokenItem.GetBaseTokenItemPage)
|
|
|
|
// 获取列表
|
|
itemGroup.GET("/list", api.BaseTokenItem.GetBaseTokenItemList)
|
|
|
|
// 新增
|
|
itemGroup.POST("", api.BaseTokenItem.AddBaseTokenItem)
|
|
|
|
// 修改
|
|
itemGroup.PUT("/:item_id", api.BaseTokenItem.PutBaseTokenItem)
|
|
|
|
// 删除
|
|
itemGroup.DELETE("/:item_id", api.BaseTokenItem.DeleteBaseTokenItem)
|
|
}
|
|
}
|
|
|
|
// 错别字字典
|
|
errorGroup := baseGroup.Group("/error")
|
|
{
|
|
// 获取列表-分页
|
|
errorGroup.GET("/page", api.BaseErrorWord.GetBaseErrorWordPage)
|
|
|
|
// 新增错别字
|
|
errorGroup.POST("", api.BaseErrorWord.AddBaseErrorWord)
|
|
|
|
// 删除错别字
|
|
errorGroup.DELETE("/:word_id", api.BaseErrorWord.DeleteBaseErrorWord)
|
|
|
|
// 一键修改错别字
|
|
errorGroup.POST("/up/:word_id", api.BaseErrorWord.OperationErrorWord)
|
|
}
|
|
}
|
|
|
|
// 统计
|
|
staticGroup := adminGroup.Group("/static")
|
|
{
|
|
// 获取统计数据
|
|
staticGroup.GET("", api.Static.GetStatic)
|
|
}
|
|
|
|
// 配置
|
|
systemGroup := adminGroup.Group("/system")
|
|
{
|
|
// 编辑器配置
|
|
editorGroup := systemGroup.Group("/editor")
|
|
{
|
|
// 编辑器-上传
|
|
editorGroup.POST("", api.Editor.EditorUpload)
|
|
}
|
|
}
|
|
|
|
// 用户
|
|
userGroup := adminGroup.Group("/user")
|
|
{
|
|
// 后台用户
|
|
userAdminGroup := userGroup.Group("/admin")
|
|
{
|
|
// 获取列表-分页
|
|
userAdminGroup.GET("/page", api.AdminUser.GetAdminUserPage)
|
|
|
|
// 用户详情
|
|
userAdminGroup.GET("/:user_id", api.AdminUser.GetAdminUser)
|
|
|
|
// 新增
|
|
userAdminGroup.POST("", api.AdminUser.AddAdminUser)
|
|
|
|
// 修改
|
|
userAdminGroup.PUT("/:user_id", api.AdminUser.PutAdminUser)
|
|
|
|
// 修改状态
|
|
userAdminGroup.PUT("/status/:user_id", api.AdminUser.PutAdminUserStatus)
|
|
|
|
// 修改禁用状态
|
|
userAdminGroup.PUT("/disabled/:user_id", api.AdminUser.PutAdminUserDisabled)
|
|
|
|
// 修改密码
|
|
userAdminGroup.PUT("/password", api.AdminUser.PutAdminUserPassword)
|
|
|
|
// 退出登陆
|
|
userAdminGroup.PUT("loginout", api.AdminUser.LoginOut)
|
|
|
|
// 删除用户-批量
|
|
userAdminGroup.DELETE("", api.AdminUser.DeleteAdminUser)
|
|
}
|
|
}
|
|
}
|
|
|
|
// 获取分享数据
|
|
shareGroup := r.Group("/share")
|
|
{
|
|
// 获取知识问答数据
|
|
shareGroup.GET("/qa", api.Share.GetQuestionQa)
|
|
|
|
// 获取题目数据
|
|
shareGroup.GET("/question", api.Share.GetQuestion)
|
|
}
|
|
}
|