chart.go 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233
  1. package services
  2. import (
  3. "context"
  4. "encoding/json"
  5. "fmt"
  6. "hongze/hongze_cygx/models"
  7. "hongze/hongze_cygx/utils"
  8. "io/ioutil"
  9. nhttp "net/http"
  10. "strconv"
  11. "strings"
  12. "time"
  13. )
  14. //get公共请求方法
  15. func PublicGetDate(url, authorization string) (body []byte, err error) {
  16. defer func() {
  17. if err != nil {
  18. fmt.Println(url + "Get Err:" + err.Error())
  19. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", url+"Get ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  20. }
  21. }()
  22. method := "GET"
  23. client := &nhttp.Client{}
  24. req, err := nhttp.NewRequest(method, url, nil)
  25. if err != nil {
  26. fmt.Println(url+"Get Err:", err.Error())
  27. return
  28. }
  29. req.Header.Add("Authorization", authorization)
  30. res, err := client.Do(req)
  31. if err != nil {
  32. fmt.Println(err)
  33. return
  34. }
  35. defer res.Body.Close()
  36. body, err = ioutil.ReadAll(res.Body)
  37. if err != nil {
  38. fmt.Println("Getres.Body Err:", err.Error())
  39. return
  40. }
  41. return
  42. }
  43. //获取列表
  44. func GetChartListByApi(cont context.Context) (err error) {
  45. defer func() {
  46. if err != nil {
  47. fmt.Println("GetArticleListByApi Err:" + err.Error())
  48. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetArticleListByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  49. }
  50. }()
  51. url := utils.ApiUrl + "charts/mp?take=4000&skip=0"
  52. authorization := utils.ApiAuthorization
  53. body, err := PublicGetDate(url, authorization)
  54. if err != nil {
  55. fmt.Println(err)
  56. return
  57. }
  58. var chartResult models.ChartResultApi
  59. err = json.Unmarshal(body, &chartResult)
  60. if err != nil {
  61. fmt.Println("Getres.pdfResult Err:", err.Error())
  62. return err
  63. }
  64. for _, v := range chartResult.Data {
  65. item := new(models.CygxChart)
  66. item.ChartId = v.ChartId
  67. item.PtagId = v.PtagId
  68. item.CtagId = v.CtagId
  69. item.Title = v.Title
  70. item.TitleEn = v.TitleEn
  71. item.CreateDateApi = time.Now()
  72. item.CreateDate = v.CreateDate
  73. item.PublishStatus = v.PublishStatus
  74. item.PtagName = v.Ptag.Name
  75. item.CtagName = v.Ctag.Name
  76. item.Cover = v.Cover
  77. item.Iframe = v.Iframe
  78. count, err := models.GetChartCountById(v.ChartId)
  79. if err != nil && err.Error() != utils.ErrNoRow() {
  80. fmt.Println("GetChartCountById Err:", err.Error())
  81. return err
  82. }
  83. if count == 0 {
  84. _, err := models.AddCygxChart(item)
  85. if err != nil {
  86. fmt.Println("AddCygxChart Err:", err.Error())
  87. return err
  88. }
  89. } else {
  90. updateParams := make(map[string]interface{})
  91. updateParams["Title"] = v.Title
  92. updateParams["PtagId"] = v.PtagId
  93. updateParams["CtagId"] = v.CtagId
  94. updateParams["TitleEn"] = v.TitleEn
  95. updateParams["CreateDate"] = v.CreateDate
  96. updateParams["PublishStatus"] = v.PublishStatus
  97. updateParams["PtagName"] = v.Ptag.Name
  98. updateParams["CtagName"] = v.Ctag.Name
  99. updateParams["Cover"] = v.Cover
  100. updateParams["Iframe"] = v.Iframe
  101. whereParam := map[string]interface{}{"chart_id": v.ChartId}
  102. err = models.UpdateByExpr(models.CygxChart{}, whereParam, updateParams)
  103. }
  104. fmt.Println(v)
  105. }
  106. return
  107. }
  108. //获取图表分类
  109. func GetChartPtagByApi() (items []*models.ChartPtagResp, err error) {
  110. defer func() {
  111. if err != nil {
  112. fmt.Println("GetChartPtagByApi Err:" + err.Error())
  113. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetChartPtagByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  114. }
  115. }()
  116. url := utils.ApiUrl + "charts/ptag"
  117. authorization := utils.ApiAuthorization
  118. body, err := PublicGetDate(url, authorization)
  119. if err != nil {
  120. fmt.Println(err)
  121. return
  122. }
  123. var chartResult models.ChartPtagResultApi
  124. err = json.Unmarshal(body, &chartResult)
  125. if err != nil {
  126. fmt.Println("Getres.pdfResult Err:", err.Error())
  127. return
  128. }
  129. for _, v := range chartResult.Data {
  130. item := new(models.ChartPtagResp)
  131. item.ChartPermissionName = v.ChartPermissionName
  132. item.ChartPermissionId = v.ChartPermissionId
  133. if len(v.Ctag) > 0 {
  134. for _, v2 := range v.Ctag {
  135. itemCtag := new(models.CtagResp)
  136. itemCtag.CtagId = v2.Id
  137. itemCtag.Name = v2.Name
  138. item.List = append(item.List, itemCtag)
  139. }
  140. }
  141. items = append(items, item)
  142. }
  143. return
  144. }
  145. //获取用户的Token
  146. func GetUserTokenByMobile(mobile string) (token string, err error) {
  147. url := "https://vmp.hzinsights.com/v2api/auth/login"
  148. method := "POST"
  149. payload := strings.NewReader(`{
  150. "phone_number":"` + mobile + `",
  151. "password":"hz123456"
  152. }`)
  153. client := &nhttp.Client{}
  154. req, err := nhttp.NewRequest(method, url, payload)
  155. if err != nil {
  156. fmt.Println(err)
  157. return
  158. }
  159. req.Header.Add("Content-Type", "application/json")
  160. req.Header.Add("Cookie", "sessionid=naj5j5kl1jjynh7og1rsaxkl1vrsl829")
  161. res, err := client.Do(req)
  162. if err != nil {
  163. fmt.Println(err)
  164. return
  165. }
  166. defer res.Body.Close()
  167. body, err := ioutil.ReadAll(res.Body)
  168. if err != nil {
  169. fmt.Println(err)
  170. return
  171. }
  172. var chartResult models.ChartUserTokenResultApi
  173. err = json.Unmarshal(body, &chartResult)
  174. if err != nil {
  175. fmt.Println("Getres.pdfResult Err:", err.Error())
  176. return
  177. }
  178. token = chartResult.Data.AccessToken
  179. return
  180. }
  181. //获取图表分类
  182. func GetChartCollectionByApi(mobile string) (items []*models.HomeChartListResp, err error) {
  183. defer func() {
  184. if err != nil {
  185. fmt.Println("GetChartPtagByApi Err:" + err.Error())
  186. go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"失败提醒", "GetChartPtagByApi ErrMsg:"+err.Error(), utils.EmailSendToUsers)
  187. }
  188. }()
  189. url := utils.ApiUrl + "charts/favorites"
  190. authorization, err := GetUserTokenByMobile(mobile)
  191. if err != nil {
  192. fmt.Println(err)
  193. return
  194. }
  195. authorization = "bearer " + authorization
  196. body, err := PublicGetDate(url, authorization)
  197. if err != nil {
  198. fmt.Println(err)
  199. return
  200. }
  201. var chartResult models.ChartFavoritesResultApi
  202. err = json.Unmarshal(body, &chartResult)
  203. if err != nil {
  204. fmt.Println("Getres.pdfResult Err:", err.Error())
  205. return
  206. }
  207. for _, v := range chartResult.Data {
  208. fmt.Println(v)
  209. item := new(models.HomeChartListResp)
  210. item.ChartId = v.ChartId
  211. item.Title = v.ChartInfo.Title
  212. item.TitleEn = v.ChartInfo.TitleEn
  213. item.CreateDate = v.ChartInfo.CreateDate
  214. item.PtagName = v.ChartInfo.Ptag.Name
  215. item.CtagName = v.ChartInfo.Ctag.Name
  216. item.ImgUrlPc = "https://vmp.hzinsights.com/v2/charts/" + strconv.Itoa(v.ChartId)
  217. item.HttpUrl = v.ChartInfo.Iframe
  218. item.IsNeedJump = true
  219. items = append(items, item)
  220. }
  221. return
  222. }