QueueInterfaceServiceImpl.java 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. package com.steerinfo.dil.service.impl;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONObject;
  4. import com.openapi.sdk.service.DataExchangeService;
  5. import com.steerinfo.dil.mapper.QueueInterfaceMapper;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.beans.factory.annotation.Value;
  8. import org.springframework.stereotype.Service;
  9. import java.util.HashMap;
  10. import java.util.Map;
  11. /**
  12. * @ author :TXF
  13. * @ time :2022/1/11 15:27
  14. */
  15. @Service
  16. public class QueueInterfaceServiceImpl {
  17. @Autowired
  18. private QueueInterfaceMapper queueInterfaceMapper;
  19. @Value("${str.ZhongJiaoXingLu.cid}")
  20. private String cid;
  21. @Value("${str.ZhongJiaoXingLu.srt}")
  22. private String srt;
  23. @Value("${str.ZhongJiaoXingLu.user}")
  24. private String user;
  25. @Value("${str.ZhongJiaoXingLu.pwd}")
  26. private String pwd;
  27. private String token = "2d1d0e76-78ba-480e-8b48-15e3ae50eb94"; //令牌
  28. private String userflag = "DaZhouGangTie"; //标识
  29. private String lonlat = "121.84431,29.89889"; //中心点坐标
  30. private String radius = "3000"; //半径
  31. /**
  32. * 车辆订阅接口
  33. * @Author TXF
  34. * @Date 2022/1/12 14:18
  35. * @param map
  36. * @return
  37. **/
  38. public String subsCapacity(Map<String, Object> map){
  39. if (map.get("capacityNumber")==null||"".equals(map.get("capacityNumber").toString())){
  40. return "参数【capacityNumber】车号,为空";
  41. }
  42. Map<String, String> mesMap = new HashMap<>();
  43. mesMap.put("token", token);
  44. mesMap.put("cid", cid);
  45. mesMap.put("srt", srt);
  46. mesMap.put("userflag", userflag);
  47. mesMap.put("areaid", queueInterfaceMapper.getAreaId());
  48. mesMap.put("vnos", (String) map.get("capacityNumber"));
  49. String url = "https://openapi-test.sinoiov.cn/save/apis/vnoReg";
  50. try {
  51. DataExchangeService des = new DataExchangeService(5000, 8000);
  52. // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
  53. String res = des.postHttps(url, mesMap);
  54. Map<String, Object> jsonMap = JSON.parseObject(res);
  55. Object status = jsonMap.get("status");
  56. if("1016".equals(status.toString())){
  57. if(login() == 1){
  58. subsCapacity(map); //递归订阅
  59. }else {
  60. return "登录失败,状态码:"+status;
  61. }
  62. }
  63. if("1001".equals(status.toString())){
  64. if("2".equals(jsonMap.get("result").toString())){
  65. //如果是自定义区域不存在则重新注册自定义区域
  66. if(registerAreaReg() == 1){
  67. subsCapacity(map);
  68. }
  69. }else {
  70. return "订阅成功";
  71. }
  72. }
  73. } catch (Exception e) {
  74. System.out.println("错误信息:" + e.getMessage());
  75. }
  76. return "订阅失败";
  77. }
  78. /**
  79. * 自定义区域注册接口
  80. * @Author TXF
  81. * @Date 2022/1/12 14:36
  82. * @param
  83. * @return 1 成功 0 失败
  84. **/
  85. public int registerAreaReg(){
  86. Map<String, String> mesMap = new HashMap<>(9);
  87. mesMap.put("token", token);
  88. mesMap.put("cid", cid);
  89. mesMap.put("srt", srt);
  90. mesMap.put("userflag", userflag);
  91. mesMap.put("areaname", "达州钢铁老厂区");
  92. mesMap.put("lonlat", lonlat);
  93. mesMap.put("radius", radius);
  94. mesMap.put("type", "1");
  95. mesMap.put("actiontype", "1");
  96. String url = "https://openapi-test.sinoiov.cn/save/apis/areaReg";
  97. try {
  98. DataExchangeService des = new DataExchangeService(5000, 8000);
  99. // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
  100. String res = des.postHttps(url, mesMap);
  101. Map<String, Object> jsonMap = JSON.parseObject(res);
  102. if("1001".equals(jsonMap.get("status").toString())){
  103. // 更新注册区域ID
  104. Map<String, Object> areaIdMap = (Map<String, Object>) jsonMap.get("result");
  105. if("1".equals(areaIdMap.get("state").toString())){
  106. String areaid = String.valueOf(areaIdMap.get("areaid"));
  107. int i = queueInterfaceMapper.updateAreaId(areaid);
  108. if(i==0){
  109. return 0;
  110. }
  111. System.out.println("new areaid: " + areaid);
  112. return 1;
  113. }else {
  114. return 0;
  115. }
  116. }
  117. } catch (Exception e) {
  118. System.out.println("错误信息:" + e.getMessage());
  119. }
  120. return 0;
  121. }
  122. /**
  123. * 登录接口
  124. * @Author TXF
  125. * @Date 2022/1/12 15:23
  126. * @param
  127. * @return 1 成功 0 失败
  128. **/
  129. public int login() {
  130. try {
  131. Map<String, String> map = new HashMap<>(4);
  132. map.put("user", user);
  133. map.put("pwd", pwd);
  134. map.put("cid", cid);
  135. map.put("srt", srt);
  136. String url = "https://openapi-test.sinoiov.cn/save/apis/login/";
  137. DataExchangeService des = new DataExchangeService(5000, 8000);
  138. // 通过 https 方式调用,此方法内部会使用私钥生成签名参数 sign,私钥不会发送
  139. String res = des.postHttps(url, map);
  140. JSONObject jsonObject = JSONObject.parseObject(res);
  141. this.token = jsonObject.get("result").toString();
  142. System.out.println("token: " + this.token);
  143. return 1;
  144. } catch (Exception e) {
  145. System.out.println("登录中交兴路出错"+e.getMessage());
  146. return 0;
  147. }
  148. }
  149. /**
  150. * 删除车辆订阅接口
  151. * @Author TXF
  152. * @Date 2022/1/12 17:11
  153. * @param map
  154. * @return
  155. **/
  156. public void cancelSubsCapacity(Map<String, Object> map){
  157. Map<String, String> mesMap = new HashMap<>(4);
  158. mesMap.put("cid", cid);
  159. mesMap.put("srt", srt);
  160. mesMap.put("token", token);
  161. mesMap.put("userflag", userflag);
  162. mesMap.put("vons", (String) map.get("capacityNumber"));
  163. mesMap.put("areaid", queueInterfaceMapper.getAreaId());
  164. String url = "https://openapi-test.sinoiov.cn/save/apis/vnoDel";
  165. try {
  166. DataExchangeService des = new DataExchangeService(5000, 8000);
  167. String res = des.postHttps(url, mesMap);
  168. JSONObject jsonObject = JSONObject.parseObject(res);
  169. if("1".equals(jsonObject.get("result"))){
  170. System.out.println(map.get("capacityNumber") + "取消订阅成功");
  171. }
  172. } catch (Exception e) {
  173. e.printStackTrace();
  174. }
  175. }
  176. }