From 0f9a91a7609e6623ada0f8b5a9ee878e77e5aa32 Mon Sep 17 00:00:00 2001 From: zhibing.pu <393733352@qq.com> Date: 星期五, 21 六月 2024 10:01:59 +0800 Subject: [PATCH] 修改google地图对接bug --- DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java | 167 +++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 147 insertions(+), 20 deletions(-) diff --git a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java index 3485bbb..9fe8e77 100644 --- a/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java +++ b/DriverIGOTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java @@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.stylefeng.guns.core.util.ToolUtil; import com.stylefeng.guns.modular.crossCity.model.OrderCrossCity; import com.stylefeng.guns.modular.crossCity.server.IOrderCrossCityService; import com.stylefeng.guns.modular.smallLogistics.model.OrderLogistics; @@ -10,6 +11,8 @@ import com.stylefeng.guns.modular.specialTrain.model.OrderPrivateCar; import com.stylefeng.guns.modular.specialTrain.server.IOrderPrivateCarService; import com.stylefeng.guns.modular.system.model.OrderPosition; +import com.stylefeng.guns.modular.system.util.GoogleMap.DistancematrixVo; +import com.stylefeng.guns.modular.system.util.GoogleMap.GoogleMapUtil; import com.stylefeng.guns.modular.taxi.model.OrderTaxi; import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; @@ -27,6 +30,8 @@ import java.io.FileInputStream; import java.io.InputStreamReader; import java.math.BigDecimal; +import java.math.MathContext; +import java.math.RoundingMode; import java.util.*; /** @@ -40,9 +45,6 @@ @Autowired private IOrderTaxiService orderTaxiService; - - @Autowired - private GDMapElectricFenceUtil gdMapElectricFenceUtil; @Autowired private IOrderPrivateCarService orderPrivateCarService; @@ -82,6 +84,41 @@ map.put("orderId", orderId); map.put("orderType", orderType); map.put("state", state); + jsonObject.put("data", map); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + //将请求头部和参数合成一个请求 + MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); + params.add("msg", jsonObject.toJSONString()); + params.add("id", String.valueOf(uid)); + params.add("type", String.valueOf(type)); + HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); + String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if(jsonObject1.getIntValue("code") != 200){ + System.err.println(jsonObject1.getString("msg")); + } + } + + + /** + * 线下支付数据推送 + * @param type + * @param uid + * @param orderId + * @param orderType + */ + public void pushOfflinePayment(Integer type, Integer uid, Integer orderId, Integer orderType){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "OFFLINE_PAYMENT"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); jsonObject.put("data", map); //调用推送 @@ -296,16 +333,21 @@ return; } if((state == 2 || state == 3 || state == 4) || (oldState != null && (oldState == 2 || oldState == 3 || oldState == 4))){//前往预约地 - Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, startLonLat, 1); String d = "0"; String t = "0"; - if(null == distance){ - System.err.println("查询距离出错了"); - return; - }else{ - d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + ""; + if(ToolUtil.isNotEmpty(value) && ToolUtil.isNotEmpty(startLonLat)){ + String[] split = value.split(","); + String[] split1 = startLonLat.split(","); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(split[1]), Double.valueOf(split[0]), Double.valueOf(split1[1]), Double.valueOf(split1[0])); + if(null == distancematrix){ + System.err.println("地图获取距离出错"); + }else{ + d = distancematrix.getDistance().toString();//距离m + t = distancematrix.getDuration().toString();//时间s + } } + d = new BigDecimal(d).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); + t = new BigDecimal(t).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; map.put("reservationMileage", d);//当前位置距离预约点的剩余里程 map.put("reservationTime", t);//当前位置距离预约点的剩余分钟 map.put("servedMileage", "0");//距离起点已经服务的里程 @@ -319,19 +361,27 @@ map.put("servedMileage", String.valueOf((null == servedMileage ? 0 : servedMileage) / 1000));//距离起点已经服务的里程 Integer servedTime = Long.valueOf((new Date().getTime() - startServiceTime) / 60000).intValue(); map.put("servedTime", servedTime + "");//距离起点已经服务的时间 - Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, endLonLat, 1); + String d = "0"; String t = "0"; - if(null == distance){ - System.err.println("查询距离出错了"); - }else{ - d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000)).setScale(2, BigDecimal.ROUND_HALF_EVEN).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60)).setScale(2, BigDecimal.ROUND_HALF_EVEN).intValue() + ""; + if(ToolUtil.isNotEmpty(value) && ToolUtil.isNotEmpty(endLonLat)){ + String[] split = value.split(","); + String[] split1 = endLonLat.split(","); + DistancematrixVo distancematrix = GoogleMapUtil.getDistancematrix(Double.valueOf(split[1]), Double.valueOf(split[0]), Double.valueOf(split1[1]), Double.valueOf(split1[0])); + if(null == distancematrix){ + System.err.println("地图获取距离出错"); + }else{ + d = distancematrix.getDistance().toString();//距离m + t = distancematrix.getDuration().toString();//时间s + } } + + d = new BigDecimal(d).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); + t = new BigDecimal(t).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; map.put("laveMileage", d);//距离终点剩余未服务的里程数 map.put("laveTime", t);//距离终端剩余未服务的预计时间 } - File file = new File(filePath + orderId + "_1.txt"); + File file = new File(filePath + orderId + "_" + orderType + ".txt"); if(file.exists()){ //读取文件(字符流) BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8")); @@ -371,12 +421,12 @@ * @param id * @param type */ - public void pushOffline(Integer id, Integer type){ + public void pushOffline(Integer id, Integer type, Object object){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "OFFLINE"); - msg.put("data", new Object()); + msg.put("data", object); //调用推送 HttpHeaders headers = new HttpHeaders(); @@ -442,8 +492,9 @@ * @param orderId * @param orderType * @param money + * @param status 1=申请,2=同意,3=拒绝 */ - public void pushPayDifference(Integer type, Integer uid, Integer orderId, Integer orderType, Double money){ + public void pushPayDifference(Integer type, Integer uid, Integer orderId, Integer orderType, Double money, Integer status){ JSONObject jsonObject = new JSONObject(); jsonObject.put("code", 200); jsonObject.put("msg", "SUCCESS"); @@ -452,6 +503,7 @@ map.put("orderId", orderId); map.put("orderType", orderType); map.put("money", money); + map.put("status", status); jsonObject.put("data", map); //调用推送 @@ -484,4 +536,79 @@ pushMap.remove(orderId + "_" + orderType); } } + + + + /** + * 修改目的地推送通知 + * @param type + * @param uid + * @param orderId + * @param orderType + * @param status 1=申请,2=同意,3=拒绝 + */ + public void pushModifyAddress(Integer type, Integer uid, Integer orderId, Integer orderType, Integer status){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "MODIFY_ADDRESS"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); + map.put("status", status); + jsonObject.put("data", map); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + //将请求头部和参数合成一个请求 + MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); + params.add("msg", jsonObject.toJSONString()); + params.add("id", String.valueOf(uid)); + params.add("type", String.valueOf(type)); + HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); + String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if(jsonObject1.getIntValue("code") != 200){ + System.err.println(jsonObject1.getString("msg")); + } + } + + + /** + * 司机超时推送 + * @param type + * @param uid + * @param orderId + * @param orderType + * @param describe + */ + public void pushOrderTimeOut(Integer type, Integer uid, Integer orderId, Integer orderType, String describe){ + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "ORDER_TIME_OUT"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); + map.put("describe", describe); + jsonObject.put("data", map); + + //调用推送 + HttpHeaders headers = new HttpHeaders(); + // 以表单的方式提交 + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + //将请求头部和参数合成一个请求 + MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); + params.add("msg", jsonObject.toJSONString()); + params.add("id", String.valueOf(uid)); + params.add("type", String.valueOf(type)); + HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<>(params, headers); + String s = internalRestTemplate.postForObject("http://zuul-gateway/netty/sendMsgToClient",requestEntity , String.class); + JSONObject jsonObject1 = JSON.parseObject(s, JSONObject.class); + if(jsonObject1.getIntValue("code") != 200){ + System.err.println(jsonObject1.getString("msg")); + } + } } -- Gitblit v1.7.1