| | |
| | | response.setSuccess(true); |
| | | response.setMessage("登录成功"); |
| | | response.setToken(jsonResult.getString("token")); |
| | | response.setServerid(jsonResult.getInteger("serverid")); |
| | | break; |
| | | case -1: |
| | | response.setSuccess(false); |
| | |
| | | * 获取有效的token,如果token无效则自动登录 |
| | | */ |
| | | private String getValidTokenWithAutoLogin() { |
| | | // 获取当前token |
| | | String token = gpsConfigService.getValidToken("gps51"); |
| | | if (token == null || token.isEmpty()) { |
| | | //读取gspconfig中的域名,用户名,密码 |
| | | SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51"); |
| | | if (config == null) { |
| | | return null; |
| | | try { |
| | | // 获取当前token |
| | | String token = gpsConfigService.getValidToken("gps51"); |
| | | if (token == null || token.isEmpty()) { |
| | | System.out.println("当前token无效,尝试重新登录"); |
| | | //读取gspconfig中的域名,用户名,密码 |
| | | SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51"); |
| | | if (config == null) { |
| | | System.err.println("GPS配置信息未找到,无法进行登录"); |
| | | return null; |
| | | } |
| | | |
| | | String username = config.getUsername(); |
| | | String password = config.getPassword(); |
| | | String domain = config.getDomain(); |
| | | |
| | | if (username == null || password == null || domain == null) { |
| | | System.err.println("GPS配置信息不完整,用户名、密码或域名为空"); |
| | | return null; |
| | | } |
| | | |
| | | // token无效,尝试登录 |
| | | GpsLoginRequest loginRequest = new GpsLoginRequest(); |
| | | loginRequest.setType("USER"); |
| | | loginRequest.setFrom("WEB"); |
| | | loginRequest.setUsername(username); |
| | | loginRequest.setPassword(password); |
| | | loginRequest.setDomain(domain); |
| | | |
| | | System.out.println("开始登录GPS系统,用户名: " + username + ", 域名: " + domain); |
| | | GpsLoginResponse loginResponse = login(loginRequest); |
| | | |
| | | if (loginResponse.isSuccess()) { |
| | | //将token写入gspconfig |
| | | token = loginResponse.getToken(); |
| | | Integer serviceid = loginResponse.getServerid(); |
| | | //getTokenExpireTime 这个是没有的 需要自己计算,当前时间+23小时 |
| | | Date expireTime = DateUtils.addHours(new Date(), 23); |
| | | gpsConfigService.updateToken("gps51", token,serviceid, expireTime); |
| | | System.out.println("GPS系统登录成功,token已更新"); |
| | | return token; |
| | | } else { |
| | | System.err.println("GPS系统登录失败: " + loginResponse.getMessage()); |
| | | return null; |
| | | } |
| | | } else { |
| | | System.out.println("使用现有有效token"); |
| | | } |
| | | String username = config.getUsername(); |
| | | String password = config.getPassword(); |
| | | String domain = config.getDomain(); |
| | | // token无效,尝试登录 |
| | | GpsLoginRequest loginRequest = new GpsLoginRequest(); |
| | | loginRequest.setType("USER"); |
| | | loginRequest.setFrom("WEB"); |
| | | loginRequest.setUsername(username); |
| | | loginRequest.setPassword(password); |
| | | loginRequest.setDomain(domain); |
| | | GpsLoginResponse loginResponse = login(loginRequest); |
| | | |
| | | if (loginResponse.isSuccess()) { |
| | | //将token写入gspconfig |
| | | token = loginResponse.getToken(); |
| | | //getTokenExpireTime 这个是没有的 需要自己计算,当前时间+23小时 |
| | | Date expireTime = DateUtils.addHours(new Date(), 23); |
| | | gpsConfigService.updateToken("gps51", token, expireTime); |
| | | return token; |
| | | } |
| | | return token; |
| | | } catch (Exception e) { |
| | | System.err.println("获取token时发生异常: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | return token; |
| | | } |
| | | |
| | | /** |
| | |
| | | |
| | | String username = config.getUsername(); |
| | | // 构建请求URL |
| | | String url = config.getDomain() + "/webapi?action=querymonitorlist&token=" + token; |
| | | String url = config.getDomain() + "/webapi?action=querymonitorlist&token=" + token+"&serverid="+config.getServerid(); |
| | | Map<String, String> params = new HashMap<>(); |
| | | params.put("username", username); |
| | | |
| | |
| | | response.setCause("未找到GPS配置信息"); |
| | | return response; |
| | | } |
| | | System.out.println("GPS配置信息获取成功!"); |
| | | |
| | | // 获取有效的token,如果无效则自动登录 |
| | | String token = getValidTokenWithAutoLogin(); |
| | |
| | | return response; |
| | | } |
| | | |
| | | System.out.println("token获取成功!"+token); |
| | | |
| | | // 构建请求URL |
| | | String url = config.getDomain() + "/webapi?action=lastposition&token="+token; |
| | | |
| | | String url = config.getDomain() + "/webapi?action=lastposition&token="+token+"&serverid="+config.getServerid(); |
| | | System.out.println("请求URL:"+url); |
| | | |
| | | // 构建请求参数 |
| | | Map<String, String> params = new HashMap<>(); |
| | | |
| | |
| | | if (request.getDeviceids() != null && !request.getDeviceids().isEmpty()) { |
| | | params.put("deviceids", JSON.toJSONString(request.getDeviceids())); |
| | | } |
| | | |
| | | System.out.println("请求参数:"+params); |
| | | |
| | | try { |
| | | |
| | |
| | | |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public GpsTrackQueryResponse queryTracks(GpsTrackQueryRequest request) { |
| | | try { |
| | | // 获取GPS配置信息 |
| | | SysGpsConfig config = gpsConfigService.selectGpsConfigByKey("gps51"); |
| | | if (config == null) { |
| | | System.err.println("GPS配置信息未找到,configKey: gps51"); |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("未找到GPS配置信息"); |
| | | return response; |
| | | } |
| | | |
| | | System.out.println("GPS配置信息获取成功,域名: " + config.getDomain() + ", 用户名: " + config.getUsername()); |
| | | |
| | | // 获取有效的token,如果无效则自动登录 |
| | | String token = getValidTokenWithAutoLogin(); |
| | | if (token == null) { |
| | | System.err.println("获取token失败"); |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("获取token失败"); |
| | | return response; |
| | | } |
| | | |
| | | System.out.println("Token获取成功: " + token); |
| | | |
| | | // 构建请求URL |
| | | String url = config.getDomain() + "/webapi?action=querytracks&token=" + token+"&serverid="+config.getServerid(); |
| | | System.out.println("请求URL: " + url); |
| | | |
| | | // 构建请求参数 |
| | | Map<String, String> params = new HashMap<>(); |
| | | params.put("deviceid", request.getDeviceid()); |
| | | params.put("begintime", request.getBegintime()); |
| | | params.put("endtime", request.getEndtime()); |
| | | if (request.getTimezone() != null) { |
| | | params.put("timezone", String.valueOf(request.getTimezone())); |
| | | } |
| | | |
| | | System.out.println("请求参数: " + params); |
| | | |
| | | // 发送HTTP请求 |
| | | String result = HttpUtil.post(url, params); |
| | | System.out.println("HTTP响应结果: " + result); |
| | | |
| | | if (result == null || result.trim().isEmpty()) { |
| | | System.err.println("HTTP请求返回空结果"); |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("HTTP请求返回空结果"); |
| | | return response; |
| | | } |
| | | |
| | | JSONObject jsonResult = JSON.parseObject(result); |
| | | |
| | | // 解析响应 |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(jsonResult.getInteger("status")); |
| | | response.setCause(jsonResult.getString("cause")); |
| | | response.setDeviceid(jsonResult.getString("deviceid")); |
| | | |
| | | if (response.getStatus() == 0) { |
| | | |
| | | // 解析轨迹记录列表 |
| | | JSONArray recordsArray = jsonResult.getJSONArray("records"); |
| | | List<GpsTrackPoint> records = new ArrayList<>(); |
| | | |
| | | for (int i = 0; i < recordsArray.size(); i++) { |
| | | JSONObject recordJson = recordsArray.getJSONObject(i); |
| | | GpsTrackPoint record = new GpsTrackPoint(); |
| | | record.setTrackCount(recordJson.getInteger("trackCount")); |
| | | record.setStarttime(recordJson.getLong("starttime")); |
| | | record.setEndtime(recordJson.getLong("endtime")); |
| | | record.setTrackid(recordJson.getInteger("trackid")); |
| | | record.setArrivedtime(recordJson.getLong("arrivedtime")); |
| | | record.setUpdatetime(recordJson.getLong("updatetime")); |
| | | record.setLatitude(recordJson.getDouble("callat")); |
| | | record.setLongitude(recordJson.getDouble("callon")); |
| | | record.setAltitude(recordJson.getDouble("altitude")); |
| | | record.setRadius(recordJson.getInteger("radius")); |
| | | record.setSpeed(recordJson.getDouble("speed")); |
| | | record.setRecorderspeed(recordJson.getDouble("recorderspeed")); |
| | | record.setTotaldistance(recordJson.getInteger("totaldistance")); |
| | | record.setCourse(recordJson.getInteger("course")); |
| | | record.setStatus(recordJson.getLong("status")); |
| | | record.setStrstatus(recordJson.getString("strstatus")); |
| | | record.setStrstatusen(recordJson.getString("strstatusen")); |
| | | record.setGotsrc(recordJson.getString("gotsrc")); |
| | | record.setRxlevel(recordJson.getInteger("rxlevel")); |
| | | record.setGpsvalidnum(recordJson.getInteger("gpsvalidnum")); |
| | | record.setReportmode(recordJson.getShort("reportmode")); |
| | | |
| | | records.add(record); |
| | | } |
| | | |
| | | response.setRecords(records); |
| | | } |
| | | |
| | | return response; |
| | | } catch (Exception e) { |
| | | System.err.println("查询历史轨迹异常: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("查询历史轨迹失败:" + (e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName())); |
| | | return response; |
| | | } |
| | | } |
| | | } |