package com.steerinfo.dil.service.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.openapi.sdk.service.DataExchangeService; import com.steerinfo.dil.mapper.QueueInterfaceMapper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.Map; /** * @ author :TXF * @ time :2022/1/11 15:27 */ @Service public class QueueInterfaceServiceImpl { @Autowired private QueueInterfaceMapper queueInterfaceMapper; @Value("${str.ZhongJiaoXingLu.cid}") private String cid; @Value("${str.ZhongJiaoXingLu.srt}") private String srt; @Value("${str.ZhongJiaoXingLu.user}") private String user; @Value("${str.ZhongJiaoXingLu.pwd}") private String pwd; private String token = "2d1d0e76-78ba-480e-8b48-15e3ae50eb94"; //令牌 private String userflag = "DaZhouGangTie"; //标识 private String lonlat = "121.84431,29.89889"; //中心点坐标 private String radius = "3000"; //半径 /** * 车辆订阅接口 * @Author TXF * @Date 2022/1/12 14:18 * @param map * @return **/ public String subsCapacity(Map map){ if (map.get("capacityNumber")==null||"".equals(map.get("capacityNumber").toString())){ return "参数【capacityNumber】车号,为空"; } Map mesMap = new HashMap<>(); mesMap.put("token", token); mesMap.put("cid", cid); mesMap.put("srt", srt); mesMap.put("userflag", userflag); mesMap.put("areaid", queueInterfaceMapper.getAreaId()); mesMap.put("vnos", (String) map.get("capacityNumber")); String url = "https://openapi-test.sinoiov.cn/save/apis/vnoReg"; try { DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, mesMap); Map jsonMap = JSON.parseObject(res); Object status = jsonMap.get("status"); if("1016".equals(status.toString())){ if(login() == 1){ subsCapacity(map); //递归订阅 }else { return "登录失败,状态码:"+status; } } if("1001".equals(status.toString())){ if("2".equals(jsonMap.get("result").toString())){ //如果是自定义区域不存在则重新注册自定义区域 if(registerAreaReg() == 1){ subsCapacity(map); } }else { return "订阅成功"; } } } catch (Exception e) { System.out.println("错误信息:" + e.getMessage()); } return "订阅失败"; } /** * 自定义区域注册接口 * @Author TXF * @Date 2022/1/12 14:36 * @param * @return 1 成功 0 失败 **/ public int registerAreaReg(){ Map mesMap = new HashMap<>(9); mesMap.put("token", token); mesMap.put("cid", cid); mesMap.put("srt", srt); mesMap.put("userflag", userflag); mesMap.put("areaname", "达州钢铁老厂区"); mesMap.put("lonlat", lonlat); mesMap.put("radius", radius); mesMap.put("type", "1"); mesMap.put("actiontype", "1"); String url = "https://openapi-test.sinoiov.cn/save/apis/areaReg"; try { DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, mesMap); Map jsonMap = JSON.parseObject(res); if("1001".equals(jsonMap.get("status").toString())){ // 更新注册区域ID Map areaIdMap = (Map) jsonMap.get("result"); if("1".equals(areaIdMap.get("state").toString())){ String areaid = String.valueOf(areaIdMap.get("areaid")); queueInterfaceMapper.updateAreaId(areaid); System.out.println("new areaid: " + areaid); return 1; }else { return 0; } } } catch (Exception e) { System.out.println("错误信息:" + e.getMessage()); } return 0; } /** * 登录接口 * @Author TXF * @Date 2022/1/12 15:23 * @param * @return 1 成功 0 失败 **/ public int login() { try { Map map = new HashMap<>(4); map.put("user", user); map.put("pwd", pwd); map.put("cid", cid); map.put("srt", srt); String url = "https://openapi-test.sinoiov.cn/save/apis/login/"; DataExchangeService des = new DataExchangeService(5000, 8000); // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送 String res = des.postHttps(url, map); JSONObject jsonObject = JSONObject.parseObject(res); this.token = jsonObject.get("result").toString(); System.out.println("token: " + this.token); return 1; } catch (Exception e) { System.out.println("登录中交兴路出错"+e.getMessage()); return 0; } } /** * 删除车辆订阅接口 * @Author TXF * @Date 2022/1/12 17:11 * @param map * @return **/ public void cancelSubsCapacity(Map map){ Map mesMap = new HashMap<>(4); mesMap.put("cid", cid); mesMap.put("srt", srt); mesMap.put("token", token); mesMap.put("userflag", userflag); mesMap.put("vons", (String) map.get("capacityNumber")); mesMap.put("areaid", queueInterfaceMapper.getAreaId()); String url = "https://openapi-test.sinoiov.cn/save/apis/vnoDel"; try { DataExchangeService des = new DataExchangeService(5000, 8000); String res = des.postHttps(url, mesMap); JSONObject jsonObject = JSONObject.parseObject(res); if("1".equals(jsonObject.get("result"))){ System.out.println(map.get("capacityNumber") + "取消订阅成功"); } } catch (Exception e) { e.printStackTrace(); } } }