package fwh_pro import ( "io" "net/http" "net/url" "strconv" "time" "go.uber.org/zap" ) // 查询事件事件日志 func queryEventAndAlarmLog(sn string, params url.Values) ([]byte, error) { baseURL := "https://energy.franklinwh.com/hes-gateway/manage/iotDeviceRunLogs" token := getLoginToken() userId, _ := getUserId(token) // 构造 query 参数 params.Add("userId", strconv.Itoa(userId)) params.Add("searchName", sn) params.Add("timeType", strconv.Itoa(1)) // 0-通讯时间;1-设备时间 params.Add("pageSize", strconv.FormatUint(REQ_PAGE_SIZE, 10)) params.Add("pageNum", strconv.Itoa(1)) params.Add("land", "ZH_CN") // 拼接到 URL finalURL := baseURL + "?" + params.Encode() // 创建请求 req, err := http.NewRequest( http.MethodGet, finalURL, nil) if err != nil { zap.L().Error("NewRequest failed.", zap.String("err", err.Error())) return nil, err } // 设置 Content-Type 和 Authorization req.Header.Set("Content-Type", "application/json") req.Header.Set("Logintoken", token) // 发送请求 client := &http.Client{Timeout: 5 * time.Second} resp, err := client.Do(req) if err != nil { zap.L().Error("Do Send failed.", zap.String("err", err.Error())) return nil, err } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) // logger.Std.Printf("Status: %s\nBody: %s\n", resp.Status, body) return body, nil } // 查询快照信息 // logTime 格式 YYYY-MM-DD func QueryAlarmSnapshotInfo(sn, logTime string, page int) ([]byte, error) { baseURL := "https://energy.franklinwh.com/hes-gateway/manage/selectAlarmSnapshotList" token := getLoginToken() // 构造 query 参数 params := url.Values{} params.Add("logTime", logTime) params.Add("linkId", sn) params.Add("pageSize", strconv.FormatUint(REQ_PAGE_SIZE, 10)) params.Add("pageNum", strconv.Itoa(page)) params.Add("land", "ZH_CN") // 拼接到 URL finalURL := baseURL + "?" + params.Encode() // 创建请求 req, err := http.NewRequest( http.MethodGet, finalURL, nil) if err != nil { zap.L().Error("NewRequest failed.", zap.String("err", err.Error())) return nil, err } // 设置 Content-Type 和 Authorization req.Header.Set("Content-Type", "application/json") req.Header.Set("Logintoken", token) // 发送请求 client := &http.Client{Timeout: 5 * time.Second} resp, err := client.Do(req) if err != nil { zap.L().Error("Do send failed.", zap.String("err", err.Error())) return nil, err } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) // logger.Std.Printf("Status: %s\nBody: %s\n", resp.Status, body) return body, nil } // 查询所有事件告警 // startTime&endTime 格式 YYYY-MM-DD HH:mm:SS func QueryAllEventAlarm(sn, startTime, endTime string) ([]byte, error) { // 构造 query 参数 params := url.Values{} params.Add("startTime", startTime) params.Add("endTime", endTime) return queryEventAndAlarmLog(sn, params) } // 查询事件日志 // startTime&endTime 格式 YYYY-MM-DD HH:mm:SS func QueryEventLog(sn, startTime, endTime string) ([]byte, error) { // 构造 query 参数 params := url.Values{} params.Add("logType", strconv.Itoa(0)) params.Add("startTime", startTime) params.Add("endTime", endTime) return queryEventAndAlarmLog(sn, params) } // 查询告警日志 // startTime&endTime 格式 YYYY-MM-DD HH:mm:SS // alarmCode - 支持多个code,用‘,’隔开,“”代表查询所有 func QueryAlarmLog(sn, startTime, endTime, alarmCode string) ([]byte, error) { // 构造 query 参数 params := url.Values{} params.Add("logType", strconv.Itoa(1)) params.Add("alarmCode", alarmCode) params.Add("startTime", startTime) params.Add("endTime", endTime) return queryEventAndAlarmLog(sn, params) } // 查询实时告警 func QueryRealtimeAlarm(sn string) ([]byte, error) { // 构造 query 参数 params := url.Values{} params.Add("logType", strconv.Itoa(2)) return queryEventAndAlarmLog(sn, params) }