| | |
| | | * 获取有效的token,如果token无效则自动登录 |
| | | */ |
| | | private String getValidTokenWithAutoLogin() { |
| | | 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.setUsername(username); |
| | | loginRequest.setPassword(password); |
| | | loginRequest.setDomain(domain); |
| | | |
| | | System.out.println("开始登录GPS系统,用户名: " + username + ", 域名: " + domain); |
| | | GpsLoginResponse loginResponse = login(loginRequest); |
| | | |
| | | if (loginResponse.isSuccess()) { |
| | |
| | | //getTokenExpireTime 这个是没有的 需要自己计算,当前时间+23小时 |
| | | Date expireTime = DateUtils.addHours(new Date(), 23); |
| | | gpsConfigService.updateToken("gps51", token, expireTime); |
| | | System.out.println("GPS系统登录成功,token已更新"); |
| | | return token; |
| | | } else { |
| | | System.err.println("GPS系统登录失败: " + loginResponse.getMessage()); |
| | | return null; |
| | | } |
| | | } else { |
| | | System.out.println("使用现有有效token"); |
| | | } |
| | | return token; |
| | | } catch (Exception e) { |
| | | System.err.println("获取token时发生异常: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | /** |
| | |
| | | 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; |
| | | 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 { |
| | | |
| | |
| | | |
| | | @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; |
| | | System.out.println("请求URL: " + url); |
| | | |
| | | // 构建请求参数 |
| | | Map<String, String> params = new HashMap<>(); |
| | |
| | | params.put("timezone", String.valueOf(request.getTimezone())); |
| | | } |
| | | |
| | | try { |
| | | 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); |
| | | |
| | | // 解析响应 |
| | |
| | | response.setDeviceid(jsonResult.getString("deviceid")); |
| | | |
| | | if (response.getStatus() == 0) { |
| | | |
| | | if(jsonResult.getJSONObject("result")==null) |
| | | { |
| | | System.err.println("查询轨迹失败,轨迹记录为空"); |
| | | GpsTrackQueryResponse responseErr = new GpsTrackQueryResponse(); |
| | | responseErr.setStatus(-1); |
| | | responseErr.setCause("轨迹记录为空"); |
| | | return responseErr; |
| | | } |
| | | |
| | | // 解析轨迹记录列表 |
| | | JSONArray recordsArray = jsonResult.getJSONArray("records"); |
| | | List<GpsTrackPoint> records = new ArrayList<>(); |
| | |
| | | |
| | | return response; |
| | | } catch (Exception e) { |
| | | System.err.println("查询历史轨迹异常: " + e.getMessage()); |
| | | e.printStackTrace(); |
| | | GpsTrackQueryResponse response = new GpsTrackQueryResponse(); |
| | | response.setStatus(-1); |
| | | response.setCause("查询历史轨迹失败:" + e.getMessage()); |
| | | response.setCause("查询历史轨迹失败:" + (e.getMessage() != null ? e.getMessage() : e.getClass().getSimpleName())); |
| | | return response; |
| | | } |
| | | } |