jiayue_index.go 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package data
  2. import (
  3. "encoding/json"
  4. "eta/eta_api/models/data_manage"
  5. "eta/eta_api/utils"
  6. "fmt"
  7. "io/ioutil"
  8. "net/http"
  9. "strings"
  10. )
  11. // 桥接服务接口
  12. var (
  13. BridgeApiJiaYueIndexUrl = "/api/index_data/jiayue/index" // 获取指标数据
  14. BridgeApiJiaYuePageIndexUrl = "/api/index_data/jiayue/page_index" // 获取指标列表-分页
  15. BridgeApiJiaYueFrequencyListUrl = "/api/index_data/jiayue/frequency_list" // 获取指标频度列表
  16. )
  17. // GetJiaYueFrequencyListFromBridge 获取指标频度列表
  18. func GetJiaYueFrequencyListFromBridge() (frequencies []string, err error) {
  19. url := fmt.Sprint(utils.EtaBridgeUrl, BridgeApiJiaYueFrequencyListUrl)
  20. body := ioutil.NopCloser(strings.NewReader(""))
  21. client := &http.Client{}
  22. req, e := http.NewRequest("POST", url, body)
  23. if e != nil {
  24. err = fmt.Errorf("http create request err: %s", e.Error())
  25. return
  26. }
  27. checkToken := utils.MD5(utils.EtaBridgeAppNameEn + utils.EtaBridgeMd5Key)
  28. contentType := "application/json;charset=utf-8"
  29. req.Header.Set("Content-Type", contentType)
  30. req.Header.Set("Authorization", checkToken)
  31. resp, e := client.Do(req)
  32. if e != nil {
  33. err = fmt.Errorf("http client do err: %s", e.Error())
  34. return
  35. }
  36. defer func() {
  37. _ = resp.Body.Close()
  38. }()
  39. b, e := ioutil.ReadAll(resp.Body)
  40. if e != nil {
  41. err = fmt.Errorf("resp body read err: %s", e.Error())
  42. return
  43. }
  44. if len(b) == 0 {
  45. err = fmt.Errorf("resp body is empty")
  46. return
  47. }
  48. // 生产环境解密
  49. if utils.RunMode == "release" {
  50. str := string(b)
  51. str = strings.Trim(str, `"`)
  52. b = utils.DesBase64Decrypt([]byte(str), utils.EtaBridgeDesKey)
  53. }
  54. result := new(data_manage.BridgeJiaYueCommonResultData)
  55. if e = json.Unmarshal(b, &result); e != nil {
  56. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
  57. return
  58. }
  59. if result.Code != 200 {
  60. err = fmt.Errorf("result: %s", string(b))
  61. return
  62. }
  63. arr, ok := result.Data.([]string)
  64. if !ok {
  65. err = fmt.Errorf("result data err")
  66. return
  67. }
  68. frequencies = arr
  69. return
  70. }
  71. // GetJiaYueIndexPageListFromBridge 获取指标分页列表
  72. func GetJiaYueIndexPageListFromBridge(param data_manage.BridgeJiaYuePageIndexReq) (total int, items []data_manage.DictIndex, err error) {
  73. url := fmt.Sprint(utils.EtaBridgeUrl, BridgeApiJiaYuePageIndexUrl)
  74. data, e := json.Marshal(param)
  75. if e != nil {
  76. err = fmt.Errorf("data json marshal err: %s", e.Error())
  77. return
  78. }
  79. body := ioutil.NopCloser(strings.NewReader(string(data)))
  80. client := &http.Client{}
  81. req, e := http.NewRequest("POST", url, body)
  82. if e != nil {
  83. err = fmt.Errorf("http create request err: %s", e.Error())
  84. return
  85. }
  86. checkToken := utils.MD5(utils.EtaBridgeAppNameEn + utils.EtaBridgeMd5Key)
  87. contentType := "application/json;charset=utf-8"
  88. req.Header.Set("Content-Type", contentType)
  89. req.Header.Set("Authorization", checkToken)
  90. resp, e := client.Do(req)
  91. if e != nil {
  92. err = fmt.Errorf("http client do err: %s", e.Error())
  93. return
  94. }
  95. defer func() {
  96. _ = resp.Body.Close()
  97. }()
  98. b, e := ioutil.ReadAll(resp.Body)
  99. if e != nil {
  100. err = fmt.Errorf("resp body read err: %s", e.Error())
  101. return
  102. }
  103. if len(b) == 0 {
  104. err = fmt.Errorf("resp body is empty")
  105. return
  106. }
  107. // 生产环境解密
  108. if utils.RunMode == "release" {
  109. str := string(b)
  110. str = strings.Trim(str, `"`)
  111. b = utils.DesBase64Decrypt([]byte(str), utils.EtaBridgeDesKey)
  112. }
  113. result := new(data_manage.BridgeJiaYueCommonResultData)
  114. if e = json.Unmarshal(b, &result); e != nil {
  115. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
  116. return
  117. }
  118. if result.Code != 200 {
  119. err = fmt.Errorf("result: %s", string(b))
  120. return
  121. }
  122. res, ok := result.Data.(data_manage.BridgeJiaYuePageIndexResp)
  123. if !ok {
  124. err = fmt.Errorf("result data err")
  125. return
  126. }
  127. total = res.Total
  128. items = res.List
  129. return
  130. }