package com.agentdriving.user.modular.system.util; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.agentdriving.user.modular.system.warpper.PushOrderInfoWarpper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; 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 java.util.HashMap; import java.util.Map; /** * socket推单处理类 */ @Component public class PushUtil { Logger logger = LoggerFactory.getLogger("ServiceLog"); @Autowired private RestTemplate internalRestTemplate; /** * 推送强迫下线 * @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 params = new LinkedMultiValueMap<>(); params.add("msg", msg.toJSONString()); params.add("id", id.toString()); params.add("type", type.toString()); HttpEntity> 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){ logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } /** * 下班提醒 * @param id * @param type */ public void pushOffWork(Integer id, Integer type){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "OFF_WORK"); msg.put("data", new Object()); //调用推送 HttpHeaders headers = new HttpHeaders(); // 以表单的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //将请求头部和参数合成一个请求 MultiValueMap params = new LinkedMultiValueMap<>(); params.add("msg", msg.toJSONString()); params.add("id", id.toString()); params.add("type", type.toString()); HttpEntity> 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){ logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } /** * 推送订单状态 * @param id * @param type * @param orderId * @param status */ public void pushOrderStatus(Integer id, Integer type, Long orderId, Integer status){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "ORDER_STATUS"); Map map = new HashMap<>(); map.put("orderId", orderId); map.put("status", status); msg.put("data", map); //调用推送 HttpHeaders headers = new HttpHeaders(); // 以表单的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //将请求头部和参数合成一个请求 MultiValueMap params = new LinkedMultiValueMap<>(); params.add("msg", msg.toJSONString()); params.add("id", id.toString()); params.add("type", type.toString()); HttpEntity> 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){ logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } /** * 推送订单数据 * @param id * @param type * @param pushOrderInfoWarpper */ public void pushOrderInfo(Integer id, Integer type, PushOrderInfoWarpper pushOrderInfoWarpper){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "ORDER_INFO"); msg.put("data", pushOrderInfoWarpper); //调用推送 HttpHeaders headers = new HttpHeaders(); // 以表单的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //将请求头部和参数合成一个请求 MultiValueMap params = new LinkedMultiValueMap<>(); params.add("msg", msg.toJSONString()); params.add("id", id.toString()); params.add("type", type.toString()); HttpEntity> 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){ logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } /** * 系统推单推送 * @param id 接受对象id * @param type 接受对象类型(1=用户,2=司机) * @param orderId 订单id * @param countdown 抢单倒计时(秒) */ public void pushGrabOrder(Integer id, Integer type, Long orderId, Integer countdown){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "GRAB_ORDER"); Map map = new HashMap<>(); map.put("orderId", orderId); map.put("countdown", countdown); msg.put("data", map); //调用推送 HttpHeaders headers = new HttpHeaders(); // 以表单的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //将请求头部和参数合成一个请求 MultiValueMap params = new LinkedMultiValueMap<>(); params.add("msg", msg.toJSONString()); params.add("id", id.toString()); params.add("type", type.toString()); HttpEntity> 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){ logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } /** * 系统推单推送 附加(防止 用户推单后,范围内的司机20s 内接不到单的补充方法) * @param id 接受对象id * @param type 接受对象类型(1=用户,2=司机) */ public void pushGrabOrderExtras(Integer id, Integer type){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "PUSH_ORDER"); Map map = new HashMap<>(); msg.put("data", map); //调用推送 HttpHeaders headers = new HttpHeaders(); // 以表单的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //将请求头部和参数合成一个请求 MultiValueMap params = new LinkedMultiValueMap<>(); params.add("msg", msg.toJSONString()); params.add("id", id.toString()); params.add("type", type.toString()); HttpEntity> 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){ logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } /** * 转单成功推送 * @param id * @param type */ public void pushTransferSuccessful(Integer id, Integer type, Long orderId){ JSONObject msg = new JSONObject(); msg.put("code", 200); msg.put("msg", "SUCCESS"); msg.put("method", "TRANSFER_SUCCESS"); Map map = new HashMap<>(); map.put("orderId", orderId); msg.put("data", map); //调用推送 HttpHeaders headers = new HttpHeaders(); // 以表单的方式提交 headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); //将请求头部和参数合成一个请求 MultiValueMap params = new LinkedMultiValueMap<>(); params.add("msg", msg.toJSONString()); params.add("id", id.toString()); params.add("type", type.toString()); HttpEntity> 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){ logger.debug(jsonObject1.getString("msg")); System.err.println(jsonObject1.getString("msg")); } } }