base_from_wind.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package services
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "github.com/rdlucklib/rdluck_tools/http"
  6. "hongze/hongze_edb_lib/services/alarm_msg"
  7. "hongze/hongze_edb_lib/utils"
  8. "math/rand"
  9. "time"
  10. )
  11. type EdbDataFromWind struct {
  12. Close map[string]float64 `json:"CLOSE"`
  13. Dt map[string]int64 `json:"DT"`
  14. ErrorCode map[string]int64 `json:"ErrorCode"`
  15. ErrMsg string
  16. }
  17. // GetEdbDataFromWind 获取wind数据
  18. func GetEdbDataFromWind(edbCode, startDate, endDate string) (item *EdbDataFromWind, err error) {
  19. windUrl := getRandWindUrl()
  20. thsUrl := windUrl + `edbInfo/wind?EdbCode=%s&StartDate=%s&EndDate=%s`
  21. thsUrl = fmt.Sprintf(thsUrl, edbCode, startDate, endDate)
  22. utils.FileLog.Info(fmt.Sprintf("windUrl:%s", thsUrl))
  23. body, err := http.Get(thsUrl)
  24. fmt.Println("GetEdbDataByWind body:")
  25. fmt.Println(string(body))
  26. utils.FileLog.Info(fmt.Sprint("wind result:", string(body)))
  27. if err != nil {
  28. return
  29. }
  30. item = new(EdbDataFromWind)
  31. err = json.Unmarshal(body, &item)
  32. //异常的话,需要邮件通知
  33. if len(item.ErrorCode) > 0 {
  34. if item.ErrorCode["0"] != 0 {
  35. go alarm_msg.SendAlarmMsg(fmt.Sprintf("wind数据服务异常,edbCode:%s,ErrorCode:%d", edbCode, item.ErrorCode["0"]), 3)
  36. }
  37. }
  38. return
  39. }
  40. // getRandWindUrl 获取wind的url
  41. func getRandWindUrl() string {
  42. windUrlLen := len(utils.Hz_Wind_Data_Url_LIST)
  43. rand.Seed(time.Now().UnixNano())
  44. i := rand.Intn(windUrlLen) //生成随机整数(不包含最右边的整数,所以不需要将域名的长度-1)
  45. return utils.Hz_Wind_Data_Url_LIST[i]
  46. }