package fwh_pro import ( "encoding/json" "fmt" "fwh-toolbox-server/config" "fwh-toolbox-server/domain" "net/url" "strconv" ) // 召唤EMS日志 func queryCallEmsLog(sn string, dateStr string, logType int) ([]byte, error) { // 要发送的表单数据 // form := url.Values{} // form.Set("gatewayId", sn) // SN // form.Set("logEqSn", sn) // SN // form.Set("logId", sn) // SN // form.Set("logTime", dateStr) // 日志时间 // form.Set("logType", strconv.Itoa(logType)) // 日志类型 4-IBG运行日志 7-电池日志 9-设备系统资源监控日志 10-4G日志 11-AWS日志 12-主进程日志 // form.Set("lang", "ZH_CN") form := map[string]interface{}{ "gatewayId": sn, "logEqSn": sn, "logId": sn, "logTime": dateStr, "logType": logType, "lang": "ZH_CN", } url := fmt.Sprintf("https://%s/hes-gateway/manage/logFileCall", config.FWH_ENERGY) response, err := FwhHttpPost(url, form) if err != nil { return nil, err } return response.Body, nil } // 召唤EMS日志 func QueryCallEmsLog(sn string, dateStr string, logType int) error { // 查询告警快照数据 resByte, err := queryCallEmsLog(sn, dateStr, logType) if err != nil { return fmt.Errorf("[QueryCallEmsLog] %s", err.Error()) } var callRes domain.FwhPageResponse[bool] // 反序列化(unmarshal) jsonErr := json.Unmarshal(resByte, &callRes) if jsonErr != nil { return fmt.Errorf("[QueryCallEmsLog] %s", jsonErr) } if callRes.Code != 200 { return fmt.Errorf("[QueryCallEmsLog] 查询失败 code: %d, message: %s", callRes.Code, callRes.Message) } if !callRes.Result { return fmt.Errorf("[QueryCallEmsLog] 查询失败 code: %d, result: %v, message: %s", callRes.Code, callRes.Result, callRes.Message) } return nil } // 查询EMS日志下载地址 func queryEmsLogCallRecord(sn string) ([]byte, error) { // 构造 query 参数 params := url.Values{} params.Add("linkId", sn) // SN params.Add("pageIndex", strconv.Itoa(1)) params.Add("pageSize", strconv.FormatUint(REQ_PAGE_SIZE, 10)) params.Add("pageNum", strconv.Itoa(1)) params.Add("lang", "ZH_CN") reqUrl := fmt.Sprintf("https://%s/hes-gateway/manage/iotDeviceFileRecords", config.FWH_ENERGY) response, err := FwhHttpGet(reqUrl, params) if err != nil { return nil, err } return response.Body, nil } // 查询EMS日志下载地址 func QueryEmsLogCallRecord(sn string, dateStr string, logType int) (*domain.EmsLogRecordInfo, error) { // 查询告警快照数据 resByte, err := queryEmsLogCallRecord(sn) if err != nil { return nil, fmt.Errorf("[QueryEmsLogCallRecord] %s", err.Error()) } var callRecordRes domain.FwhPageResponse[[]domain.EmsLogRecordInfo] // 反序列化(unmarshal) jsonErr := json.Unmarshal(resByte, &callRecordRes) if jsonErr != nil { return nil, fmt.Errorf("[QueryEmsLogCallRecord] %s", jsonErr) } if callRecordRes.Code != 200 { return nil, fmt.Errorf("[QueryEmsLogCallRecord] 查询失败 code: %d, message: %s", callRecordRes.Code, callRecordRes.Message) } for _, record := range callRecordRes.Result { if record.LogTime == dateStr && record.CodeType == logType { return &record, nil } } return nil, fmt.Errorf("[QueryEmsLogCallRecord] 没有召唤日志") } // 请求下载EMS日志文件 func QueryDownloadEmsLogFile(filePath string) ([]byte, error) { reqUrl := fmt.Sprintf("https://%s/hes-upload/v1/file/download/"+filePath, config.FWH_ENERGY) response, err := FwhHttpGet(reqUrl, url.Values{}) if err != nil { return nil, err } return response.Body, nil }