package router import ( "fmt" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" "github.com/gogf/gf/os/gtime" _ "github.com/lin-jim-leon/kuaishou/open/merchant" "github.com/lin-jim-leon/kuaishou/open/oauth" _ "github.com/lin-jim-leon/kuaishou/open/oauth" "github.com/lin-jim-leon/kuaishou/open/user" _ "github.com/lin-jim-leon/kuaishou/open/user" youngeetalentapi "youngmini_server/app/api/youngee_talent_api" "youngmini_server/app/model/youngee_talent_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() // 解决跨域 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("/hello", func(r *ghttp.Request) { // ClientKey := "ks651333097154138217" // //ClientSecret := "dBt0rVRhTpUqcrOYGGpv0A" // SignSecret := "bf6393dce0a2b669ee348bebb837b0da" // access_token := "ChFvYXV0aC5hY2Nlc3NUb2tlbhJg3bHg2fx4q7DC3NDjTerISLTMV8M3OSj8lZMVG3oF37XapgezRims_9gq8pkNKlTRi3Vtwjd7tGbUbBN8pLNVBZaJbkig2IPKHswsuGZwC4uHMwiVkAFeSJRt7gJwec4jGhI4jxc1xH1K15kfx1GQn1SwLvsiID1v9alK2K-YywCzsIW3v7WIjFLGRfEqyt9s2m3VOaGXKAUwAQ" // // 计算七天前的时间戳(毫秒) // DaysAgo := time.Now().AddDate(0, 0, -7) // 91天前 // beginTime := DaysAgo.UnixNano() / int64(time.Millisecond) // 转换为毫秒 // endTime := time.Now().UnixNano() / int64(time.Millisecond) // 转换为毫秒 // // 计算当前时间戳(毫秒) // cpsOrderStatus := 0 // 假设的值 // pageSize := 10 // 假设的值 // corlist, _ := merchant.Corderlist(ClientKey, SignSecret, access_token, cpsOrderStatus, pageSize, beginTime, endTime) // err := r.Response.WriteJson(corlist) // if err != nil { // panic("write response error") // } //}) //nignx转发含code的请求到此处 s.BindHandler("/kuaishouauth", func(r *ghttp.Request) { fmt.Println("****进入rounter中的/kuaishouauth*******") ClientKey := "ks651333097154138217" ClientSecret := "dBt0rVRhTpUqcrOYGGpv0A" //SignSecret := "bf6393dce0a2b669ee348bebb837b0da" code := r.GetString("code") state := r.GetString("state") //如果该达人(state)已经有数据了,删除。模拟在快手刷新授权 没有数据则空操作 _, err := g.DB().Model("platform_kuaishou_user_info"). Where("talent_id = ? ", state). Delete() if err != nil { r.Response.WriteJson("platform_kuaishou_user_info delete failed") } //获取accesstoken res_auth, _ := oauth.GetAccessToken(ClientKey, ClientSecret, code) AccessToken := res_auth.AccessToken //获取基本信息 res_info, _ := user.GetUserinfo(ClientKey, AccessToken) //30天销量不在扫码时获取。 err_auth := r.Response.WriteJson(res_auth) err_info := r.Response.WriteJson(res_info) if err_auth != nil { panic("write auth_response error") } if err_info != nil { panic("write auth_response error") } if res_auth.Result != 1 { panic("授权结果出错了") } if res_info.Result != 1 { panic("获取用户信息出错了") } //auth中含有最终信息 authInfo := &youngee_talent_model.KuaishouUserInfo{ Code: code, TalentId: state, AccessToken: AccessToken, OpenId: res_auth.OpenId, PlatformId: 4, //快手平台 RefreshToken: res_auth.RefreshToken, HeadUri: res_info.Data.Head, NickName: res_info.Data.Name, Fan: res_info.Data.Fan, UpdateTime: gtime.Now(), CreateTime: gtime.Now(), } if _, err := g.DB().Model("platform_kuaishou_user_info").Save(authInfo); err != nil { r.Response.WriteJson(g.Map{ "error": err.Error(), }) return } }) // 达人不需要鉴权的接口 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.GET("/list-tab", sectask.SecTask.ListTab) group.GET("/logistics/detail", sectask.SecTask.ShowLogisticsDetail) }) 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) }) }) }) }