router.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package router
  2. import (
  3. "dsbqj-admin/app/api/hotupdate"
  4. v1 "dsbqj-admin/app/api/v1"
  5. "dsbqj-admin/middleware"
  6. "os"
  7. "github.com/gin-gonic/gin"
  8. )
  9. func newBaseRouter() *gin.Engine {
  10. r := gin.New()
  11. // 中间件, 顺序不能改
  12. r.Use(middleware.Session(os.Getenv("SESSION_SECRET")))
  13. r.Use(middleware.Cors())
  14. r.Use(gin.Recovery())
  15. return r
  16. }
  17. // NewRouter 路由配置
  18. func NewRouter() *gin.Engine {
  19. r := newBaseRouter()
  20. registerVersionRouter(r)
  21. registerAdminRouter(r)
  22. registerPointRouter(r)
  23. registerSubscribeRouter(r)
  24. registerHotUpdateRouter(r)
  25. registerReportRouter(r)
  26. return r
  27. }
  28. // NewAdminRouter 后台管理服务路由
  29. func NewAdminRouter() *gin.Engine {
  30. r := newBaseRouter()
  31. registerVersionRouter(r)
  32. registerAdminRouter(r)
  33. registerHotUpdateRouter(r)
  34. return r
  35. }
  36. // NewPointRouter 埋点服务路由
  37. func NewPointRouter() *gin.Engine {
  38. r := newBaseRouter()
  39. registerPointRouter(r)
  40. return r
  41. }
  42. // NewReportRouter 客户端上报服务路由
  43. func NewReportRouter() *gin.Engine {
  44. r := newBaseRouter()
  45. registerReportRouter(r)
  46. return r
  47. }
  48. // NewSubscribeRouter 订阅服务路由
  49. func NewSubscribeRouter() *gin.Engine {
  50. r := newBaseRouter()
  51. registerSubscribeRouter(r)
  52. return r
  53. }
  54. func registerVersionRouter(r *gin.Engine) {
  55. apiv1 := r.Group("/api/v1")
  56. {
  57. apiv1.POST("version/check", v1.CheckVersion)
  58. apiv1.POST("version/server", v1.ServerVersion)
  59. apiv1.POST("version/external", v1.VersionExternalAuth(), v1.VersionExternalConfig)
  60. apiv1.POST("version/abver", v1.VersionAbVer)
  61. apiv1.POST("version/md5", v1.VersionMD5)
  62. apiv1.GET("channel/all", v1.ChannelAll)
  63. apiv1.GET("platform/all", v1.PlatformList)
  64. }
  65. }
  66. func registerAdminRouter(r *gin.Engine) {
  67. webv1 := r.Group("/web/v1")
  68. {
  69. webv1.POST("auth/login", v1.AdminLogin)
  70. authed := webv1.Group("")
  71. authed.Use(middleware.AdminAccountRequired())
  72. {
  73. authed.PUT("auth/password", v1.AdminChangePassword)
  74. authed.GET("versions", v1.ShowVersions)
  75. authed.POST("version", v1.VersionCreate)
  76. authed.PUT("version", v1.VersionEdit)
  77. authed.GET("version/configs", v1.VersionConfigList)
  78. authed.POST("version/config", v1.VersionConfigSave)
  79. authed.PUT("version/config", v1.VersionConfigSave)
  80. authed.PUT("version/prod", v1.VersionProd)
  81. authed.DELETE("version/:key", v1.VersionDelete)
  82. authed.POST("version/reload", v1.ReloadVersion)
  83. authed.GET("channel/list", v1.ChannelList)
  84. authed.GET("platform/list", v1.PlatformList)
  85. authed.POST("platform", v1.PlatformCreate)
  86. authed.PUT("platform", v1.PlatformUpdate)
  87. authed.POST("platform/delete", v1.PlatformDelete)
  88. authed.POST("channel", v1.ChannelCreate)
  89. authed.PUT("channel", v1.ChannelUpdate)
  90. authed.POST("channel/delete", v1.ChannelDelete)
  91. }
  92. }
  93. }
  94. func registerPointRouter(r *gin.Engine) {
  95. pointv1 := r.Group("/point/v1")
  96. {
  97. pointv1.POST("thinkingdata", v1.ThinkingData)
  98. }
  99. }
  100. func registerSubscribeRouter(r *gin.Engine) {
  101. subscribev1 := r.Group("/subscribe/v1")
  102. {
  103. subscribev1.POST("/open", v1.Open) // 标记开启订阅
  104. subscribev1.POST("/close", v1.Close) // 标记关闭订阅
  105. subscribev1.POST("/check", v1.Check) // 检查用户当前订阅
  106. subscribev1.POST("/send", v1.Send) // 触发订阅直接发送
  107. subscribev1.POST("/task", v1.Task) // 触发订阅任务发送
  108. }
  109. }
  110. func registerHotUpdateRouter(r *gin.Engine) {
  111. hotupdateR := r.Group("/hotupdate")
  112. {
  113. hotupdateR.GET("/getversion", hotupdate.GetVersion)
  114. }
  115. // TODO 内网请求,需要添加ip白名单等
  116. internalR := r.Group("/internal")
  117. internalR.Use(middleware.AdminAccountRequired())
  118. {
  119. internalR.POST("/addversion", hotupdate.AddVersion)
  120. internalR.GET("/getmaxverinfo", hotupdate.GetMaxVerInfo)
  121. internalR.GET("/getversionlist", hotupdate.GetVersionList)
  122. internalR.PUT("/changestatus", hotupdate.ChangeStatus)
  123. }
  124. //webv1.Use(middleware.BodyHandler())
  125. //{
  126. //
  127. // // 需要登录保护的
  128. // authed := webv1.Group("/")
  129. //authed.Use(middleware.AdminRequired())
  130. // {
  131. //
  132. // }
  133. //
  134. }
  135. func registerReportRouter(r *gin.Engine) {
  136. apiv1 := r.Group("/api/v1")
  137. {
  138. apiv1.POST("upload/data", v1.UploadReport)
  139. }
  140. }