CarOnlineUtils.java 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package cn.com.lzt.car.api;
  2. import cn.com.lzt.common.util.Constants;
  3. import cn.com.lzt.common.util.HttpUtil;
  4. import cn.com.lzt.message.send.util.MD5;
  5. import com.alibaba.fastjson.JSONObject;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.apache.log4j.Logger;
  8. import org.gavaghan.geodesy.Ellipsoid;
  9. import org.gavaghan.geodesy.GeodeticCalculator;
  10. import org.gavaghan.geodesy.GeodeticCurve;
  11. import org.gavaghan.geodesy.GlobalCoordinates;
  12. import java.io.UnsupportedEncodingException;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. public class CarOnlineUtils {
  16. private static final Logger logger = Logger.getLogger(CarOnlineUtils.class);
  17. private static String accessTokenCzsh = null;
  18. private static String accessToken = null;
  19. private static long tokenTime = 0;
  20. private static long tokenTimeCzsh = 0;
  21. public static String getAccessToken() {
  22. //time 以秒为单位
  23. long time = System.currentTimeMillis() / 1000;
  24. //token不存在,或者过期,则重新生成token
  25. //token有效期为7200s,为安全起见,超过7000s则重新申请
  26. if (StringUtils.isEmpty(accessToken) || time - tokenTime > 7000) {
  27. List<Object> list = genAccessToken(
  28. Constants.getProperty("CAR_FLEET_ACCOUNT"), Constants.getProperty("CAR_FLEET_SECRET"));
  29. if(list != null){
  30. accessToken = (String)list.get(0);
  31. tokenTime = (long)list.get(1);
  32. }
  33. }
  34. return accessToken;
  35. }
  36. // public static String getAccessTokenCzsh() {
  37. // //time 以秒为单位
  38. // long time = System.currentTimeMillis() / 1000;
  39. // //token不存在,或者过期,则重新生成token
  40. // //token有效期为7200s,为安全起见,超过7000s则重新申请
  41. // if (StringUtils.isEmpty(accessTokenCzsh) || time - tokenTimeCzsh > 7000) {
  42. // List<Object> list = genAccessToken("城智生活", "dsgongyong2019");
  43. // if(list != null){
  44. // accessTokenCzsh = (String)list.get(0);
  45. // tokenTimeCzsh = (long)list.get(1);
  46. // }
  47. // }
  48. // return accessTokenCzsh;
  49. // }
  50. private static List<Object> genAccessToken(String account, String secret) {
  51. //time 以秒为单位
  52. long time = System.currentTimeMillis() / 1000;
  53. // String signature = MD5.md5(MD5.md5("dsgongyong2019") + time);
  54. String signature = MD5.md5(MD5.md5(secret) + time);
  55. String url = null;
  56. try {
  57. // url = "http://api.gpsoo.net/1/auth/access_token?account="+java.net.URLEncoder.encode("城智生活", "UTF8")+"&time=" + time + "&signature=" + signature;
  58. url = "http://api.gpsoo.net/1/auth/access_token?account="
  59. + java.net.URLEncoder.encode(account, "UTF8") + "&time=" + time + "&signature=" + signature;
  60. } catch (UnsupportedEncodingException e) {
  61. logger.error(e.getMessage());
  62. return null;
  63. }
  64. JSONObject res = HttpUtil.httpRequest(url, "GET", null);
  65. logger.error(res.toJSONString());
  66. if (res.get("ret").toString().equals("0")) {
  67. String accessToken = res.get("access_token").toString();
  68. long tokenTime = time;
  69. List<Object> list = new ArrayList();
  70. list.add(accessToken);
  71. list.add(tokenTime);
  72. return list;
  73. } else {
  74. logger.error("未获取到汽车在线access_token" + ",url:" + url);
  75. }
  76. return null;
  77. }
  78. public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) {
  79. //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离
  80. GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo);
  81. return geoCurve.getEllipsoidalDistance();
  82. }
  83. }