base_from_pb.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package services
  2. import (
  3. "encoding/json"
  4. "eta/eta_index_lib/models"
  5. "eta/eta_index_lib/utils"
  6. "fmt"
  7. "github.com/rdlucklib/rdluck_tools/http"
  8. "net/url"
  9. )
  10. // GetEdbDataFromPb 获取Pb数据
  11. func GetEdbDataFromPb(edbCode, startDate, endDate, edbTerminalCode string) (item *models.EdbDataFromPb, err error) {
  12. /* if utils.Hz_Pb_Data_Url == `` {
  13. err = errors.New("彭博接口未配置")
  14. return
  15. }*/
  16. terminal, err := GetTerminal(utils.DATA_SOURCE_PB, edbTerminalCode)
  17. if err != nil {
  18. err = fmt.Errorf("获取彭博接口配置出错 Err: %s", err)
  19. return
  20. }
  21. if terminal.ServerUrl == "" {
  22. err = fmt.Errorf("彭博接口未配置")
  23. return
  24. }
  25. if edbTerminalCode == "" {
  26. // 设置指标与终端关系的缓存
  27. terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + edbCode
  28. _ = utils.Rc.Put(terminalCodeCacheKey, terminal.TerminalCode, utils.GetTodayLastSecond())
  29. }
  30. edbCode = url.QueryEscape(edbCode)
  31. bpUrl := terminal.ServerUrl + `edbInfo/pb?EdbCode=%s&StartDate=%s&EndDate=%s`
  32. bpUrl = fmt.Sprintf(bpUrl, edbCode, startDate, endDate)
  33. utils.FileLog.Info("bpUrl:" + bpUrl)
  34. body, err := http.Get(bpUrl)
  35. if err != nil {
  36. utils.FileLog.Info("GetEdbDataByPb Err:" + err.Error())
  37. return
  38. }
  39. utils.FileLog.Info("GetEdbDataByPb result:" + string(body))
  40. item = new(models.EdbDataFromPb)
  41. err = json.Unmarshal(body, &item)
  42. if err != nil {
  43. utils.FileLog.Info("GetEdbDataByPb Unmarshal Err:" + err.Error())
  44. return
  45. }
  46. if item == nil {
  47. err = fmt.Errorf("彭博数据转结构体失败,body:" + string(body))
  48. return
  49. }
  50. edbCode, _ = url.QueryUnescape(edbCode)
  51. return
  52. }
  53. // GetEdbDataFromPbFinance 获取Pb财务数据
  54. func GetEdbDataFromPbFinance(companyCode, edbCode, startDate, endDate, edbTerminalCode string) (item *models.EdbDataFromPb, err error) {
  55. /*if utils.Hz_Pb_Data_Url == `` {
  56. err = errors.New("彭博接口未配置")
  57. return
  58. }*/
  59. terminal, err := GetTerminal(utils.DATA_SOURCE_PB_FINANCE, edbTerminalCode)
  60. if err != nil {
  61. err = fmt.Errorf("获取彭博接口配置出错 Err: %s", err)
  62. return
  63. }
  64. if terminal.ServerUrl == "" {
  65. err = fmt.Errorf("彭博接口未配置")
  66. return
  67. }
  68. if edbTerminalCode == "" {
  69. // 设置指标与终端关系的缓存
  70. terminalCodeCacheKey := utils.CACHE_EDB_TERMINAL_CODE_URL + companyCode + "&&" + edbCode
  71. _ = utils.Rc.Put(terminalCodeCacheKey, terminal.TerminalCode, utils.GetTodayLastSecond())
  72. }
  73. companyCode = url.QueryEscape(companyCode)
  74. edbCode = url.QueryEscape(edbCode)
  75. bpUrl := terminal.ServerUrl + `edbInfo/pb/finance?CompanyCode=%s&EdbCode=%s&StartDate=%s&EndDate=%s`
  76. bpUrl = fmt.Sprintf(bpUrl, companyCode, edbCode, startDate, endDate)
  77. utils.FileLog.Info("bpUrl:" + bpUrl)
  78. body, err := http.Get(bpUrl)
  79. if err != nil {
  80. utils.FileLog.Info("GetEdbDataByPb Err:" + err.Error())
  81. return
  82. }
  83. utils.FileLog.Info("GetEdbDataByPb result:" + string(body))
  84. item = new(models.EdbDataFromPb)
  85. err = json.Unmarshal(body, &item)
  86. if err != nil {
  87. utils.FileLog.Info("GetEdbDataByPb Unmarshal Err:" + err.Error())
  88. return
  89. }
  90. if item == nil {
  91. err = fmt.Errorf("彭博财务数据转结构体失败,body:" + string(body))
  92. return
  93. }
  94. edbCode, _ = url.QueryUnescape(edbCode)
  95. return
  96. }