package com.stylefeng.guns.modular.system.util;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONObject;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.boot.ApplicationArguments;
|
import org.springframework.boot.ApplicationRunner;
|
import org.springframework.http.HttpEntity;
|
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.MediaType;
|
import org.springframework.stereotype.Component;
|
import org.springframework.util.LinkedMultiValueMap;
|
import org.springframework.util.MultiValueMap;
|
import org.springframework.web.client.RestTemplate;
|
|
|
/**
|
* 高德猎鹰服务
|
*/
|
@Component
|
public class GDFalconUtil implements ApplicationRunner {
|
|
private String key = "86b7352a4b7dcd688f7308c8c61d043b";
|
|
@Autowired
|
private RestTemplate restTemplate;
|
|
private static String serverId = null;
|
|
|
public String getServerId() {
|
return serverId;
|
}
|
|
/**
|
* 服务启动后执行的代码
|
* @param args
|
* @throws Exception
|
*/
|
@Override
|
public void run(ApplicationArguments args) throws Exception {
|
// this.init();
|
}
|
|
|
|
/**
|
* 初始化创建服务
|
*/
|
public void init(){
|
if(serverId == null){
|
JSONArray jsonArray = this.selectServer();
|
if(null == jsonArray){
|
serverId = this.createServer("server");
|
}else{
|
serverId = jsonArray.getJSONObject(0).getString("sid");
|
}
|
}
|
|
}
|
|
|
/**
|
* 创建新的服务
|
* @return
|
*/
|
public String createServer(String name){
|
String url = "https://tsapi.amap.com/v1/track/service/add";
|
//调用推送
|
HttpHeaders headers = new HttpHeaders();
|
// 以表单的方式提交
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
//将请求头部和参数合成一个请求
|
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
|
params.add("key", key);
|
params.add("name", name);
|
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
|
String s = restTemplate.postForObject(url, requestEntity , String.class);
|
JSONObject jsonObject = JSON.parseObject(s);
|
if(jsonObject.getIntValue("errcode") == 10000){
|
JSONObject data = jsonObject.getJSONObject("data");
|
if(null != data){
|
return data.getString("sid");
|
}
|
}
|
return null;
|
}
|
|
|
/**
|
* 查询服务
|
* @return
|
*/
|
private JSONArray selectServer(){
|
String url = "https://tsapi.amap.com/v1/track/service/list?key=" + key;
|
String forObject = restTemplate.getForObject(url, String.class);
|
JSONObject jsonObject = JSON.parseObject(forObject);
|
if(jsonObject.getIntValue("errcode") == 10000){
|
JSONObject data = jsonObject.getJSONObject("data");
|
if(null != data){
|
return data.getJSONArray("results");
|
}
|
}
|
return null;
|
}
|
|
|
/**
|
* 创建终端数据
|
* @param name
|
* @return
|
*/
|
public String createTerminal(String name){
|
String tid = this.selectTerminal(name);
|
if(tid != null){
|
return tid;
|
}
|
String url = "https://tsapi.amap.com/v1/track/terminal/add";
|
//调用推送
|
HttpHeaders headers = new HttpHeaders();
|
// 以表单的方式提交
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
//将请求头部和参数合成一个请求
|
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
|
params.add("key", key);
|
params.add("sid", serverId);
|
params.add("name", name);
|
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
|
String s = restTemplate.postForObject(url, requestEntity , String.class);
|
JSONObject jsonObject = JSON.parseObject(s);
|
if(jsonObject.getIntValue("errcode") == 10000){
|
JSONObject data = jsonObject.getJSONObject("data");
|
return data.getString("tid");
|
}
|
System.err.println(jsonObject.getString("errmsg"));
|
return null;
|
}
|
|
|
/**
|
* 查询终端
|
* @param name
|
* @return
|
*/
|
public String selectTerminal(String name){
|
String url = "https://tsapi.amap.com/v1/track/terminal/list?key=" + key + "&name=" + name;
|
String forObject = restTemplate.getForObject(url, String.class);
|
JSONObject jsonObject = JSON.parseObject(forObject);
|
if(jsonObject.getIntValue("errcode") == 10000){
|
JSONObject data = jsonObject.getJSONObject("data");
|
int count = 0;
|
if(null != data){
|
count = data.getIntValue("count");
|
}
|
if(count > 0){
|
JSONObject results = data.getJSONArray("results").getJSONObject(0);
|
return results.getString("tid");
|
}else{
|
return this.createTerminal(name);
|
}
|
}
|
return null;
|
}
|
|
|
/**
|
* 创建轨迹
|
* @param tid 终端id
|
* @return
|
*/
|
public String createTrack(String tid){
|
String url = "https://tsapi.amap.com/v1/track/trace/add";
|
//调用推送
|
HttpHeaders headers = new HttpHeaders();
|
// 以表单的方式提交
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
//将请求头部和参数合成一个请求
|
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
|
params.add("key", key);
|
params.add("sid", serverId);
|
params.add("tid", tid);
|
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
|
String s = restTemplate.postForObject(url, requestEntity , String.class);
|
JSONObject jsonObject = JSON.parseObject(s);
|
if(jsonObject.getIntValue("errcode") == 10000){
|
return jsonObject.getString("data");
|
}
|
System.err.println(jsonObject.getString("errmsg"));
|
return null;
|
}
|
|
|
/**
|
* 删除轨迹
|
* @param tid 终端id
|
* @param trid 轨迹id
|
*/
|
public void deleteTrack(String tid, String trid){
|
String url = "https://tsapi.amap.com/v1/track/trace/delete";
|
//调用推送
|
HttpHeaders headers = new HttpHeaders();
|
// 以表单的方式提交
|
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
|
//将请求头部和参数合成一个请求
|
MultiValueMap<String, Object> params = new LinkedMultiValueMap<>();
|
params.add("key", key);
|
params.add("sid", serverId);
|
params.add("tid", tid);
|
params.add("trid", trid);
|
HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers);
|
String s = restTemplate.postForObject(url, requestEntity , String.class);
|
JSONObject jsonObject = JSON.parseObject(s);
|
if(jsonObject.getIntValue("errcode") != 10000){
|
System.err.println(jsonObject.getString("errmsg"));
|
}
|
}
|
|
|
//
|
// public Map<String, Object> queryTrsearch(){
|
//
|
// }
|
}
|