sysrouter.go 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. package router
  2. import (
  3. "mime"
  4. log2 "device-manage/app/admin/apis/log"
  5. "device-manage/app/admin/apis/monitor"
  6. "device-manage/app/admin/apis/public"
  7. "device-manage/app/admin/apis/system"
  8. "device-manage/app/admin/apis/system/dict"
  9. . "device-manage/app/admin/apis/tools"
  10. "device-manage/app/admin/middleware"
  11. "device-manage/app/admin/middleware/handler"
  12. _ "device-manage/docs"
  13. jwt "device-manage/pkg/jwtauth"
  14. "device-manage/pkg/ws"
  15. "github.com/gin-gonic/gin"
  16. ginSwagger "github.com/swaggo/gin-swagger"
  17. "github.com/swaggo/gin-swagger/swaggerFiles"
  18. )
  19. func InitSysRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) *gin.RouterGroup {
  20. g := r.Group("")
  21. sysBaseRouter(g)
  22. // 静态文件
  23. sysStaticFileRouter(g)
  24. // swagger;注意:生产环境可以注释掉
  25. sysSwaggerRouter(g)
  26. // 无需认证
  27. sysNoCheckRoleRouter(g)
  28. // 需要认证
  29. sysCheckRoleRouterInit(g, authMiddleware)
  30. return g
  31. }
  32. func sysBaseRouter(r *gin.RouterGroup) {
  33. go ws.WebsocketManager.Start()
  34. go ws.WebsocketManager.SendService()
  35. go ws.WebsocketManager.SendAllService()
  36. r.GET("/", system.HelloWorld)
  37. //r.GET("/info", handler.Ping)
  38. r.GET("/:channel", ws.WebsocketManager.WsClient)
  39. }
  40. func sysStaticFileRouter(r *gin.RouterGroup) {
  41. mime.AddExtensionType(".js", "application/javascript")
  42. r.Static("/static", "./static")
  43. r.Static("/form-generator", "./static/form-generator")
  44. }
  45. func sysSwaggerRouter(r *gin.RouterGroup) {
  46. r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
  47. }
  48. func sysNoCheckRoleRouter(r *gin.RouterGroup) {
  49. v1 := r.Group("/api/v1")
  50. v1.GET("/monitor/server", monitor.ServerInfo)
  51. v1.GET("/getCaptcha", system.GenerateCaptchaHandler)
  52. v1.GET("/gen/preview/:tableId", Preview)
  53. v1.GET("/gen/toproject/:tableId", GenCodeV3)
  54. v1.GET("/gen/todb/:tableId", GenMenuAndApi)
  55. v1.GET("/gen/tabletree", GetSysTablesTree)
  56. v1.GET("/menuTreeselect", system.GetMenuTreeelect)
  57. v1.GET("/dict/databytype/:dictType", dict.GetDictDataByDictType)
  58. registerDBRouter(v1)
  59. registerSysTableRouter(v1)
  60. registerPublicRouter(v1)
  61. registerSysSettingRouter(v1)
  62. }
  63. func registerDBRouter(api *gin.RouterGroup) {
  64. db := api.Group("/db")
  65. {
  66. db.GET("/tables/page", GetDBTableList)
  67. db.GET("/columns/page", GetDBColumnList)
  68. }
  69. }
  70. func registerSysTableRouter(v1 *gin.RouterGroup) {
  71. systables := v1.Group("/sys/tables")
  72. {
  73. systables.GET("/page", GetSysTableList)
  74. tablesinfo := systables.Group("/info")
  75. {
  76. tablesinfo.POST("", InsertSysTable)
  77. tablesinfo.PUT("", UpdateSysTable)
  78. tablesinfo.DELETE("/:tableId", DeleteSysTables)
  79. tablesinfo.GET("/:tableId", GetSysTables)
  80. tablesinfo.GET("", GetSysTablesInfo)
  81. }
  82. }
  83. }
  84. func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  85. r.POST("/login", authMiddleware.LoginHandler)
  86. // Refresh time can be longer than token timeout
  87. r.GET("/refresh_token", authMiddleware.RefreshHandler)
  88. r.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/ws/:id/:channel", ws.WebsocketManager.WsClient)
  89. r.Group("").Use(authMiddleware.MiddlewareFunc()).GET("/wslogout/:id/:channel", ws.WebsocketManager.UnWsClient)
  90. v1 := r.Group("/api/v1")
  91. registerPageRouter(v1, authMiddleware)
  92. registerBaseRouter(v1, authMiddleware)
  93. registerDeptRouter(v1, authMiddleware)
  94. registerDictRouter(v1, authMiddleware)
  95. registerSysUserRouter(v1, authMiddleware)
  96. registerRoleRouter(v1, authMiddleware)
  97. registerConfigRouter(v1, authMiddleware)
  98. registerUserCenterRouter(v1, authMiddleware)
  99. registerPostRouter(v1, authMiddleware)
  100. registerMenuRouter(v1, authMiddleware)
  101. registerLoginLogRouter(v1, authMiddleware)
  102. registerOperLogRouter(v1, authMiddleware)
  103. }
  104. func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  105. v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  106. {
  107. v1auth.GET("/getinfo", system.GetInfo) //返回 当前角色的信息
  108. v1auth.GET("/menurole", system.GetMenuRole) //返回sys_menu_role 表中 menu_role_id和sys_menu表中menu_id相同的 menu列表.
  109. v1auth.PUT("/roledatascope", system.UpdateRoleDataScope)
  110. v1auth.GET("/roleMenuTreeselect/:roleId", system.GetMenuTreeRoleselect)
  111. v1auth.GET("/roleDeptTreeselect/:roleId", system.GetDeptTreeRoleselect)
  112. v1auth.POST("/logout", handler.LogOut)
  113. v1auth.GET("/menuids", system.GetMenuIDS)
  114. v1auth.GET("/operloglist", log2.GetOperLogList)
  115. v1auth.GET("/configKey/:configKey", system.GetConfigByConfigKey)
  116. }
  117. }
  118. func registerPageRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  119. v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  120. {
  121. v1auth.GET("/deptList", system.GetDeptList)
  122. v1auth.GET("/deptTree", system.GetDeptTree)
  123. v1auth.GET("/sysUserList", system.GetSysUserList)
  124. v1auth.GET("/rolelist", system.GetRoleList)
  125. v1auth.GET("/configList", system.GetConfigList)
  126. v1auth.GET("/postlist", system.GetPostList)
  127. v1auth.GET("/menulist", system.GetMenuList)
  128. v1auth.GET("/loginloglist", log2.GetLoginLogList)
  129. }
  130. }
  131. func registerUserCenterRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  132. user := v1.Group("/user").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  133. {
  134. user.GET("/profile", system.GetSysUserProfile)
  135. user.POST("/avatar", system.InsetSysUserAvatar)
  136. user.PUT("/pwd", system.SysUserUpdatePwd)
  137. }
  138. }
  139. func registerOperLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  140. operlog := v1.Group("/operlog").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  141. {
  142. operlog.GET("/:operId", log2.GetOperLog)
  143. operlog.DELETE("/:operId", log2.DeleteOperLog)
  144. }
  145. }
  146. func registerLoginLogRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  147. loginlog := v1.Group("/loginlog").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  148. {
  149. loginlog.GET("/:infoId", log2.GetLoginLog)
  150. loginlog.POST("", log2.InsertLoginLog)
  151. loginlog.PUT("", log2.UpdateLoginLog)
  152. loginlog.DELETE("/:infoId", log2.DeleteLoginLog)
  153. }
  154. }
  155. func registerPostRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  156. post := v1.Group("/post").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  157. {
  158. post.GET("/:postId", system.GetPost)
  159. post.POST("", system.InsertPost)
  160. post.PUT("", system.UpdatePost)
  161. post.DELETE("/:postId", system.DeletePost)
  162. }
  163. }
  164. func registerMenuRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  165. menu := v1.Group("/menu").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  166. {
  167. menu.GET("/:id", system.GetMenu)
  168. menu.POST("", system.InsertMenu)
  169. menu.PUT("", system.UpdateMenu)
  170. menu.DELETE("/:id", system.DeleteMenu)
  171. }
  172. }
  173. func registerConfigRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  174. config := v1.Group("/config").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  175. {
  176. config.GET("/:configId", system.GetConfig)
  177. config.POST("", system.InsertConfig)
  178. config.PUT("", system.UpdateConfig)
  179. config.DELETE("/:configId", system.DeleteConfig)
  180. }
  181. }
  182. func registerRoleRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  183. role := v1.Group("/role").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  184. {
  185. role.GET("/:roleId", system.GetRole)
  186. role.POST("", system.InsertRole)
  187. role.PUT("", system.UpdateRole) //会先删除 sys_role_menu 和 sys_casbin_rule 表中对应role_id, 和role.RoleKey 的内容,即使删除当前角色的所有内容, 然后 再更新.
  188. role.DELETE("/:roleId", system.DeleteRole)
  189. }
  190. }
  191. func registerSysUserRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  192. sysuser := v1.Group("/sysUser").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  193. {
  194. sysuser.GET("/:userId", system.GetSysUser)
  195. sysuser.GET("/", system.GetSysUserInit)
  196. sysuser.POST("", system.InsertSysUser)
  197. sysuser.PUT("", system.UpdateSysUser)
  198. sysuser.DELETE("/:userId", system.DeleteSysUser)
  199. }
  200. }
  201. func registerDictRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  202. dicts := v1.Group("/dict").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  203. {
  204. dicts.GET("/datalist", dict.GetDictDataList)
  205. dicts.GET("/typelist", dict.GetDictTypeList)
  206. dicts.GET("/typeoptionselect", dict.GetDictTypeOptionSelect)
  207. dicts.GET("/data/:dictCode", dict.GetDictData)
  208. dicts.POST("/data", dict.InsertDictData)
  209. dicts.PUT("/data/", dict.UpdateDictData)
  210. dicts.DELETE("/data/:dictCode", dict.DeleteDictData)
  211. dicts.GET("/type/:dictId", dict.GetDictType)
  212. dicts.POST("/type", dict.InsertDictType)
  213. dicts.PUT("/type", dict.UpdateDictType)
  214. dicts.DELETE("/type/:dictId", dict.DeleteDictType)
  215. }
  216. }
  217. func registerDeptRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
  218. dept := v1.Group("/dept").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
  219. {
  220. dept.GET("/:deptId", system.GetDept)
  221. dept.POST("", system.InsertDept)
  222. dept.PUT("", system.UpdateDept)
  223. dept.DELETE("/:id", system.DeleteDept)
  224. }
  225. }
  226. func registerSysSettingRouter(v1 *gin.RouterGroup) {
  227. setting := v1.Group("/setting")
  228. {
  229. setting.GET("", system.GetSetting)
  230. setting.POST("", system.CreateSetting)
  231. setting.GET("/serverInfo", monitor.ServerInfo)
  232. }
  233. }
  234. func registerPublicRouter(v1 *gin.RouterGroup) {
  235. p := v1.Group("/public")
  236. {
  237. p.POST("/uploadFile", public.UploadFile)
  238. }
  239. }