guoshilong
2023-10-07 a0ae2cb2fe95630bb13795b94dd5f2cfadea7a97
高德地图api接口请求
4 files modified
3 files added
106 ■■■■■ changed files
src/main/java/com/dji/sample/CloudApiSampleApplication.java 7 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/amap/controller/AmapController.java 23 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/amap/service/IAmapService.java 5 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/amap/service/impl/AmapServiceImpl.java 58 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/IWaylineRedisService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java 8 ●●●● patch | view | raw | blame | history
src/main/java/com/dji/sample/CloudApiSampleApplication.java
@@ -3,7 +3,10 @@
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.client.RestTemplateBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.web.client.RestTemplate;
@MapperScan("com.dji.sample.*.dao")
@SpringBootApplication
@@ -15,4 +18,8 @@
        SpringApplication.run(CloudApiSampleApplication.class, args);
    }
    @Bean
    public RestTemplate restTemplate(RestTemplateBuilder builder){
        return builder.build();
    }
}
src/main/java/com/dji/sample/amap/controller/AmapController.java
New file
@@ -0,0 +1,23 @@
package com.dji.sample.amap.controller;
import com.dji.sample.amap.service.IAmapService;
import com.dji.sample.common.model.ResponseResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("map/amap")
public class AmapController {
    @Autowired
    private IAmapService amapService;
    @GetMapping("/searchByKeyword")
    public ResponseResult searchByKeyword(String keyword) {
        return ResponseResult.success(amapService.searchByKeyword(keyword));
    }
}
src/main/java/com/dji/sample/amap/service/IAmapService.java
New file
@@ -0,0 +1,5 @@
package com.dji.sample.amap.service;
public interface IAmapService {
    Object searchByKeyword(String keyword);
}
src/main/java/com/dji/sample/amap/service/impl/AmapServiceImpl.java
New file
@@ -0,0 +1,58 @@
package com.dji.sample.amap.service.impl;
import com.alibaba.druid.support.json.JSONUtils;
import com.dji.sample.amap.service.IAmapService;
import org.codehaus.jettison.json.JSONArray;
import org.codehaus.jettison.json.JSONObject;
import org.codehaus.jettison.json.JSONString;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Service;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
@Service
public class AmapServiceImpl implements IAmapService {
    private  final String AMAP_KEY = "6c3ea75b215f0c0efcbcfdf13273991b";
    private  final String searchByKeywordUrl = "https://restapi.amap.com/v3/assistant/inputtips?&datatype=poi&key=" + AMAP_KEY + "&keywords=";
    @Autowired
    private RestTemplate restTemplate;
    @Override
    public Object searchByKeyword(String keyword) {
        Object result = apiRequestResult(searchByKeywordUrl+keyword);
        return result;
    }
    private Object apiRequestResult(String url) {
        //设置请求头
        HttpHeaders headers = new HttpHeaders();
        //封装请求头
        HttpEntity<MultiValueMap<String, Object>> formEntity = new HttpEntity<MultiValueMap<String, Object>>(headers);
        try {
            //有请求头,有参数请求
            ResponseEntity<String> responseEntity =
                    restTemplate.exchange(url,
                            HttpMethod.GET,
                            formEntity,
                            String.class);
            String body = responseEntity.getBody();
            Object parse = JSONUtils.parse(body);
            // 返回
            return parse;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
src/main/java/com/dji/sample/wayline/service/IWaylineJobService.java
@@ -44,6 +44,7 @@
    /**
     * Issue wayline mission to the dock.
     * 向机场发出航线任务
     * @param param
     * @param customClaim   user info
     * @return
@@ -52,6 +53,7 @@
    /**
     * Issue wayline mission to the dock.
     * 向机场添加航线任务指令
     * @param waylineJob
     * @return
     * @throws SQLException
@@ -60,6 +62,7 @@
    /**
     * Execute the task immediately.
     * 执行立即任务
     * @param jobId
     * @throws SQLException
     * @return
src/main/java/com/dji/sample/wayline/service/IWaylineRedisService.java
@@ -79,6 +79,7 @@
    /**
     * Save the conditional wayline job by the dock to redis.
     * 将条件航线任务保存到redis中
     * @param waylineJob
     */
    void setConditionalWaylineJob(WaylineJobDTO waylineJob);
@@ -99,6 +100,7 @@
    /**
     * Add the wayline job that needs to be issued.
     * 添加需要发布的航路线作业
     * @param waylineJob
     * @return
     */
src/main/java/com/dji/sample/wayline/service/impl/WaylineJobServiceImpl.java
@@ -179,6 +179,7 @@
                }
                WaylineJobDTO waylineJob = waylineJobOpt.get();
                // If it is a conditional task type, add conditions to the job parameters.
                //如果是条件任务类型,需要在任务参数中添加条件。
                addPreparedJob(waylineJob, param, beginTime, endTime);
                ResponseResult response = this.publishOneFlightTask(waylineJob);
@@ -208,7 +209,7 @@
        // value: {workspace_id}:{dock_sn}:{job_id}
        boolean isAdd = waylineRedisService.addPreparedWaylineJob(waylineJob);
        if (!isAdd) {
            throw new RuntimeException("创建准备任务失败。");
            throw new RuntimeException("创建任务失败。");
        }
    }
@@ -220,6 +221,7 @@
        }
        // Issue an immediate task execution command.
        //发出立即任务执行命令
        if (WaylineTaskTypeEnum.IMMEDIATE == waylineJob.getTaskType()) {
            boolean isExecuted = executeFlightTask(waylineJob.getWorkspaceId(), waylineJob.getJobId());
            if (!isExecuted) {
@@ -244,6 +246,7 @@
        }
        // get file url
        //获取航线文件地址
        URL url = waylineFileService.getObjectUrl(waylineJob.getWorkspaceId(), waylineFile.get().getWaylineId());
        WaylineTaskCreateDTO flightTask = WaylineTaskCreateDTO.builder()
@@ -259,6 +262,7 @@
                        .build())
                .build();
        //当任务类型为条件时
        if (WaylineTaskTypeEnum.CONDITION == waylineJob.getTaskType()) {
            if (Objects.isNull(waylineJob.getConditions())) {
                throw new IllegalArgumentException();
@@ -267,10 +271,12 @@
            flightTask.setExecutableConditions(waylineJob.getConditions().getExecutableConditions());
        }
        //发布飞行指令
        ServiceReply serviceReply = messageSender.publishServicesTopic(
                waylineJob.getDockSn(), WaylineMethodEnum.FLIGHT_TASK_PREPARE.getMethod(), flightTask, waylineJob.getJobId());
        if (ResponseResult.CODE_SUCCESS != serviceReply.getResult()) {
            log.info("Prepare task ====> Error code: {}", serviceReply.getResult());
            //飞行失败,更新数据库信息
            this.updateJob(WaylineJobDTO.builder()
                    .workspaceId(waylineJob.getWorkspaceId())
                    .jobId(waylineJob.getJobId())