| | |
| | | |
| | | //判断用户或者司机长连接 |
| | | 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);//获取缓存中最新的数据 |
| | |
| | | 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端登录的操作 |
| | |
| | | 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())); |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | 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){//开始存入数据库 |
| | |
| | | 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()){ |