router.go 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. package router
  2. import (
  3. "github.com/gogf/gf/frame/g"
  4. "github.com/gogf/gf/net/ghttp"
  5. "github.com/gogf/gf/os/gtime"
  6. _ "github.com/lin-jim-leon/kuaishou/open/merchant"
  7. "github.com/lin-jim-leon/kuaishou/open/oauth"
  8. _ "github.com/lin-jim-leon/kuaishou/open/oauth"
  9. "github.com/lin-jim-leon/kuaishou/open/user"
  10. _ "github.com/lin-jim-leon/kuaishou/open/user"
  11. youngeetalentapi "youngmini_server/app/api/youngee_talent_api"
  12. "youngmini_server/app/model/youngee_talent_model"
  13. "youngmini_server/app/system/assignment"
  14. "youngmini_server/app/system/sectask"
  15. "youngmini_server/app/system/wxpay"
  16. "youngmini_server/middleware"
  17. )
  18. // MiddlewareCORS 允许跨域请求中间件 所有的路由都会经过这个中间件
  19. func MiddlewareCORS(r *ghttp.Request) {
  20. corsOptions := r.Response.DefaultCORSOptions()
  21. 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"
  22. corsOptions.ExposeHeaders = "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar"
  23. corsOptions.MaxAge = 1728000
  24. //corsOptions := ghttp.CORSOptions{
  25. //AllowOrigin: "*",
  26. //AllowMethods: "POST,GET,OPTIONS,PUT,DELETE,UPDATE",
  27. //AllowCredentials: "false",
  28. //MaxAge: 1728000,
  29. //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",
  30. //ExposeHeaders: "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Language,Expires,Last-Modified,Pragma,FooBar",
  31. //}
  32. //corsOptions.AllowDomain = []string{"goframe.org", "johng.cn"}
  33. //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"
  34. r.Response.CORS(corsOptions)
  35. r.Middleware.Next()
  36. }
  37. // MiddlewareAuth 用户认证中间件
  38. //
  39. // func MiddlewareAuth(r *ghttp.Request) {
  40. // //排除路径
  41. // array := garray.NewFrom(g.Slice{"/admin/account"})
  42. // if array.Contains(r.RequestURI) == false {
  43. // userData, err := backstage_service.Token.AuthorizationGetUserData(r)
  44. // if err != nil {
  45. // r.Response.WriteStatus(http.StatusForbidden)
  46. // response.JsonExit(r, http.StatusForbidden, err.Error())
  47. // }
  48. // if userData == nil {
  49. // r.Response.WriteStatus(http.StatusUnauthorized)
  50. // response.JsonExit(r, http.StatusForbidden, "用户不存在")
  51. // }
  52. // }
  53. // // 中间件处理逻辑
  54. // r.Middleware.Next()
  55. // }
  56. //
  57. // 用于存数据库的验证信息
  58. // json用于序列化和反序列化
  59. // MiddlewareSuperAuth 超级管理员可以操作的登录接口
  60. //
  61. // func MiddlewareSuperAuth(r *ghttp.Request) {
  62. // // 排除路径
  63. // userData, _ := backstage_service.Token.AuthorizationGetUserData(r)
  64. // if userData.User != "10000000" {
  65. // r.Response.WriteStatus(http.StatusPaymentRequired)
  66. // response.JsonExit(r, http.StatusPaymentRequired, "没有权限操作")
  67. // }
  68. // // 中间件处理逻辑
  69. // r.Middleware.Next()
  70. // }
  71. func init() {
  72. s := g.Server()
  73. // 解决跨域
  74. s.BindMiddleware("/*", MiddlewareCORS)
  75. // v2小程序端接口
  76. s.Group("/youngee/c", func(group *ghttp.RouterGroup) {
  77. group.Middleware(middleware.ErrorHandler)
  78. //group.GET("/ping", func(r *ghttp.Request)才表示/youngee/c/ping生效
  79. //s.BindHandler("/hello", func(r *ghttp.Request) {
  80. // ClientKey := "ks651333097154138217"
  81. // //ClientSecret := "dBt0rVRhTpUqcrOYGGpv0A"
  82. // SignSecret := "bf6393dce0a2b669ee348bebb837b0da"
  83. // access_token := "ChFvYXV0aC5hY2Nlc3NUb2tlbhJg3bHg2fx4q7DC3NDjTerISLTMV8M3OSj8lZMVG3oF37XapgezRims_9gq8pkNKlTRi3Vtwjd7tGbUbBN8pLNVBZaJbkig2IPKHswsuGZwC4uHMwiVkAFeSJRt7gJwec4jGhI4jxc1xH1K15kfx1GQn1SwLvsiID1v9alK2K-YywCzsIW3v7WIjFLGRfEqyt9s2m3VOaGXKAUwAQ"
  84. // // 计算七天前的时间戳(毫秒)
  85. // DaysAgo := time.Now().AddDate(0, 0, -7) // 91天前
  86. // beginTime := DaysAgo.UnixNano() / int64(time.Millisecond) // 转换为毫秒
  87. // endTime := time.Now().UnixNano() / int64(time.Millisecond) // 转换为毫秒
  88. // // 计算当前时间戳(毫秒)
  89. // cpsOrderStatus := 0 // 假设的值
  90. // pageSize := 10 // 假设的值
  91. // corlist, _ := merchant.Corderlist(ClientKey, SignSecret, access_token, cpsOrderStatus, pageSize, beginTime, endTime)
  92. // err := r.Response.WriteJson(corlist)
  93. // if err != nil {
  94. // panic("write response error")
  95. // }
  96. //})
  97. //nignx转发含code的请求到此处
  98. s.BindHandler("/kuaishouauth", func(r *ghttp.Request) {
  99. ClientKey := "ks651333097154138217"
  100. ClientSecret := "dBt0rVRhTpUqcrOYGGpv0A"
  101. //SignSecret := "bf6393dce0a2b669ee348bebb837b0da"
  102. code := r.GetString("code")
  103. state := r.GetString("state")
  104. //获取accesstoken
  105. res_auth, _ := oauth.GetAccessToken(ClientKey, ClientSecret, code)
  106. AccessToken := res_auth.AccessToken
  107. //获取基本信息
  108. res_info, _ := user.GetUserinfo(ClientKey, AccessToken)
  109. //30天销量获取需要单独开一个接口QuerySalesFor30Days,前端调用并且传参数为订单处于30+50+60的
  110. err_auth := r.Response.WriteJson(res_auth)
  111. err_info := r.Response.WriteJson(res_info)
  112. if err_auth != nil {
  113. panic("write auth_response error")
  114. }
  115. if err_info != nil {
  116. panic("write auth_response error")
  117. }
  118. if res_auth.Result != 1 {
  119. panic("授权结果出错了")
  120. }
  121. if res_info.Result != 1 {
  122. panic("获取用户信息出错了")
  123. }
  124. //auth中含有最终信息
  125. authInfo := &youngee_talent_model.KuaishouUserInfo{
  126. Code: code,
  127. TalentId: state,
  128. AccessToken: AccessToken,
  129. OpenId: res_auth.OpenId,
  130. RefreshToken: res_auth.RefreshToken,
  131. HeadUri: res_info.Data.Head,
  132. NickName: res_info.Data.Name,
  133. Fan: res_info.Data.Fan,
  134. UpdateTime: gtime.Now(),
  135. CreateTime: gtime.Now(),
  136. }
  137. if _, err := g.DB().Model("platform_kuaishou_user_info").Save(authInfo); err != nil {
  138. r.Response.WriteJson(g.Map{
  139. "error": err.Error(),
  140. })
  141. return
  142. }
  143. })
  144. // 达人不需要鉴权的接口
  145. group.GET("/g", youngeetalentapi.TalentGetApi)
  146. group.POST("/p", youngeetalentapi.TalentPostApi)
  147. // 达人需要鉴权的接口
  148. group.Group("/t", func(group *ghttp.RouterGroup) {
  149. group.Middleware(middleware.DuplicateVerify, middleware.WxAuth)
  150. group.GET("/g", youngeetalentapi.TalentAuthGetApi)
  151. group.POST("/p", youngeetalentapi.TalentAuthPostApi)
  152. })
  153. })
  154. // v2小程序端接口
  155. s.Group("/youngee/c/api", func(group *ghttp.RouterGroup) {
  156. group.Middleware(middleware.ErrorHandler)
  157. //// 达人不需要鉴权的接口
  158. //group.GET("/g", youngeetalentapi.TalentGetApi)
  159. //group.POST("/p", youngeetalentapi.TalentPostApi)
  160. group.Group("/selection", func(group *ghttp.RouterGroup) {
  161. group.GET("/list", sectask.SecTask.List)
  162. })
  163. // 达人需要鉴权的接口
  164. group.Group("/t", func(group *ghttp.RouterGroup) {
  165. group.Middleware(middleware.DuplicateVerify, middleware.WxAuth)
  166. group.Group("/secTask", func(group *ghttp.RouterGroup) {
  167. group.GET("/list", sectask.SecTask.List)
  168. })
  169. group.Group("/assignment", func(group *ghttp.RouterGroup) {
  170. group.GET("/list", assignment.Assignment.List)
  171. group.POST("/add", assignment.Assignment.Add)
  172. })
  173. group.Group("/wxpay", func(group *ghttp.RouterGroup) {
  174. group.POST("/pay", wxpay.WxPay.WxPay)
  175. })
  176. })
  177. })
  178. }