From cd972838ea38c1bd5e742dc5298f32a6b8d6ca71 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 27 六月 2025 15:47:14 +0800 Subject: [PATCH] 提交推送服务 --- MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java | 63 ++++++++----------------------- 1 files changed, 16 insertions(+), 47 deletions(-) diff --git a/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java b/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java index 1c6782b..014705c 100644 --- a/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java +++ b/MessagePushTravel/src/main/java/com/sinata/push/util/echo/NettyServerController.java @@ -115,6 +115,13 @@ //判断用户或者司机长连接 if(type==1){ + //存储通讯通道 + if(null != ctx && ctx.channel().isActive()){ + System.err.println("开始存储用户通道:" + sdf.format(new Date()) + "----" + userId1); + NettyChannelMap.update("USER" + userId1, ctx); + String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); + ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); + } //确保账号在单个设备上登录 if(StringUtil.isNotEmpty(token)){ String token_ = (String)redisTemplate.opsForValue().get("USER_" + userId1);//获取缓存中最新的数据 @@ -140,43 +147,14 @@ redisTemplate.opsForValue().set("USER_" + userId1, token); } } - //存储通讯通道 - if(null != ctx && ctx.channel().isActive()){ - System.err.println("开始存储用户通道:" + sdf.format(new Date()) + "----" + userId1); - NettyChannelMap.update("USER" + userId1, ctx); - String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); - ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); - } }else{ - //TODO 存储最后一次上传的时间(用于保证车载端断电后1小时自动下班) - if(StringUtil.isNotEmpty(device) && device.equals("carDevice")){ - redisTemplate.opsForValue().set("DEVICE_" + userId1, String.valueOf(System.currentTimeMillis())); - - String token_ = (String)redisTemplate.opsForValue().get("DRIVER_" + userId1);//缓存中拿最新数据 - if(StringUtil.isNotEmpty(token_) && !token_.equals(token)){ - //如果是车载端登录,则将其它端都强迫下线 - JSONObject msg_ = new JSONObject(); - msg_.put("code", 200); - msg_.put("msg", "SUCCESS"); - msg_.put("method", "OFFLINE"); - msg_.put("data", new Object()); - this.sendMsgToClient(ctx, msg_.toJSONString());//给当前通道发送消息 - TimerTask timerTask = new TimerTask() { - @Override - public void run() { - NettyChannelMap.remove(ctx); - } - }; - Timer timer = new Timer(); - timer.schedule(timerTask, 3000); - timer.cancel(); - } - if(StringUtil.isEmpty(token_)){//确保登录的时候存储token失败的情况 - redisTemplate.opsForValue().set("DRIVER_" + userId1, token); - } - } - - + //存储通讯通道 + if(null != ctx && ctx.channel().isActive()){ + System.err.println("开始存储司机通道:" + sdf.format(new Date()) + "----" + userId1); + NettyChannelMap.update("DRIVER" + userId1, ctx); + String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); + ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); + } //确保账号在单个设备上登录 String value = (String)redisTemplate.opsForValue().get("DEVICE_" + userId1); if(StringUtil.isNotEmpty(token) && StringUtil.isEmpty(value)){//APP端登录的操作 @@ -203,15 +181,6 @@ redisTemplate.opsForValue().set("DRIVER_" + userId1, token); } } - - - //存储通讯通道 - if(null != ctx && ctx.channel().isActive()){ - System.err.println("开始存储司机通道:" + sdf.format(new Date()) + "----" + userId1); - NettyChannelMap.update("DRIVER" + userId1, ctx); - String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); - ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); - } } } } @@ -235,7 +204,7 @@ Double lat = jsonCon.getDouble("lat"); Double computeAzimuth = jsonCon.getDouble("computeAzimuth"); Double altitude = jsonCon.getDouble("altitude"); - System.out.println("司机上传位置:" + sdf.format(new Date()) + "----" + driverId); + System.out.println("司机上传位置:" + sdf.format(new Date()) + "----" + jsonCon.toJSONString()); if(SinataUtil.isNotEmpty(driverId)){ if(null != lon && 0 != lon && null != lat && 0 != lat){ if(null != orderId && 0 != driverId && null != orderType && 0 != orderType){//开始存入数据库 @@ -248,7 +217,7 @@ params.put("directionAngle", String.valueOf(computeAzimuth)); params.put("altitude", String.valueOf(altitude)); HttpRequest post = HttpUtil.createPost(URLUtil.zuul + "/driver-server/base/savePosition"); - post.contentType(MediaType.APPLICATION_FORM_URLENCODED.getType()); + post.contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE); post.form(params); HttpResponse execute = post.execute(); if(200 != execute.getStatus()){ -- Gitblit v1.7.1