package util import ( "encoding/json" "fmt" "io/ioutil" "net/http" "pji_desktop_http/common/config/c_pji" "sync" ) func ContainsKey(m *sync.Map, key string) bool { _, found := m.Load(key) return found } // GetExactedMapFileById 根据id获取解析后的地图文件列表 func GetExactedMapFileById(id string) (fileList []string, err error) { url := c_pji.SenceOssDownUrl + id // 构建请求 req, err := http.NewRequest("GET", url, nil) if err != nil { fmt.Println("Error creating request:", err) return nil, err } // 添加认证头 req.Header.Set("Authorization", c_pji.Token) // 发送请求 client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Println("Error executing request:", err) return nil, err } defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) // Json转换为map var data map[string]interface{} err = json.Unmarshal(body, &data) // 提取响应体中的data字段 dataField, ok := data["data"].([]interface{}) if !ok { fmt.Println("Error extracting data field") return nil, err } // 转换字符串切片 for _, item := range dataField { str, ok := item.(string) if !ok { fmt.Println("Error converting item to string") return nil, err } fileList = append(fileList, str) } return fileList, nil } // GetExactedMapFileByIds 根据id列表获取解析后的地图文件列表 func GetExactedMapFileByIds(ids []string) (fileList []string, err error) { allFileList := make([]string, 0) for i, id := range ids { fileList, err := GetExactedMapFileById(id) if err != nil { return nil, err } if i != 0 { fileList = FilterBySuffixes(fileList, "build_map.bag") } allFileList = append(allFileList, fileList...) } return allFileList, nil } // GetRosFileById 根据id获取对应的原始bag文件 func GetRosFileById(id string) (file string, err error) { url := c_pji.SenceInfoUrl + id // 构建请求 req, err := http.NewRequest("GET", url, nil) if err != nil { fmt.Println("Error creating request:", err) return "", err } // 添加认证头 req.Header.Set("Authorization", c_pji.Token) // 发送请求 client := &http.Client{} resp, err := client.Do(req) if err != nil { fmt.Println("Error executing request:", err) return "", err } defer resp.Body.Close() body, _ := ioutil.ReadAll(resp.Body) // Json转换为map var data map[string]interface{} err = json.Unmarshal(body, &data) //fmt.Println("data:", data) // 提取响应体中的data字段 dataField, ok := data["data"].(map[string]interface{}) if !ok { fmt.Println("Error extracting data field") return "", err } // 从 data字段中提取 rosField rosField, ok := dataField["rosFileId"].(string) if !ok { fmt.Println("Error extracting rosFileId field") return "", err } //println("rosFileId:", rosField) return rosField, nil }