package cn.com.lzt.car.data; import cn.com.lzt.common.util.HttpClientUtils; import cn.com.lzt.message.send.util.MD5; import cn.com.lzt.tools.ServerType; import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.http.client.config.RequestConfig; import org.codehaus.jackson.map.ObjectMapper; import java.io.IOException; import java.util.Collections; import java.util.HashMap; import java.util.Map; /** * 翼卡车辆数据 */ public class EdriveDataUtil { private static String BASEURL="http://edrive.e-car.cn/api_v1"; // for test //http://edrivetest.e-car.cn/api_v1/vehicle private static final String APPID="YJbl2s4um9"; private static final String SECRETKEY="2786f8dkv77qj5x4a4p5jd54wufp7ay2"; private static ObjectMapper mapper = new ObjectMapper(); private static Log log = LogFactory.getLog(EdriveDataUtil.class); static{ if(ServerType.getServerType()==ServerType.test){ BASEURL = "http://edrivetest.e-car.cn/api_v1"; } } // public static void main(String[] args){ // 19000211397 对方提供测试 // 己方 21108989226 沪T-00002 // 21108989090 String vehicleNo = "21108989226"; // status(vehicleNo); // alarm(vehicleNo,"2020-01-01 00:00:01","2020-06-23 23:59:59"); // gpsTrip(vehicleNo,"2020-06-21 00:00:01","2020-06-23 23:59:59"); //363211089890906 gpsHistroy(vehicleNo,"2020-06-21 00:00:01","2020-06-23 23:59:59"); // shootCommend(vehicleNo); // playCommend(vehicleNo,"play"); // commendResult("shoot",23782); // shoot(vehicleNo); } public static void shoot(String vehicleNo){ Map scMap = shootCommend(vehicleNo); Integer cmdId = Integer.valueOf(scMap.get("data").toString()); commendResult("shoot", cmdId); } public static Map shootCommend(String vehicleNo){ return commandSend(vehicleNo,"1","shoot","1"); } public static void playCommend(String vehicleNo,String actionCmd){ commandSend(vehicleNo,"1","play",actionCmd); } //命令结果 private static void commendResult(String commendType,Integer commendId){ String url = BASEURL+"/command/result"; Map contentMap = new HashedMap(); contentMap.put("cmdId",commendId); contentMap.put("cmdType",commendType); post(url,contentMap); } /** * @param vehicleNo 设备编号 * @param channelNo 通道 * @param cmdType 命令类型: play 播放,shoot 拍摄 * @param action 如果play play 播放,stop 停止,如果shoot: 1拍照 */ private static Map commandSend(String vehicleNo, String channelNo, String cmdType, String action){ String url = BASEURL+"/command/send"; Map contentMap = new HashedMap(); contentMap.put("vehicleNo",vehicleNo); contentMap.put("channelNo",channelNo); String cmdTypeString=""; if(StringUtils.equals(cmdType, "shoot")){ cmdTypeString="shoot"; }else if(StringUtils.equals(cmdType, "play")){ cmdTypeString="play"; } try { contentMap.put(cmdTypeString,mapper.writeValueAsString(Collections.singletonMap("action",action))); } catch (IOException e) { e.printStackTrace(); } contentMap.put("cmdType", cmdType); return post(url,contentMap); } //车辆定位历史 public static void gpsHistroy(String vehicleNo,String startTime,String endTime){ String url = BASEURL+"/gps/history"; Map contentMap = new HashedMap(); contentMap.put("vehicleNo",vehicleNo); contentMap.put("startTime",startTime); contentMap.put("endTime",endTime); post(url,contentMap); } //车辆形成历史 public static void gpsTrip(String vehicleNo,String startTime,String endTime){ String url = BASEURL+"/gps/trip"; Map contentMap = new HashedMap(); contentMap.put("vehicleNo",vehicleNo); contentMap.put("startTime",startTime); contentMap.put("endTime",endTime); post(url,contentMap); } //车辆状态 public static void alarm(String vehicleNo,String startTime,String endTime){ String url = BASEURL+"/vehicle/alarm"; Map contentMap = new HashedMap(); contentMap.put("vehicleNo",vehicleNo); contentMap.put("startTime",startTime); contentMap.put("endTime",endTime); post(url,contentMap); } //车辆状态 public static void status(String vehicleNo){ String url = BASEURL+"/vehicle/status"; Map contentMap = new HashedMap(); contentMap.put("vehicleNo",vehicleNo); post(url,contentMap); } private static Map post(String url,Map contentMap){ try { Map paramsMap = sign(contentMap); String backString = HttpClientUtils.sendHttpPost(url,paramsMap); if(log.isDebugEnabled()){ log.debug("post:"+url+",response:"+backString); } System.out.println("post:"+url+",content:"+paramsMap.get("content")+",response:"+backString); Map map = mapper.readValue(backString, Map.class); return map; } catch (IOException e) { e.printStackTrace(); } return null; } private static Map sign(Map contentMap) throws IOException { long timestamp = System.currentTimeMillis(); String content = mapper.writeValueAsString(contentMap); String unSign = APPID+timestamp+content+SECRETKEY; String sign = MD5.md5(unSign).toUpperCase(); Map paramsMap = new HashMap<>(); paramsMap.put("appid", APPID); paramsMap.put("sign", sign); paramsMap.put("timestamp", String.valueOf(timestamp)); paramsMap.put("content", content); return paramsMap; } }