From 70211b41954df4ac1232f48420b89c13fb5fb451 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期三, 25 六月 2025 15:06:58 +0800 Subject: [PATCH] 更新用户端功能 --- UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java | 699 +++++++++++++++++++++++++++++---------------------------- 1 files changed, 354 insertions(+), 345 deletions(-) diff --git a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java index d12b3f9..372be92 100644 --- a/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java +++ b/UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/PushUtil.java @@ -1,5 +1,8 @@ package com.stylefeng.guns.modular.system.util; +import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; +import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.stylefeng.guns.core.util.ToolUtil; @@ -11,14 +14,10 @@ import com.stylefeng.guns.modular.taxi.service.IOrderTaxiService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; -import org.springframework.http.HttpEntity; -import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.stereotype.Component; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; -import org.springframework.web.client.RestTemplate; +import javax.annotation.Resource; import java.math.BigDecimal; import java.math.MathContext; import java.math.RoundingMode; @@ -29,178 +28,177 @@ */ @Component public class PushUtil { - - @Autowired - private RestTemplate internalRestTemplate; - - @Autowired - private RedisTemplate redisTemplate; - - @Autowired - private IOrderTaxiService orderTaxiService; - - @Autowired - private GDMapElectricFenceUtil gdMapElectricFenceUtil; - - @Autowired - private IOrderPrivateCarService orderPrivateCarService; - - @Autowired - private IOrderCrossCityService orderCrossCityService; - - private Map<String, Timer> taskMap = new HashMap<>();//存储定时推送的定时器 - - - - - /** - * 推送订单状态 - * @param type 1=用户,2=司机 - * @param uid 对象id - * @param orderId 订单id - * @param orderType 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) - * @param state 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付) - */ - public void pushOrderState(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state, Integer time){ - JSONObject jsonObject = new JSONObject(); - jsonObject.put("code", 200); - jsonObject.put("msg", "SUCCESS"); - jsonObject.put("method", "ORDER_STATUS"); - Map<String, Object> map = new HashMap<>(); - map.put("orderId", orderId); - map.put("orderType", orderType); - map.put("time", time); - if(orderType==1 && state==100){ - map.put("carpooling", 1); - map.put("state", 2); - }else{ - 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 pushEndPush(Integer type, Integer uid, Integer orderId, Integer orderType){ - JSONObject jsonObject = new JSONObject(); - jsonObject.put("code", 200); - jsonObject.put("msg", "SUCCESS"); - jsonObject.put("method", "END_PUSH"); - Map<String, Object> map = new HashMap<>(); - map.put("orderId", orderId); - map.put("orderType", orderType); - 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")); - } - } - - - - - /** - * 推送司机位置给乘客端 - */ - public void pushDriverPosition(Integer orderId, Integer orderType){ - Integer userId = null; - switch (orderType){ - case 1: - OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); - userId = orderPrivateCar.getUserId(); - break; - case 2: - OrderTaxi orderTaxi = orderTaxiService.selectById(orderId); - userId = orderTaxi.getUserId(); - break; - case 3: - OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId); - userId = orderCrossCity.getUserId(); - break; - } - JSONObject data = new JSONObject(); - data.put("id", userId); - data.put("type", 1); - String str = (String) redisTemplate.opsForValue().get(orderId + "_" + orderType); - if(ToolUtil.isEmpty(str)){ - redisTemplate.opsForValue().set(orderId + "_" + orderType, data.toJSONString()); - createTask(orderId, orderType); - } - } - - - /** - * 创建定时任务 - * @param orderId - */ - public void createTask(Integer orderId, Integer orderType){ - TimerTask task = new TimerTask() { - @Override - public void run() { - try { - PushUtil.this.pushPositon(orderId, orderType); - } catch (Exception e) { - e.printStackTrace(); - } - } - }; - Timer timer = new Timer(); - timer.schedule(task, 1000, 10000);//1秒后开始10秒钟一次的重复执行 - taskMap.put(orderId + "_" + orderType, timer); - } - - - /** - * 推送处理方法 - * @param orderId - * @param orderType - * @throws Exception - */ - public void pushPositon(Integer orderId, Integer orderType) throws Exception{ - Integer driverId = null; - String startLonLat = null; - String endLonLat = null; - Integer state = 0; - Integer oldState = 0; - Long startServiceTime = null; - Double servedMileage = null; - switch (orderType){ - case 1: - OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); + + private final String socket_uri = "http://172.21.35.142:6000"; + @Autowired + private IOrderTaxiService orderTaxiService; + + @Autowired + private GDMapElectricFenceUtil gdMapElectricFenceUtil; + + @Autowired + private IOrderPrivateCarService orderPrivateCarService; + + @Autowired + private IOrderCrossCityService orderCrossCityService; + + private Map<String, Timer> taskMap = new HashMap<>();//存储定时推送的定时器 + @Resource + private RedisTemplate<String, Object> redisTemplate; + + + /** + * 推送订单状态 + * + * @param type 1=用户,2=司机 + * @param uid 对象id + * @param orderId 订单id + * @param orderType 订单类型(1=专车,2=出租车,3=城际,4=小件物流-同城,5=小件物流-跨城,6=包车) + * @param state 订单状态(1=待接单,2=待出发,3=待到达预约地点,4=待乘客上车,5=服务中,6=完成服务,7=待支付,8=待评价,9=已完成,10=已取消,11=改派中,12=取消待支付) + */ + public void pushOrderState(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state, Integer time) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "ORDER_STATUS"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); + map.put("time", time); + if (orderType == 1 && state == 100) { + map.put("carpooling", 1); + map.put("state", 2); + } else { + map.put("state", state); + } + jsonObject.put("data", map); + + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + } + + /** + * 推单完成后,没有司机接单的推送提醒 + * + * @param type + * @param uid + * @param orderId + * @param orderType + */ + public void pushEndPush(Integer type, Integer uid, Integer orderId, Integer orderType) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "END_PUSH"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); + jsonObject.put("data", map); + + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + } + + /** + * 推送司机位置给乘客端 + */ + public void pushDriverPosition(Integer orderId, Integer orderType) { + Integer userId = null; + switch (orderType) { + case 1: + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); + userId = orderPrivateCar.getUserId(); + break; + case 2: + OrderTaxi orderTaxi = orderTaxiService.selectById(orderId); + userId = orderTaxi.getUserId(); + break; + case 3: + OrderCrossCity orderCrossCity = orderCrossCityService.selectById(orderId); + userId = orderCrossCity.getUserId(); + break; + } + JSONObject data = new JSONObject(); + data.put("id", userId); + data.put("type", 1); + String str = (String) redisTemplate.opsForValue().get(orderId + "_" + orderType); + if (ToolUtil.isEmpty(str)) { + redisTemplate.opsForValue().set(orderId + "_" + orderType, data.toJSONString()); + createTask(orderId, orderType); + } + } + + /** + * 创建定时任务 + * + * @param orderId + */ + public void createTask(Integer orderId, Integer orderType) { + TimerTask task = new TimerTask() { + @Override + public void run() { + try { + PushUtil.this.pushPositon(orderId, orderType); + } catch (Exception e) { + e.printStackTrace(); + } + } + }; + Timer timer = new Timer(); + timer.schedule(task, 1000, 10000);//1秒后开始10秒钟一次的重复执行 + taskMap.put(orderId + "_" + orderType, timer); + } + + /** + * 推送处理方法 + * + * @param orderId + * @param orderType + * @throws Exception + */ + public void pushPositon(Integer orderId, Integer orderType) throws Exception { + Integer driverId = null; + String startLonLat = null; + String endLonLat = null; + Integer state = 0; + Integer oldState = 0; + Long startServiceTime = null; + Double servedMileage = null; + switch (orderType) { + case 1: + OrderPrivateCar orderPrivateCar = orderPrivateCarService.selectById(orderId); if(null == orderPrivateCar){ return; } @@ -235,172 +233,183 @@ state = orderCrossCity.getState(); oldState = orderCrossCity.getOldState(); startServiceTime = null != orderCrossCity.getStartServiceTime() ? orderCrossCity.getStartServiceTime().getTime() : null; - servedMileage = orderCrossCity.getMileage(); - endLonLat = orderCrossCity.getEndLon() + "," + orderCrossCity.getEndLat(); - break; - } - if(state == 7 || state == 8 || state == 9 || state == 10 || state == 12){//删除定时任务 - this.removeTask(orderId, orderType); - return; - } - - //计算预计距离和剩余时间 - String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(driverId)); - if(null == value || "".equals(value)){ - return; - } - - JSONObject msg = new JSONObject(); - msg.put("code", 200); - msg.put("msg", "SUCCESS"); - msg.put("method", "DRIVER_POSITION"); - Map<String, String> map = new HashMap<>(); - map.put("orderId", String.valueOf(orderId)); - map.put("orderType", String.valueOf(orderType)); - map.put("lon", (null != value ? value.split(",")[0] : "")); - map.put("lat", (null != value ? value.split(",")[1] : "")); - if((state == 2 || state == 3 || state == 4) || (oldState != null && (oldState == 2 || oldState == 3 || oldState == 4))){//前往预约地 - // TODO: 2023/11/4 无法修改 - Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, startLonLat, 1); - String d = "0"; - String t = "0"; - if(null == distance){ - System.err.println("查询距离出错了"); - }else{ - d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; - } - map.put("reservationMileage", d);//当前位置距离预约点的剩余里程 - map.put("reservationTime", t);//当前位置距离预约点的剩余分钟 - map.put("servedMileage", "0");//距离起点已经服务的里程 - map.put("servedTime", "0");//距离起点已经服务的时间 - map.put("laveMileage", "0");//距离终点剩余未服务的里程数 - map.put("laveTime", "0");//距离终端剩余未服务的预计时间 - } - if((state == 5 || state == 6) || (oldState != null && (oldState == 5 || oldState == 6))){//服务中 - map.put("reservationMileage", "0");//当前位置距离预约点的剩余里程 - map.put("reservationTime", "0");//当前位置距离预约点的剩余分钟 - map.put("servedMileage", String.valueOf(servedMileage / 1000));//距离起点已经服务的里程 - Integer servedTime = Long.valueOf((new Date().getTime() - startServiceTime) / 60000).intValue(); - map.put("servedTime", servedTime + "");//距离起点已经服务的时间 - // TODO: 2023/11/4 无法修改 - 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), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); - t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; - } - map.put("laveMileage", d);//距离终点剩余未服务的里程数 - map.put("laveTime", t);//距离终端剩余未服务的预计时间 - } - - msg.put("data", map); - - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - //将请求头部和参数合成一个请求 - String value1 = (String) redisTemplate.opsForValue().get(orderId + "_" + orderType); - if(ToolUtil.isEmpty(value1)){ - this.removeTask(orderId, orderType); - return; - } - JSONObject jsonObject = JSON.parseObject(value1); - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", msg.toJSONString()); - params.add("id", jsonObject.getString("id")); - params.add("type", jsonObject.getString("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 id - * @param type - */ - public void pushOffline(Integer id, Integer type){ - JSONObject msg = new JSONObject(); - msg.put("code", 200); - msg.put("msg", "SUCCESS"); - msg.put("method", "OFFLINE"); - msg.put("data", new Object()); - - //调用推送 - HttpHeaders headers = new HttpHeaders(); - // 以表单的方式提交 - headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); - //将请求头部和参数合成一个请求 - MultiValueMap<String, Object> params = new LinkedMultiValueMap<>(); - params.add("msg", msg.toJSONString()); - params.add("id", id.toString()); - params.add("type", type.toString()); - 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 state - */ - public void pushFerryOrderState(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state){ - JSONObject jsonObject = new JSONObject(); - jsonObject.put("code", 200); - jsonObject.put("msg", "SUCCESS"); - jsonObject.put("method", "FERRY"); - Map<String, Object> map = new HashMap<>(); - 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 orderId - */ - public void removeTask(Integer orderId, Integer orderType){ - Timer timer = taskMap.get(orderId + "_" + orderType); - if (null != timer){ - timer.cancel(); - taskMap.remove(orderId + "_" + orderType); - redisTemplate.delete(orderId + "_" + orderType); - } - } + servedMileage = orderCrossCity.getMileage(); + endLonLat = orderCrossCity.getEndLon() + "," + orderCrossCity.getEndLat(); + break; + } + if (state == 7 || state == 8 || state == 9 || state == 10 || state == 12) {//删除定时任务 + this.removeTask(orderId, orderType); + return; + } + + //计算预计距离和剩余时间 + String value = (String) redisTemplate.opsForValue().get("DRIVER" + String.valueOf(driverId)); + if (null == value || "".equals(value)) { + return; + } + + JSONObject msg = new JSONObject(); + msg.put("code", 200); + msg.put("msg", "SUCCESS"); + msg.put("method", "DRIVER_POSITION"); + Map<String, String> map = new HashMap<>(); + map.put("orderId", String.valueOf(orderId)); + map.put("orderType", String.valueOf(orderType)); + map.put("lon", (null != value ? value.split(",")[0] : "")); + map.put("lat", (null != value ? value.split(",")[1] : "")); + if ((state == 2 || state == 3 || state == 4) || (oldState != null && (oldState == 2 || oldState == 3 || oldState == 4))) {//前往预约地 + // TODO: 2023/11/4 无法修改 + Map<String, String> distance = gdMapElectricFenceUtil.getDistance(value, startLonLat, 1); + String d = "0"; + String t = "0"; + if (null == distance) { + System.err.println("查询距离出错了"); + } else { + d = new BigDecimal(distance.get("distance")).divide(new BigDecimal(1000), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); + t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; + } + map.put("reservationMileage", d);//当前位置距离预约点的剩余里程 + map.put("reservationTime", t);//当前位置距离预约点的剩余分钟 + map.put("servedMileage", "0");//距离起点已经服务的里程 + map.put("servedTime", "0");//距离起点已经服务的时间 + map.put("laveMileage", "0");//距离终点剩余未服务的里程数 + map.put("laveTime", "0");//距离终端剩余未服务的预计时间 + } + if ((state == 5 || state == 6) || (oldState != null && (oldState == 5 || oldState == 6))) {//服务中 + map.put("reservationMileage", "0");//当前位置距离预约点的剩余里程 + map.put("reservationTime", "0");//当前位置距离预约点的剩余分钟 + map.put("servedMileage", String.valueOf(servedMileage / 1000));//距离起点已经服务的里程 + Integer servedTime = Long.valueOf((new Date().getTime() - startServiceTime) / 60000).intValue(); + map.put("servedTime", servedTime + "");//距离起点已经服务的时间 + // TODO: 2023/11/4 无法修改 + 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), new MathContext(2, RoundingMode.HALF_EVEN)).toString(); + t = new BigDecimal(distance.get("duration")).divide(new BigDecimal(60), new MathContext(2, RoundingMode.HALF_EVEN)).intValue() + ""; + } + map.put("laveMileage", d);//距离终点剩余未服务的里程数 + map.put("laveTime", t);//距离终端剩余未服务的预计时间 + } + + msg.put("data", map); + + //将请求头部和参数合成一个请求 + String value1 = (String) redisTemplate.opsForValue().get(orderId + "_" + orderType); + if (ToolUtil.isEmpty(value1)) { + this.removeTask(orderId, orderType); + return; + } + JSONObject jsonObject = JSON.parseObject(value1); + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", msg.toJSONString()); + params.put("id", jsonObject.getIntValue("id")); + params.put("type", jsonObject.getIntValue("type")); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + + } + + /** + * 删除定时任务 + * + * @param orderId + */ + public void removeTask(Integer orderId, Integer orderType) { + Timer timer = taskMap.get(orderId + "_" + orderType); + if (null != timer) { + timer.cancel(); + taskMap.remove(orderId + "_" + orderType); + redisTemplate.delete(orderId + "_" + orderType); + } + } + + /** + * 推送强迫下线 + * + * @param id + * @param type + */ + public void pushOffline(Integer id, Integer type) { + JSONObject msg = new JSONObject(); + msg.put("code", 200); + msg.put("msg", "SUCCESS"); + msg.put("method", "OFFLINE"); + msg.put("data", new Object()); + + + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", msg.toJSONString()); + params.put("id", id); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + } + + /** + * 摆渡抢单成功后推单 + * + * @param type + * @param uid + * @param orderId + * @param orderType + * @param state + */ + public void pushFerryOrderState(Integer type, Integer uid, Integer orderId, Integer orderType, Integer state) { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("code", 200); + jsonObject.put("msg", "SUCCESS"); + jsonObject.put("method", "FERRY"); + Map<String, Object> map = new HashMap<>(); + map.put("orderId", orderId); + map.put("orderType", orderType); + map.put("state", state); + jsonObject.put("data", map); + + //调用推送 + HttpRequest post = HttpUtil.createPost(socket_uri + "/netty/sendMsgToClient"); + post.header("Content-Type", MediaType.APPLICATION_FORM_URLENCODED_VALUE); + //将请求头部和参数合成一个请求 + Map<String, Object> params = new HashMap<>(); + params.put("msg", jsonObject.toJSONString()); + params.put("id", uid); + params.put("type", type); + post.form(params); + HttpResponse execute = post.execute(); + if (200 != execute.getStatus()) { + System.err.println("推送异常"); + } else { + JSONObject jsonObject1 = JSON.parseObject(execute.body(), JSONObject.class); + if (jsonObject1.getIntValue("code") != 200) { + System.err.println(jsonObject1.getString("msg")); + } + } + } } -- Gitblit v1.7.1