吉安感知网项目-后端
linwei
2 days ago 51a551a7f8eae7654f973d45cd2fa2952774673d
drone-service/drone-gd/src/main/java/org/sxkj/gd/xingtu/JianXingtuApiService.java
@@ -1,6 +1,8 @@
package org.sxkj.gd.xingtu;
import com.alibaba.fastjson.JSON;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springblade.core.redis.cache.BladeRedis;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.StringUtil;
@@ -14,6 +16,7 @@
import org.sxkj.gd.workorder.dto.GdXingtuFlyTaskSaveDTO;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
@@ -23,6 +26,7 @@
 * @Date 2026/1/26 15:22
 * @Version 1.0
 */
@Slf4j
@Service
public class JianXingtuApiService {
@@ -38,7 +42,8 @@
   /**
    * 获取星图登录token
    * @return  token
    *
    * @return token
    */
   @SneakyThrows
   public String getToken() {
@@ -80,6 +85,7 @@
   /**
    * 设备列表-无人机
    *
    * @param name 名称
    * @return 接口响应
    */
@@ -90,6 +96,7 @@
   /**
    * 设备列表-机巢
    *
    * @param name 名称
    * @return 接口响应
    */
@@ -100,6 +107,7 @@
   /**
    * 新增飞行任务
    *
    * @param param 请求参数
    * @return 接口响应
    */
@@ -121,23 +129,40 @@
      if (StringUtil.isBlank(token) || "获取token失败".equals(token)) {
         return R.fail("获取token失败");
      }
      HttpHeaders headers = new HttpHeaders();
      headers.set("authorization", token);
      HttpEntity<Object> entity = new HttpEntity<>(body, headers);
      ResponseEntity<R> response = restTemplate.exchange(url, HttpMethod.POST, entity, R.class);
      if (response.getStatusCode().is2xxSuccessful()) {
         R responseBody = response.getBody();
         if (responseBody != null) {
            return responseBody;
      try {
         HttpHeaders headers = new HttpHeaders();
         headers.set("authorization", token);
         log.info("请求外部接口: {} {}", url, JSON.toJSONString(body));
         HttpEntity<Object> entity = new HttpEntity<>(body, headers);
         ResponseEntity<R> response = restTemplate.exchange(url, HttpMethod.POST, entity, R.class);
         log.info("响应外部接口: {}", response);
         if (response.getStatusCode().is2xxSuccessful()) {
            R responseBody = response.getBody();
            if (responseBody != null) {
               // 检查接口内部返回的success状态
               if (!responseBody.isSuccess()) {
                  // 提取错误信息,优先使用msg字段
                  String errorMsg = responseBody.getMsg();
                  if (StringUtil.isBlank(errorMsg)) {
                     errorMsg = "接口调用失败";
                  }
                  log.warn("外部接口返回失败: {}", errorMsg);
                  return R.fail(errorMsg);
               }
               return responseBody;
            }
            return R.fail("接口返回为空");
         }
         return R.fail("接口返回为空");
         return R.fail("请求外部接口失败,HTTP状态码: " + response.getStatusCode());
      } catch (Exception e) {
         log.error("请求外部接口异常: ", e);
         return R.fail("请求外部接口异常: " + e.getMessage());
      }
      return R.fail("请求外部接口失败");
   }
   /**
    * 解析JSON字符串为Map
    *
    * @param input JSON字符串
    * @return 解析后的Map
    */