u_map.go 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. package util
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io"
  6. "io/ioutil"
  7. "net/http"
  8. "os"
  9. "pji_desktop_http/common/config/c_pji"
  10. "sync"
  11. )
  12. func ContainsKey(m *sync.Map, key string) bool {
  13. _, found := m.Load(key)
  14. return found
  15. }
  16. // GetExactedMapFileById 根据id获取解析后的地图文件列表
  17. func GetExactedMapFileById(id string) (fileList []string, err error) {
  18. url := c_pji.SenceOssDownUrl + id
  19. // 构建请求
  20. req, err := http.NewRequest("GET", url, nil)
  21. if err != nil {
  22. fmt.Println("Error creating request:", err)
  23. return nil, err
  24. }
  25. // 添加认证头
  26. req.Header.Set("Authorization", c_pji.Token)
  27. // 发送请求
  28. client := &http.Client{}
  29. resp, err := client.Do(req)
  30. if err != nil {
  31. fmt.Println("Error executing request:", err)
  32. return nil, err
  33. }
  34. defer resp.Body.Close()
  35. body, _ := ioutil.ReadAll(resp.Body)
  36. // Json转换为map
  37. var data map[string]interface{}
  38. err = json.Unmarshal(body, &data)
  39. // 提取响应体中的data字段
  40. dataField, ok := data["data"].([]interface{})
  41. if !ok {
  42. fmt.Println("Error extracting data field")
  43. return nil, err
  44. }
  45. // 转换字符串切片
  46. for _, item := range dataField {
  47. str, ok := item.(string)
  48. if !ok {
  49. fmt.Println("Error converting item to string")
  50. return nil, err
  51. }
  52. fileList = append(fileList, str)
  53. }
  54. return fileList, nil
  55. }
  56. // GetExactedMapFileByIds 根据id列表获取解析后的地图文件列表
  57. func GetExactedMapFileByIds(ids []string) (fileList []string, err error) {
  58. allFileList := make([]string, 0)
  59. for i, id := range ids {
  60. fileList, err := GetExactedMapFileById(id)
  61. if err != nil {
  62. return nil, err
  63. }
  64. if i != 0 {
  65. fileList = FilterBySuffixes(fileList, "build_map.bag")
  66. }
  67. allFileList = append(allFileList, fileList...)
  68. }
  69. return allFileList, nil
  70. }
  71. // GetRosFileById 根据id获取对应的原始bag文件
  72. func GetRosFileById(id string) (file string, err error) {
  73. url := c_pji.SenceInfoUrl + id
  74. // 构建请求
  75. req, err := http.NewRequest("GET", url, nil)
  76. if err != nil {
  77. fmt.Println("Error creating request:", err)
  78. return "", err
  79. }
  80. // 添加认证头
  81. req.Header.Set("Authorization", c_pji.Token)
  82. // 发送请求
  83. client := &http.Client{}
  84. resp, err := client.Do(req)
  85. if err != nil {
  86. fmt.Println("Error executing request:", err)
  87. return "", err
  88. }
  89. defer resp.Body.Close()
  90. body, _ := ioutil.ReadAll(resp.Body)
  91. // Json转换为map
  92. var data map[string]interface{}
  93. err = json.Unmarshal(body, &data)
  94. //fmt.Println("data:", data)
  95. // 提取响应体中的data字段
  96. dataField, ok := data["data"].(map[string]interface{})
  97. if !ok {
  98. fmt.Println("Error extracting data field")
  99. return "", err
  100. }
  101. // 从 data字段中提取 rosField
  102. rosField, ok := dataField["rosFileId"].(string)
  103. if !ok {
  104. fmt.Println("Error extracting rosFileId field")
  105. return "", err
  106. }
  107. //println("rosFileId:", rosField)
  108. return rosField, nil
  109. }
  110. func Downloadfile(url, filepath string) error {
  111. r, err := http.Get(url)
  112. if err != nil {
  113. fmt.Println("err", err.Error())
  114. }
  115. defer r.Body.Close()
  116. f, err := os.Create(filepath)
  117. if err != nil {
  118. fmt.Println("err", err.Error())
  119. }
  120. defer f.Close()
  121. n, err := io.Copy(f, r.Body)
  122. fmt.Println(n, err)
  123. return err
  124. }