fwh_emsLog.go 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package fwh_pro
  2. import (
  3. "fmt"
  4. "fwh-toolbox-server/config"
  5. "fwh-toolbox-server/domain"
  6. "net/url"
  7. "strconv"
  8. )
  9. // 召唤EMS日志
  10. func queryCallEmsLog(sn string, dateStr string, logType int) (*domain.FwhResponse[bool], error) {
  11. // 要发送的表单数据
  12. // form := url.Values{}
  13. // form.Set("gatewayId", sn) // SN
  14. // form.Set("logEqSn", sn) // SN
  15. // form.Set("logId", sn) // SN
  16. // form.Set("logTime", dateStr) // 日志时间
  17. // form.Set("logType", strconv.Itoa(logType)) // 日志类型 4-IBG运行日志 7-电池日志 9-设备系统资源监控日志 10-4G日志 11-AWS日志 12-主进程日志
  18. // form.Set("lang", "ZH_CN")
  19. form := map[string]interface{}{
  20. "gatewayId": sn,
  21. "logEqSn": sn,
  22. "logId": sn,
  23. "logTime": dateStr,
  24. "logType": logType,
  25. "lang": "ZH_CN",
  26. }
  27. url := fmt.Sprintf("https://%s/hes-gateway/manage/logFileCall", config.FWH_ENERGY)
  28. response, err := FwhHttpPostUnmarshal[bool](url, form)
  29. if err != nil {
  30. return nil, err
  31. }
  32. return response, nil
  33. }
  34. // 召唤EMS日志
  35. func QueryCallEmsLog(sn string, dateStr string, logType int) error {
  36. // 查询告警快照数据
  37. callRes, err := queryCallEmsLog(sn, dateStr, logType)
  38. if err != nil {
  39. return fmt.Errorf("[QueryCallEmsLog] %s", err.Error())
  40. }
  41. if callRes.Code != 200 {
  42. return fmt.Errorf("[QueryCallEmsLog] 查询失败 code: %d, message: %s", callRes.Code, callRes.Message)
  43. }
  44. if callRes.Result == nil || !*callRes.Result {
  45. return fmt.Errorf("[QueryCallEmsLog] 查询失败 code: %d, result: %v, message: %s", callRes.Code, callRes.Result, callRes.Message)
  46. }
  47. return nil
  48. }
  49. // 查询EMS日志下载地址
  50. func queryEmsLogCallRecord(sn string) (*domain.FwhResponse[[]domain.EmsLogRecordInfo], error) {
  51. // 构造 query 参数
  52. params := url.Values{}
  53. params.Add("linkId", sn) // SN
  54. params.Add("pageIndex", strconv.Itoa(1))
  55. params.Add("pageSize", strconv.FormatUint(REQ_PAGE_SIZE, 10))
  56. params.Add("pageNum", strconv.Itoa(1))
  57. params.Add("lang", "ZH_CN")
  58. reqUrl := fmt.Sprintf("https://%s/hes-gateway/manage/iotDeviceFileRecords", config.FWH_ENERGY)
  59. response, err := FwhHttpGetUnmarshal[[]domain.EmsLogRecordInfo](reqUrl, params)
  60. if err != nil {
  61. return nil, err
  62. }
  63. return response, nil
  64. }
  65. // 查询EMS日志下载地址
  66. func QueryEmsLogCallRecord(sn string, dateStr string, logType int) (*domain.EmsLogRecordInfo, error) {
  67. // 查询告警快照数据
  68. callRecordRes, err := queryEmsLogCallRecord(sn)
  69. if err != nil {
  70. return nil, fmt.Errorf("[QueryEmsLogCallRecord] %s", err.Error())
  71. }
  72. if callRecordRes.Code != 200 {
  73. return nil, fmt.Errorf("[QueryEmsLogCallRecord] 查询失败 code: %d, message: %s", callRecordRes.Code, callRecordRes.Message)
  74. }
  75. for _, record := range *callRecordRes.Result {
  76. if record.LogTime == dateStr && record.CodeType == logType {
  77. return &record, nil
  78. }
  79. }
  80. return nil, fmt.Errorf("[QueryEmsLogCallRecord] 没有召唤日志")
  81. }
  82. // 请求下载EMS日志文件
  83. func QueryDownloadEmsLogFile(filePath string) ([]byte, error) {
  84. reqUrl := fmt.Sprintf("https://%s/hes-upload/v1/file/download/"+filePath, config.FWH_ENERGY)
  85. response, err := FwhHttpGet(reqUrl, url.Values{})
  86. if err != nil {
  87. return nil, err
  88. }
  89. return response.Body, nil
  90. }