talent_account.go 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. package youngee_talent_service
  2. import (
  3. "fmt"
  4. "github.com/gogf/gf/encoding/gjson"
  5. "io/ioutil"
  6. "net/http"
  7. "net/url"
  8. "youngmini_server/app/dao"
  9. "youngmini_server/app/model/youngee_talent_model"
  10. "youngmini_server/app/utils"
  11. "github.com/gogf/gf/frame/g"
  12. "github.com/gogf/gf/net/ghttp"
  13. )
  14. func GetTalentAccount(r *ghttp.Request) *TalentHttpResult {
  15. //达人id获取
  16. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  17. //定义除了youngee_platform_account_info表结构外额外还有info_third_platform的结构体(用表连接)
  18. if err != nil {
  19. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  20. }
  21. //查找给定达人id之后,该达人绑定了几个平台的账号
  22. res, err := g.DB().Model("youngee_platform_account_info").All("talent_id", tid)
  23. fmt.Println("该账号社媒平台绑定结果为__________:", res)
  24. if err != nil {
  25. return &TalentHttpResult{Code: -2, Msg: "query database error"}
  26. }
  27. if res == nil {
  28. return &TalentHttpResult{Code: -3, Msg: "未绑定任何平台"}
  29. }
  30. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  31. }
  32. func GetTalentAccountKuaishou(r *ghttp.Request) *TalentHttpResult {
  33. //达人id获取
  34. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  35. if err != nil {
  36. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  37. }
  38. //查找给定达人id之后,该达人绑定了几个平台的账号
  39. res, err := g.DB().Model("platform_kuaishou_user_info").All("talent_id", tid)
  40. if err != nil {
  41. return &TalentHttpResult{Code: -2, Msg: "query database error"}
  42. }
  43. if res == nil {
  44. return &TalentHttpResult{Code: -3, Msg: "未绑定任何平台"}
  45. }
  46. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  47. }
  48. func OnAddTalentAccount(r *ghttp.Request) *TalentHttpResult {
  49. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  50. if err != nil {
  51. return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  52. }
  53. account := youngee_talent_model.AddAccountReq{}
  54. //account := youngee_talent_model.KuaishouUserInfo{}
  55. err = r.ParseForm(&account)
  56. if err != nil {
  57. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  58. }
  59. //获取 基本信息,头像昵称、粉丝数、作品数目、点赞数
  60. //小红书
  61. if account.PlatformId == 1 {
  62. //获取匿名cookie
  63. cookie := getXHSCookie()
  64. if cookie == "" {
  65. return &TalentHttpResult{Code: -1, Msg: "小红书cookie获取失败"}
  66. }
  67. //获取用户唯一标识
  68. shareText := account.HomePageUrl
  69. parsedURL, err := url.Parse(shareText)
  70. if err != nil {
  71. fmt.Println("Error parsing URL:", err)
  72. }
  73. queryParams := parsedURL.Query()
  74. appuid := queryParams.Get("appuid")
  75. if appuid != "" {
  76. fmt.Println("appuid:", appuid)
  77. } else {
  78. fmt.Println("AppUID not found")
  79. }
  80. //获取用户基本信息
  81. //插入平台表
  82. } else {
  83. // 插入达人账号信息
  84. _, err = g.Model("platform_kuaishou_user_info").Insert(account)
  85. if err != nil {
  86. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  87. }
  88. // 修改talent表字段is_bind_account值为1
  89. _, err = g.Model(dao.YoungeeTalentInfo.Table).Data("is_bind_account=1").Where("id", tid).Update()
  90. if err != nil {
  91. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  92. }
  93. return &TalentHttpResult{Code: 0, Msg: "success"}
  94. }
  95. return &TalentHttpResult{Code: 0, Msg: "success"}
  96. }
  97. func OnUpdateTalentAccount(r *ghttp.Request) *TalentHttpResult {
  98. //tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  99. //if err != nil {
  100. // return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
  101. //}
  102. //account := youngee_talent_model.PlatformAccountInfo{}
  103. //err = r.ParseForm(&account)
  104. //if err != nil {
  105. // return &TalentHttpResult{Code: -2, Msg: err.Error()}
  106. //}
  107. //account.TalentId = tid
  108. //_, err = g.DB().Model(dao.YoungeePlatformAccountInfo.Table).Update(account, "account_id = ? and talent_id = ?", account.AccountId, tid)
  109. //if err != nil {
  110. // return &TalentHttpResult{Code: -3, Msg: "update failed"}
  111. //}
  112. return &TalentHttpResult{Code: 0, Msg: "success"}
  113. }
  114. func getXHSCookie() string {
  115. // 请求的 URL
  116. url := "http://120.46.92.62:6888/api/xhs/any_account"
  117. // 创建 POST 请求(无请求体)
  118. resp, err := http.Post(url, "application/json", nil)
  119. if err != nil {
  120. fmt.Println("Error sending POST request:", err)
  121. return ""
  122. }
  123. defer resp.Body.Close()
  124. // 读取响应体
  125. body, err := ioutil.ReadAll(resp.Body)
  126. if err != nil {
  127. fmt.Println("Error reading response body:", err)
  128. return ""
  129. }
  130. // 解析 JSON 响应
  131. jsonData, err := gjson.LoadContent(string(body))
  132. if err != nil {
  133. fmt.Println("Error parsing JSON:", err)
  134. return ""
  135. }
  136. // 提取 `cookie` 字段的值
  137. cookie := jsonData.GetString("data.response_body.data.cookie")
  138. if cookie != "" {
  139. return cookie
  140. } else {
  141. return ""
  142. }
  143. }