package cn.com.lzt.car.api; import cn.com.lzt.common.util.Constants; import cn.com.lzt.common.util.HttpUtil; import cn.com.lzt.message.send.util.MD5; import com.alibaba.fastjson.JSONObject; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.gavaghan.geodesy.Ellipsoid; import org.gavaghan.geodesy.GeodeticCalculator; import org.gavaghan.geodesy.GeodeticCurve; import org.gavaghan.geodesy.GlobalCoordinates; import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; public class CarOnlineUtils { private static final Logger logger = Logger.getLogger(CarOnlineUtils.class); private static String accessTokenCzsh = null; private static String accessToken = null; private static long tokenTime = 0; private static long tokenTimeCzsh = 0; public static String getAccessToken() { //time 以秒为单位 long time = System.currentTimeMillis() / 1000; //token不存在,或者过期,则重新生成token //token有效期为7200s,为安全起见,超过7000s则重新申请 if (StringUtils.isEmpty(accessToken) || time - tokenTime > 7000) { List list = genAccessToken( Constants.getProperty("CAR_FLEET_ACCOUNT"), Constants.getProperty("CAR_FLEET_SECRET")); if(list != null){ accessToken = (String)list.get(0); tokenTime = (long)list.get(1); } } return accessToken; } // public static String getAccessTokenCzsh() { // //time 以秒为单位 // long time = System.currentTimeMillis() / 1000; // //token不存在,或者过期,则重新生成token // //token有效期为7200s,为安全起见,超过7000s则重新申请 // if (StringUtils.isEmpty(accessTokenCzsh) || time - tokenTimeCzsh > 7000) { // List list = genAccessToken("城智生活", "dsgongyong2019"); // if(list != null){ // accessTokenCzsh = (String)list.get(0); // tokenTimeCzsh = (long)list.get(1); // } // } // return accessTokenCzsh; // } private static List genAccessToken(String account, String secret) { //time 以秒为单位 long time = System.currentTimeMillis() / 1000; // String signature = MD5.md5(MD5.md5("dsgongyong2019") + time); String signature = MD5.md5(MD5.md5(secret) + time); String url = null; try { // url = "http://api.gpsoo.net/1/auth/access_token?account="+java.net.URLEncoder.encode("城智生活", "UTF8")+"&time=" + time + "&signature=" + signature; url = "http://api.gpsoo.net/1/auth/access_token?account=" + java.net.URLEncoder.encode(account, "UTF8") + "&time=" + time + "&signature=" + signature; } catch (UnsupportedEncodingException e) { logger.error(e.getMessage()); return null; } JSONObject res = HttpUtil.httpRequest(url, "GET", null); logger.error(res.toJSONString()); if (res.get("ret").toString().equals("0")) { String accessToken = res.get("access_token").toString(); long tokenTime = time; List list = new ArrayList(); list.add(accessToken); list.add(tokenTime); return list; } else { logger.error("未获取到汽车在线access_token" + ",url:" + url); } return null; } public static double getDistanceMeter(GlobalCoordinates gpsFrom, GlobalCoordinates gpsTo, Ellipsoid ellipsoid) { //创建GeodeticCalculator,调用计算方法,传入坐标系、经纬度用于计算距离 GeodeticCurve geoCurve = new GeodeticCalculator().calculateGeodeticCurve(ellipsoid, gpsFrom, gpsTo); return geoCurve.getEllipsoidalDistance(); } }