edb_terminal.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package services
  2. import (
  3. "errors"
  4. "eta/eta_index_lib/models"
  5. "eta/eta_index_lib/utils"
  6. )
  7. // GetTerminal 获取终端信息
  8. func GetTerminal(source int, oldTerminalCode string) (edbTerminal *models.EdbTerminal, err error) {
  9. if source == utils.DATA_SOURCE_WIND {
  10. // todo 确认wind_data_url字段存的是TerminalCode终端编码
  11. tmpConfig := new(models.EdbConfig)
  12. tmpConfig, err = models.GetConfigDetailByCode("wind_terminal_code")
  13. if err != nil && err.Error() != utils.ErrNoRow() {
  14. err = errors.New("获取配置的wind地址失败,err:" + err.Error())
  15. return
  16. }
  17. err = nil
  18. if tmpConfig != nil {
  19. oldTerminalCode = tmpConfig.ConfigValue
  20. //return
  21. }
  22. }
  23. if oldTerminalCode != "" {
  24. edbTerminal, err = models.GetEdbTerminalByCode(oldTerminalCode)
  25. if err != nil {
  26. return
  27. }
  28. return
  29. }
  30. // 配置中没有的话,那么就从分组获取, todo 改成从edb_info指标库里根据终端码进行分组的指标数据统计
  31. list, err := models.GetEdbCountGroupByTerminal(source)
  32. if err != nil {
  33. return
  34. }
  35. //windUrlNum := 0
  36. //获取对应的配置url
  37. terminalNumMap := make(map[string]int)
  38. for _, v := range list {
  39. terminalNumMap[v.ServerUrl] = v.Total
  40. }
  41. terminalList, err := models.GetEdbTerminalListBySource(source)
  42. if err != nil {
  43. return
  44. }
  45. if len(terminalList) == 0 {
  46. err = errors.New("终端地址未配置")
  47. return
  48. }
  49. num := 0
  50. edbTerminal = new(models.EdbTerminal)
  51. for _, v := range terminalList {
  52. tmpNum := terminalNumMap[v.TerminalCode]
  53. if edbTerminal == nil {
  54. edbTerminal = v
  55. num = tmpNum
  56. } else if tmpNum < num {
  57. edbTerminal = v
  58. num = tmpNum
  59. }
  60. }
  61. if edbTerminal == nil {
  62. err = errors.New("获取配置的终端地址失败")
  63. return
  64. }
  65. /*if edbTerminal != nil {
  66. windUrl = edbTerminal.ServerUrl
  67. terminalCode = edbTerminal.TerminalCode
  68. }*/
  69. return
  70. }
  71. func GetFirstTerminal(source int, oldTerminalCode string) (edbTerminal *models.EdbTerminal, err error) {
  72. if oldTerminalCode != "" {
  73. edbTerminal, err = models.GetEdbTerminalByCode(oldTerminalCode)
  74. if err != nil {
  75. return
  76. }
  77. return
  78. }
  79. edbTerminal, err = models.GetEdbTerminalFirstBySource(source)
  80. if err != nil {
  81. if err.Error() == utils.ErrNoRow() {
  82. err = errors.New("终端未配置")
  83. return
  84. }
  85. return
  86. }
  87. return
  88. }