xiaoyong931011
2022-09-22 cf0f93a4c122121b205ab52bb5fc3b3b93682670
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
package cc.mrbird.febs.mall.service.impl;
 
import cc.mrbird.febs.common.utils.HttpCurlUtil;
import cc.mrbird.febs.mall.entity.MallElectronicFence;
import cc.mrbird.febs.mall.mapper.MallElectronicFenceMapper;
import cc.mrbird.febs.mall.service.IMallElectronicFenceService;
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.methods.HttpPost;
import org.springframework.stereotype.Service;
 
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
 
@Slf4j
@Service
@RequiredArgsConstructor
public class IMallElectronicFenceServiceImpl  extends ServiceImpl<MallElectronicFenceMapper, MallElectronicFence> implements IMallElectronicFenceService {
    @Override
    public String trackServiceAdd(String gaodeKey, String serviceName) {
        String url = "https://tsapi.amap.com/v1/track/service/add?key="+gaodeKey+"&name="+serviceName;
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        map.put("key",gaodeKey);
        map.put("name",serviceName);
        String  param= JSON.toJSONString(map);
        log.info(param);
        String result = null;
        try {
            result = HttpCurlUtil.sendPostHttp(url, param);
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("创建服务"+result);
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String errcode = maps.get("errcode").toString();
        if(!"10000".equals(errcode)){
            return "fail";
        }
        String str2 = maps.get("data").toString();
        cn.hutool.json.JSONObject maps2 = JSONUtil.parseObj(str2);
        String serviceId = maps2.get("sid").toString();
        if(null!=serviceId&&!"".equals(serviceId)){
            return serviceId;
        }else{
            return "fail";
        }
    }
 
    @Override
    public String trackServiceInfo(String gaodeKey) {
        String url = "https://tsapi.amap.com/v1/track/service/list";
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        //高德Key
        //用户在高德地图官网申请Web服务API类型Key
        map.put("key",gaodeKey);
        log.info("查询服务"+JSON.toJSONString(map));
        String result = null;
        try {
            result = HttpCurlUtil.sendGetHttp(url, map);
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("查询服务"+result);
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String errCode = maps.get("errcode").toString();
        if("10000".equals(errCode)){
            String dataStr = maps.get("data").toString();
            return dataStr;
        }else{
            return "fail";
        }
    }
 
    @Override
    public String fenceAdd(String gaodeKey, String serviceId, String fenceName, String points) {
        String url = "https://tsapi.amap.com/v1/track/geofence/add/polygon?key="+gaodeKey+"" +
                "&sid="+serviceId+"&name="+fenceName+"&points="+points;
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        //高德Key
        //用户在高德地图官网申请Web服务API类型Key
        map.put("key",gaodeKey);
        //服务唯一编号
        //sid为猎鹰service唯一编号
        map.put("sid",serviceId);
        //围栏名称
        //在同一个 sid 下不可重复,不可为空。
        //支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字,长度不大于128个字符
        map.put("name",fenceName);
        //多边形顶点坐标
        //格式 X1,Y1;X2,Y2;...
        //顶点顺序可按顺时针或逆时针排列;
        //1. 普通地理围栏:顶点个数在3-100个之间,外接矩形面积<100平方公里;
        //2. 大范围地理围栏:顶点个数在3-100个之间,外接矩形面积小于1000平方公里,请您通过工单与我们联系。
        map.put("points",points);
        String  param= JSON.toJSONString(map);
 
        log.info("创建多边形围栏"+param);
        String result = null;
        try {
            result = HttpCurlUtil.sendPostHttp(url, param);
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        log.info("创建多边形围栏"+result);
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String errCode = maps.get("errcode").toString();
        if("10000".equals(errCode)){
            String data = maps.get("data").toString();
            cn.hutool.json.JSONObject dataObject = JSONUtil.parseObj(data);
            String gfid = dataObject.get("gfid").toString();
            if(null!=gfid&&!"".equals(gfid)){
                return gfid;
            }else{
                return "fail";
            }
        }else{
            return "fail";
        }
    }
 
    @Override
    public String fenceUpdate(String gaodeKey, String serviceId, String fenceId, String fenceName, String points) {
        String url = "https://tsapi.amap.com/v1/track/geofence/update/polygon?key="+gaodeKey
                +"&sid="+serviceId+"&gfid="+fenceId+"&name="+fenceName+"&points="+points;
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        //高德Key
        //用户在高德地图官网申请Web服务API类型Key
        map.put("key",gaodeKey);
        //服务唯一编号
        //sid为猎鹰service唯一编号
        map.put("sid",serviceId);
        //围栏id
        //围栏唯一标识,指定要更新的围栏
        map.put("gfid",fenceId);
        //围栏名称
        //在同一个 sid 下不可重复,不可为空。
        //支持中文、英文大小字母、英文下划线"_"、英文横线"-"和数字,长度不大于128个字符
        map.put("name",fenceName);
        //多边形顶点坐标
        //格式 X1,Y1;X2,Y2;...
        //顶点顺序可按顺时针或逆时针排列;
        //1. 普通地理围栏:顶点个数在3-100个之间,外接矩形面积<100平方公里;
        //2. 大范围地理围栏:顶点个数在3-100个之间,外接矩形面积小于1000平方公里,请您通过工单与我们联系。
        map.put("points",points);
        String  param= JSON.toJSONString(map);
        log.info("更新多边形围栏"+param);
        String result = null;
        try {
            result = HttpCurlUtil.sendPostHttp(url, param);
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("更新多边形围栏"+result);
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String errCode = maps.get("errcode").toString();
        if("10000".equals(errCode)){
            return errCode;
        }else{
            return "fail";
        }
    }
 
    @Override
    public String fenceList(String gaodeKey, String serviceId, String fenceIds) {
        String url = "https://tsapi.amap.com/v1/track/geofence/list";
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        //高德Key
        //用户在高德地图官网申请Web服务API类型Key
        map.put("key",gaodeKey);
        //服务唯一编号
        //sid为猎鹰service唯一编号
        map.put("sid",serviceId);
        //围栏的唯一标识
        //支持一次传入多个,以","分割;
        //单次最多支持100个,如超出将只截取前100个作为输入。
        //否;
        //如传入,则只返回由 gfids 所指定的围栏,不分页(忽略 page 和 pagesize 参数);
        //如不传,则分页返回所有围栏;
        map.put("gfids",fenceIds);
        log.info("查询围栏"+JSON.toJSONString(map));
        String result = null;
        try {
            result = HttpCurlUtil.sendGetHttp(url, map);
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("查询围栏"+result);
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String errCode = maps.get("errcode").toString();
        if("10000".equals(errCode)){
            String dataStr = maps.get("data").toString();
            cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
            String resultsStr = dataResults.get("results").toString();
            return resultsStr;
        }else{
            return "fail";
        }
    }
    //电子围栏删除
    public String fenceDel(String gaodeKey, String sid,String fenceId) {
        String url = "https://tsapi.amap.com/v1/track/geofence/delete?key="+gaodeKey+"&sid="+sid+"&gfids="+fenceId;
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        map.put("key",gaodeKey);
        map.put("sid",sid);
        map.put("gfids",fenceId);
        String  param= JSON.toJSONString(map);
        String result = null;
        try {
            result = HttpCurlUtil.sendPostHttp(url, param);
        } catch (IOException e) {
            e.printStackTrace();
        }
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        System.out.println(maps);
        String errcode = maps.get("errcode").toString();
        if(!"10000".equals(errcode)){
            return "fail";
        }else{
            return maps.toString();
        }
    }
    @Override
    public String fenceDelete(String gaodeKey, String serviceId, String fenceId) {
        String url = "https://tsapi.amap.com/v1/track/geofence/delete?key="+gaodeKey+"&sid="+serviceId+"&gfids="+fenceId;
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        map.put("key",gaodeKey);
        map.put("sid",serviceId);
        map.put("gfids",fenceId);
        String  param= JSON.toJSONString(map);
        String result = null;
        try {
            result = HttpCurlUtil.sendPostHttp(url, param);
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("删除围栏"+result);
 
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        System.out.println(maps);
        String errcode = maps.get("errcode").toString();
        if(!"10000".equals(errcode)){
            return "fail";
        }else{
            return maps.toString();
        }
    }
 
    @Override
    public String fenceToLocation(String gaodeKey, String serviceId, String locationLonglat, String fenceId) {
        String url = "https://tsapi.amap.com/v1/track/geofence/status/location";
        HttpPost httpPost = new HttpPost(url);
        Map<String,String> map = new HashMap<>();
        //高德Key
        //用户在高德地图官网申请Web服务API类型Key
        map.put("key",gaodeKey);
        //服务唯一编号
        //sid为猎鹰service唯一编号
        map.put("sid",serviceId);
        //指定坐标
        //格式:x,y
        map.put("location",locationLonglat);
        //围栏的唯一标识
        //支持一次传入多个,以","分割;
        //单次最多支持100个,如超出将只截取前100个作为输入。
        map.put("gfids",fenceId);
        log.info("查询指定坐标与围栏关系"+JSON.toJSONString(map));
        String result = null;
        try {
            result = HttpCurlUtil.sendGetHttp(url, map);
        } catch (IOException e) {
            e.printStackTrace();
        }
        log.info("查询指定坐标与围栏关系"+result);
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String errCode = maps.get("errcode").toString();
        if("10000".equals(errCode)){
            String dataStr = maps.get("data").toString();
            cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
            String resultsStr = dataResults.get("results").toString();
            return resultsStr;
        }else{
            return "fail";
        }
    }
 
    public static void main(String[] args) {
        String result = "{\"data\":{\"count\":1,\"results\":[{\"gfid\":800899,\"gfname\":\"87053658_fence\",\"in\":0}]},\"errcode\":10000,\"errdetail\":null,\"errmsg\":\"OK\"}";
        cn.hutool.json.JSONObject maps = JSONUtil.parseObj(result);
        String dataStr = maps.get("data").toString();
        cn.hutool.json.JSONObject dataResults = JSONUtil.parseObj(dataStr);
        String resultsStr = dataResults.get("results").toString();
        JSONArray jsonArray = JSONUtil.parseArray(resultsStr);
        System.out.print(jsonArray);
        Object o = jsonArray.get(0);
        JSONObject jsonObject1 = JSONUtil.parseObj(jsonArray.get(0));
        String in = jsonObject1.get("in").toString();
        System.out.print(in);
    }
}