base_from_jiayue.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. package services
  2. import (
  3. "encoding/json"
  4. "eta/eta_index_lib/models"
  5. "eta/eta_index_lib/services/alarm_msg"
  6. "eta/eta_index_lib/utils"
  7. "fmt"
  8. "io/ioutil"
  9. "net/http"
  10. "strings"
  11. )
  12. var (
  13. BridgeApiJiaYueIndexDataUrl = "/api/index_data/jiayue/index_data" // 获取指标数据API
  14. )
  15. // GetJiaYueIndexDataFromBridge 从桥接服务获取指标数据
  16. func GetJiaYueIndexDataFromBridge(param models.BridgeJiaYueIndexDataParams) (indexData models.BridgeJiaYueIndexAndData, err error) {
  17. defer func() {
  18. if err != nil {
  19. b, _ := json.Marshal(param)
  20. tips := fmt.Sprintf("桥接服务-获取嘉悦指标数据, err: %s, params: %s", err.Error(), string(b))
  21. go alarm_msg.SendAlarmMsg(tips, 3)
  22. }
  23. }()
  24. url := fmt.Sprint(utils.EtaBridgeUrl, BridgeApiJiaYueIndexDataUrl)
  25. data, e := json.Marshal(param)
  26. if e != nil {
  27. err = fmt.Errorf("data json marshal err: %s", e.Error())
  28. return
  29. }
  30. body := ioutil.NopCloser(strings.NewReader(string(data)))
  31. client := &http.Client{}
  32. req, e := http.NewRequest("POST", url, body)
  33. if e != nil {
  34. err = fmt.Errorf("http create request err: %s", e.Error())
  35. return
  36. }
  37. checkToken := utils.MD5(utils.EtaBridgeAppNameEn + utils.EtaBridgeMd5Key)
  38. contentType := "application/json;charset=utf-8"
  39. req.Header.Set("Content-Type", contentType)
  40. req.Header.Set("Authorization", checkToken)
  41. resp, e := client.Do(req)
  42. if e != nil {
  43. err = fmt.Errorf("http client do err: %s", e.Error())
  44. return
  45. }
  46. defer func() {
  47. _ = resp.Body.Close()
  48. }()
  49. b, e := ioutil.ReadAll(resp.Body)
  50. if e != nil {
  51. err = fmt.Errorf("resp body read err: %s", e.Error())
  52. return
  53. }
  54. if len(b) == 0 {
  55. err = fmt.Errorf("resp body is empty")
  56. return
  57. }
  58. // 生产环境解密
  59. if utils.RunMode == "release" {
  60. str := string(b)
  61. str = strings.Trim(str, `"`)
  62. b = utils.DesBase64Decrypt([]byte(str), utils.EtaBridgeDesKey)
  63. }
  64. result := new(models.BridgeJiaYueResultIndexData)
  65. if e = json.Unmarshal(b, &result); e != nil {
  66. err = fmt.Errorf("result unmarshal err: %s\nresult: %s", e.Error(), string(b))
  67. return
  68. }
  69. if result.Code != 200 {
  70. err = fmt.Errorf("result: %s", string(b))
  71. return
  72. }
  73. indexData = result.Data
  74. return
  75. }