-
Notifications
You must be signed in to change notification settings - Fork 1
/
router.go
166 lines (145 loc) · 6.92 KB
/
router.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
package initialize
import (
"net/http"
"github.com/gin-gonic/gin"
_ "github.com/prl26/exam-system/server/docs"
"github.com/prl26/exam-system/server/global"
"github.com/prl26/exam-system/server/middleware"
"github.com/prl26/exam-system/server/router"
"github.com/swaggo/gin-swagger"
"github.com/swaggo/gin-swagger/swaggerFiles"
)
// 初始化总路由
func Routers() *gin.Engine {
Router := gin.Default()
// 如果想要不使用nginx代理前端网页,可以修改 web/.env.production 下的
// VUE_APP_BASE_API = /
// VUE_APP_BASE_PATH = http://localhost
// 然后执行打包命令 npm run build。在打开下面4行注释
// Router.LoadHTMLGlob("./dist/*.html") // npm打包成dist的路径
// Router.Static("/favicon.ico", "./dist/favicon.ico")
// Router.Static("/static", "./dist/assets") // dist里面的静态资源
// Router.StaticFile("/", "./dist/index.html") // 前端网页入口页面
Router.StaticFS(global.GVA_CONFIG.Local.Path, http.Dir(global.GVA_CONFIG.Local.StorePath)) // 为用户头像和文件提供静态地址
// Router.Use(middleware.LoadTls()) // 如果需要使用https 请打开此中间件 然后前往 core/server.go 将启动模式 更变为 Router.RunTLS("端口","你的cre/pem文件","你的key文件")
// 跨域,如需跨域可以打开下面的注释
// Router.Use(middleware.Cors()) // 直接放行全部跨域请求
Router.Use(middleware.CorsByRules()) // 按照配置的规则放行跨域请求
global.GVA_LOG.Info("use middleware cors")
Router.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
global.GVA_LOG.Info("register swagger handler")
// 方便统一添加路由组前缀 多服务器上线使用
backStageRouterGroup := router.RouterGroupApp.BackStage
{
teachplanRouter := backStageRouterGroup.Teachplan
lessondataRouter := backStageRouterGroup.Lessondata
basicdataRouter := backStageRouterGroup.Basicdata
systemRouter := backStageRouterGroup.System
examManageRouter := backStageRouterGroup.Exammanage
questionBankRouter := backStageRouterGroup.QuestionBank
//ojRouter := router.RouterGroupApp.Oj
PublicGroup := Router.Group("")
{
// 健康监测
PublicGroup.GET("/health", func(c *gin.Context) {
c.JSON(200, "ok")
})
}
{
systemRouter.InitBaseRouter(PublicGroup) // 注册基础功能路由 不做鉴权
systemRouter.InitInitRouter(PublicGroup) // 自动初始化相关
}
PrivateGroup := Router.Group("")
PrivateGroup.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler())
{
systemRouter.InitApiRouter(PrivateGroup) // 注册功能api路由
systemRouter.InitJwtRouter(PrivateGroup) // jwt相关路由
systemRouter.InitUserRouter(PrivateGroup) // 注册用户路由
systemRouter.InitMenuRouter(PrivateGroup) // 注册menu路由
systemRouter.InitSystemRouter(PrivateGroup) // system相关路由
systemRouter.InitCasbinRouter(PrivateGroup) // 权限相关路由
systemRouter.InitAutoCodeRouter(PrivateGroup) // 创建自动化代码
systemRouter.InitAuthorityRouter(PrivateGroup) // 注册角色路由
systemRouter.InitSysDictionaryRouter(PrivateGroup) // 字典管理
systemRouter.InitAutoCodeHistoryRouter(PrivateGroup) // 自动化代码历史
systemRouter.InitSysOperationRecordRouter(PrivateGroup) // 操作记录
systemRouter.InitSysDictionaryDetailRouter(PrivateGroup) // 字典详情管理
systemRouter.InitAuthorityBtnRouterRouter(PrivateGroup) // 字典详情管理
// Code generated by github.com/prl26/frontExam-system/server Begin; DO NOT EDIT.
lessondataRouter.InitVideoResourcesRouter(PrivateGroup)
lessondataRouter.InitArticleResourcesRouter(PrivateGroup)
lessondataRouter.InitResourcePracticeRouter(PrivateGroup)
lessondataRouter.InitResourcesTestRouter(PrivateGroup)
lessondataRouter.InitKnowledgeRouter(PrivateGroup)
teachplanRouter.InitTeachAttendanceRouter(PrivateGroup)
teachplanRouter.InitTeachAttendanceRecordRouter(PrivateGroup)
teachplanRouter.InitScoreRouter(PrivateGroup)
teachplanRouter.InitExamPlanRouter(PrivateGroup)
examManageRouter.InitExamPaperRouter(PrivateGroup)
examManageRouter.InitPaperTemplateRouter(PrivateGroup)
examManageRouter.InitPaperQuestionMergeRouter(PrivateGroup)
examManageRouter.InitDraftPaperRouter(PrivateGroup)
examManageRouter.InitPaperTemplateItemRouter(PrivateGroup)
examManageRouter.InitExamStudentPaperRouter(PrivateGroup)
// Code generated by github.com/prl26/frontExam-system/server End; DO NOT EDIT.
}
//基础信息接口
basicGroup := Router.Group("")
{
basicdataRouter.InitStudentRouter(basicGroup)
basicdataRouter.InitLessonRouter(basicGroup)
basicdataRouter.InitChapterRouter(basicGroup)
basicdataRouter.InitResourceRouter(basicGroup)
basicdataRouter.InitClassRouter(basicGroup)
basicdataRouter.InitCollegeRouter(basicGroup)
basicdataRouter.InitProfessionalRouter(basicGroup)
basicdataRouter.InitTeachClassRouter(basicGroup)
basicdataRouter.InitTeachClassStudentRouter(basicGroup) // 测试
basicdataRouter.InitTermRouter(basicGroup)
}
//题库接口
questionGroup := Router.Group("/questionBank")
{
questionBankRouter.InitProgram(questionGroup)
questionBankRouter.InitQuestionBankRouter(questionGroup)
questionBankRouter.InitQuestionBankSupplyBlankRouter(questionGroup)
questionBankRouter.InitQuestionBankMultipleChoiceRouter(questionGroup)
questionBankRouter.InitQuestionBankJudgeRouter(questionGroup)
questionBankRouter.InitPublicProgram(questionGroup)
questionBankRouter.InitBackgroundOjRouter(questionGroup)
questionBankRouter.InitTargetRouter(questionGroup)
questionBankRouter.InitSituation(questionGroup)
}
//TestGroup := Router.Group("") // 此处测试接口不需要分配权限
//{
// basicdataRouter.InitTeachClassStudentRouter(TestGroup)
//}
}
// 前台
frontDeskRouterGroup := router.RouterGroupApp.FrontDesk
{
basicRouterGroup := frontDeskRouterGroup.BasicRouterGroup
systemRouter := frontDeskRouterGroup.SystemRouterGroup
examRouterGroup := frontDeskRouterGroup.ExamRouterGroup
questionBankGroup := frontDeskRouterGroup.QuestionBankRouterGroup
teachplanGroup := frontDeskRouterGroup.TeachPlanRouterGroup
PublicGroup := Router.Group("")
{
systemRouter.InitBaseRouter(PublicGroup) // 学生登录 不做鉴权
teachplanGroup.InitAttendanceRouter(PublicGroup) //完成考勤 不做鉴权
}
PrivateGroup := Router.Group("")
PrivateGroup.Use(middleware.StudentJWTAuth())
{
basicRouterGroup.InitLessonRouter(PrivateGroup)
questionBankGroup.InitOjRouter(PrivateGroup)
questionBankGroup.InitQuestionBankRouter(PrivateGroup)
systemRouter.InitSystemRouter(PrivateGroup)
examRouterGroup.InitFrontExamRouter(PrivateGroup)
examRouterGroup.InitTargetExamRouter(PrivateGroup)
}
}
InstallPlugin(Router) // 安装插件
global.GVA_LOG.Info("router register success")
return Router
}