router.go 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. package router
  2. import (
  3. "github.com/gogf/gf/frame/g"
  4. "github.com/gogf/gf/net/ghttp"
  5. youngeetalentapi "youngmini_server/app/api/youngee_talent_api"
  6. "youngmini_server/app/model"
  7. "youngmini_server/app/system/assignment"
  8. "youngmini_server/app/system/sectask"
  9. "youngmini_server/app/system/wxpay"
  10. "youngmini_server/middleware"
  11. )
  12. // MiddlewareCORS 允许跨域请求中间件 所有的路由都会经过这个中间件
  13. func MiddlewareCORS(r *ghttp.Request) {
  14. corsOptions := r.Response.DefaultCORSOptions()
  15. corsOptions.AllowHeaders = "Authorization,Content-Length,X-CSRF-Token,Token,session,X_Requested_With,Accept,Origin,Host,Connection,Accept-Encoding,Accept-Language,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma"
  16. corsOptions.ExposeHeaders = "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar"
  17. corsOptions.MaxAge = 1728000
  18. //corsOptions := ghttp.CORSOptions{
  19. //AllowOrigin: "*",
  20. //AllowMethods: "POST,GET,OPTIONS,PUT,DELETE,UPDATE",
  21. //AllowCredentials: "false",
  22. //MaxAge: 1728000,
  23. //AllowHeaders: "Authorization,Content-Length,X-CSRF-Token,Token,session,X_Requested_With,Accept,Origin,Host,Connection,Accept-Encoding,Accept-Language,DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Pragma",
  24. //ExposeHeaders: "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar",
  25. //}
  26. //corsOptions.AllowDomain = []string{"goframe.org", "johng.cn"}
  27. //corsOptions.AllowHeaders = "Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,Keep-Alive,X-Requested-With,X-Forwarded-*,Pragma,Cache-Control,If-Modified-Since,userToken,appid"
  28. r.Response.CORS(corsOptions)
  29. r.Middleware.Next()
  30. }
  31. // MiddlewareAuth 用户认证中间件
  32. //
  33. // func MiddlewareAuth(r *ghttp.Request) {
  34. // //排除路径
  35. // array := garray.NewFrom(g.Slice{"/admin/account"})
  36. // if array.Contains(r.RequestURI) == false {
  37. // userData, err := backstage_service.Token.AuthorizationGetUserData(r)
  38. // if err != nil {
  39. // r.Response.WriteStatus(http.StatusForbidden)
  40. // response.JsonExit(r, http.StatusForbidden, err.Error())
  41. // }
  42. // if userData == nil {
  43. // r.Response.WriteStatus(http.StatusUnauthorized)
  44. // response.JsonExit(r, http.StatusForbidden, "用户不存在")
  45. // }
  46. // }
  47. // // 中间件处理逻辑
  48. // r.Middleware.Next()
  49. // }
  50. //
  51. // 用于存数据库的验证信息
  52. // json用于序列化和反序列化
  53. // MiddlewareSuperAuth 超级管理员可以操作的登录接口
  54. //
  55. // func MiddlewareSuperAuth(r *ghttp.Request) {
  56. // // 排除路径
  57. // userData, _ := backstage_service.Token.AuthorizationGetUserData(r)
  58. // if userData.User != "10000000" {
  59. // r.Response.WriteStatus(http.StatusPaymentRequired)
  60. // response.JsonExit(r, http.StatusPaymentRequired, "没有权限操作")
  61. // }
  62. // // 中间件处理逻辑
  63. // r.Middleware.Next()
  64. // }
  65. func init() {
  66. s := g.Server()
  67. //检查是否能访问数据库
  68. md := g.Model("younggee_user")
  69. bk, err := md.One()
  70. // 解决跨域
  71. s.BindMiddleware("/*", MiddlewareCORS)
  72. // v2小程序端接口
  73. s.Group("/youngee/c", func(group *ghttp.RouterGroup) {
  74. group.Middleware(middleware.ErrorHandler)
  75. //group.GET("/ping", func(r *ghttp.Request)才表示/youngee/c/ping生效
  76. s.BindHandler("/ping", func(r *ghttp.Request) {
  77. if err == nil {
  78. r.Response.WriteJson(bk)
  79. }
  80. })
  81. s.BindHandler("/douyinauth", func(r *ghttp.Request) {
  82. r.Response.WriteJson("here to auth")
  83. println("begin to auth")
  84. code := r.GetString("code")
  85. state := r.GetString("state")
  86. //结构体赋值
  87. authInfo := &model.AuthInfo{
  88. Code: code,
  89. State: state,
  90. }
  91. // 使用ORM保存到数据库
  92. if _, err := g.DB().Model("info_auth").Save(authInfo); err != nil {
  93. r.Response.WriteJson(g.Map{
  94. "error": err.Error(),
  95. })
  96. return
  97. }
  98. // 将保存成功的信息写入响应
  99. r.Response.WriteJson(g.Map{
  100. "message": "Auth info saved successfully",
  101. })
  102. // 将 map 序列化为 JSON 并写入响应
  103. r.Response.WriteJson(authInfo)
  104. println("over")
  105. //存数据库info_auth中
  106. })
  107. // group.GET("/ping", func(r *ghttp.Request) {
  108. // r.Response.Write("哈喽世界!")
  109. // })
  110. // 达人不需要鉴权的接口
  111. group.GET("/g", youngeetalentapi.TalentGetApi)
  112. group.POST("/p", youngeetalentapi.TalentPostApi)
  113. // 达人需要鉴权的接口
  114. group.Group("/t", func(group *ghttp.RouterGroup) {
  115. group.Middleware(middleware.DuplicateVerify, middleware.WxAuth)
  116. group.GET("/g", youngeetalentapi.TalentAuthGetApi)
  117. group.POST("/p", youngeetalentapi.TalentAuthPostApi)
  118. })
  119. })
  120. // v2小程序端接口
  121. s.Group("/youngee/c/api", func(group *ghttp.RouterGroup) {
  122. group.Middleware(middleware.ErrorHandler)
  123. //// 达人不需要鉴权的接口
  124. //group.GET("/g", youngeetalentapi.TalentGetApi)
  125. //group.POST("/p", youngeetalentapi.TalentPostApi)
  126. group.Group("/selection", func(group *ghttp.RouterGroup) {
  127. group.GET("/list", sectask.SecTask.List)
  128. })
  129. // 达人需要鉴权的接口
  130. group.Group("/t", func(group *ghttp.RouterGroup) {
  131. group.Middleware(middleware.DuplicateVerify, middleware.WxAuth)
  132. group.Group("/secTask", func(group *ghttp.RouterGroup) {
  133. group.GET("/list", sectask.SecTask.List)
  134. })
  135. group.Group("/assignment", func(group *ghttp.RouterGroup) {
  136. group.GET("/list", assignment.Assignment.List)
  137. group.POST("/add", assignment.Assignment.Add)
  138. })
  139. group.Group("/wxpay", func(group *ghttp.RouterGroup) {
  140. group.POST("/pay", wxpay.WxPay.WxPay)
  141. })
  142. })
  143. })
  144. }