package router import ( "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" youngeetalentapi "youngmini_server/app/api/youngee_talent_api" "youngmini_server/app/model" "youngmini_server/app/system/assignment" "youngmini_server/app/system/sectask" "youngmini_server/app/system/wxpay" "youngmini_server/middleware" ) // MiddlewareCORS 允许跨域请求中间件 所有的路由都会经过这个中间件 func MiddlewareCORS(r *ghttp.Request) { corsOptions := r.Response.DefaultCORSOptions() 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" corsOptions.ExposeHeaders = "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar" corsOptions.MaxAge = 1728000 //corsOptions := ghttp.CORSOptions{ //AllowOrigin: "*", //AllowMethods: "POST,GET,OPTIONS,PUT,DELETE,UPDATE", //AllowCredentials: "false", //MaxAge: 1728000, //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", //ExposeHeaders: "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar", //} //corsOptions.AllowDomain = []string{"goframe.org", "johng.cn"} //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" r.Response.CORS(corsOptions) r.Middleware.Next() } // MiddlewareAuth 用户认证中间件 // // func MiddlewareAuth(r *ghttp.Request) { // //排除路径 // array := garray.NewFrom(g.Slice{"/admin/account"}) // if array.Contains(r.RequestURI) == false { // userData, err := backstage_service.Token.AuthorizationGetUserData(r) // if err != nil { // r.Response.WriteStatus(http.StatusForbidden) // response.JsonExit(r, http.StatusForbidden, err.Error()) // } // if userData == nil { // r.Response.WriteStatus(http.StatusUnauthorized) // response.JsonExit(r, http.StatusForbidden, "用户不存在") // } // } // // 中间件处理逻辑 // r.Middleware.Next() // } // // 用于存数据库的验证信息 // json用于序列化和反序列化 // MiddlewareSuperAuth 超级管理员可以操作的登录接口 // // func MiddlewareSuperAuth(r *ghttp.Request) { // // 排除路径 // userData, _ := backstage_service.Token.AuthorizationGetUserData(r) // if userData.User != "10000000" { // r.Response.WriteStatus(http.StatusPaymentRequired) // response.JsonExit(r, http.StatusPaymentRequired, "没有权限操作") // } // // 中间件处理逻辑 // r.Middleware.Next() // } func init() { s := g.Server() //检查是否能访问数据库 md := g.Model("younggee_user") bk, err := md.One() // 解决跨域 s.BindMiddleware("/*", MiddlewareCORS) // v2小程序端接口 s.Group("/youngee/c", func(group *ghttp.RouterGroup) { group.Middleware(middleware.ErrorHandler) //group.GET("/ping", func(r *ghttp.Request)才表示/youngee/c/ping生效 s.BindHandler("/ping", func(r *ghttp.Request) { if err == nil { r.Response.WriteJson(bk) } }) s.BindHandler("/douyinauth", func(r *ghttp.Request) { r.Response.WriteJson("here to auth") println("begin to auth") code := r.GetString("code") state := r.GetString("state") //结构体赋值 authInfo := &model.AuthInfo{ Code: code, State: state, } // 使用ORM保存到数据库 if _, err := g.DB().Model("info_auth").Save(authInfo); err != nil { r.Response.WriteJson(g.Map{ "error": err.Error(), }) return } // 将保存成功的信息写入响应 r.Response.WriteJson(g.Map{ "message": "Auth info saved successfully", }) // 将 map 序列化为 JSON 并写入响应 r.Response.WriteJson(authInfo) println("over") //存数据库info_auth中 }) // group.GET("/ping", func(r *ghttp.Request) { // r.Response.Write("哈喽世界!") // }) // 达人不需要鉴权的接口 group.GET("/g", youngeetalentapi.TalentGetApi) group.POST("/p", youngeetalentapi.TalentPostApi) // 达人需要鉴权的接口 group.Group("/t", func(group *ghttp.RouterGroup) { group.Middleware(middleware.DuplicateVerify, middleware.WxAuth) group.GET("/g", youngeetalentapi.TalentAuthGetApi) group.POST("/p", youngeetalentapi.TalentAuthPostApi) }) }) // v2小程序端接口 s.Group("/youngee/c/api", func(group *ghttp.RouterGroup) { group.Middleware(middleware.ErrorHandler) //// 达人不需要鉴权的接口 //group.GET("/g", youngeetalentapi.TalentGetApi) //group.POST("/p", youngeetalentapi.TalentPostApi) group.Group("/selection", func(group *ghttp.RouterGroup) { group.GET("/list", sectask.SecTask.List) }) // 达人需要鉴权的接口 group.Group("/t", func(group *ghttp.RouterGroup) { group.Middleware(middleware.DuplicateVerify, middleware.WxAuth) group.Group("/secTask", func(group *ghttp.RouterGroup) { group.GET("/list", sectask.SecTask.List) }) group.Group("/assignment", func(group *ghttp.RouterGroup) { group.GET("/list", assignment.Assignment.List) group.POST("/add", assignment.Assignment.Add) }) group.Group("/wxpay", func(group *ghttp.RouterGroup) { group.POST("/pay", wxpay.WxPay.WxPay) }) }) }) }