package com.securityControl.system.utils; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.alibaba.fastjson2.TypeReference; import com.securityControl.common.core.utils.DateUtils; import com.securityControl.common.core.utils.aes.StringHelper; import com.securityControl.system.domain.vo.*; import com.securityControl.system.utils.json.JacksonHelper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import java.util.*; @Slf4j @Component public class VideoUtil { /** * 统一视频平台地址 */ private static String VIDEO_ADDRESS; /** * 统一视频平台账号 */ private static String VIDEO_USERNAME; /** * 统一视频平台密码 */ private static String VIDEO_PASSWORD; private static final String LOGIN_URL = "login";// 登录地址 private static final String LOGIN_URL2 = "login2";// 登录地址 private static final String GETBALLURL = "CAS/C_CAS_QueryPUIDRes";//批量获取球机状态接口 /** * 系统登录,获取token * * @return token */ public static String login(Map map ,String Q2HTTPURL) { try { String json = new JacksonHelper().jsonSerialize(map); String result = HttpHelp.doHttpPosts(Q2HTTPURL + LOGIN_URL2, json); if (result != null) { com.alibaba.fastjson2.JSONObject object = com.alibaba.fastjson2.JSONObject.parseObject(result); if (object != null) { String msg = object.getString("msg"); String token = object.getString("token"); return token; } else { return null; } } return null; } catch (Exception e) { log.error("登录异常:" + e.toString(), e); } return null; } public static List getBallStatus(List list, String token,Map map ,String Q2HTTPURL) { if (StringHelper.isEmpty(token)) { token = login(map,Q2HTTPURL); } List reList = new ArrayList(); try { String[] ans2 = list.toArray(new String[list.size()]); JSONObject jsonObject = new JSONObject();//参数封装 jsonObject.put("puid", ans2); String res = HttpClientUtil.doHttpPost(Q2HTTPURL + GETBALLURL + "?token=" + token, jsonObject, null); if (!StringHelper.isEmpty(res)) { reList = com.alibaba.fastjson2.JSON.parseObject(res, new TypeReference>() { }); } } catch (Exception e) { log.error("获取list集合数据状态异常:" + e.toString(), e); } return reList; } @Value("${tvideo.uvpUrl}") public void setVIDEO_ADDRESS(String VIDEO_ADDRESS) { VideoUtil.VIDEO_ADDRESS = VIDEO_ADDRESS; } @Value("${tvideo.uvpAk}") public void setVIDEO_USERNAME(String VIDEO_USERNAME) { VideoUtil.VIDEO_USERNAME = VIDEO_USERNAME; } @Value("${tvideo.uvpSk}") public void setVIDEO_PASSWORD(String VIDEO_PASSWORD) { VideoUtil.VIDEO_PASSWORD = VIDEO_PASSWORD; } /** * 登录统一视频平台登录接口 */ private static final String T_LOGIN_URL = "/uvp-backend-common/api/v1/authorization"; /** * 查询设备信息数据 */ private static final String DEVICE_INFO="/uvp-backend-common/api/v1/resource/queryDev"; // private static final String DEVICE_UP_DOWN="/uvp-backend-maintenance/api/v1/dev/queryDevStatusDescriptionInfo"; private static final String DEVICE_UP_DOWN="/uvp-backend-maintenance/api/v1/dev/queryDevStatusOnOffLineInfo"; /** * 统一视频平台登录获取token * @return */ public static String getToken() { String token=null; try{ Map body = new HashMap<>(16); body.put("ak", VIDEO_USERNAME); body.put("sk", Base64.getEncoder().encodeToString(VIDEO_PASSWORD.getBytes())); HttpResponse execute = HttpUtil.createPost(VIDEO_ADDRESS + T_LOGIN_URL).body(JSON.toJSONString(body)).execute(); boolean ok = execute.isOk(); if (ok) { String responseBody = execute.body(); log.error(responseBody); TYTokens tokens = JSON.parseObject(responseBody, TYTokens.class); if (Objects.equals("true", tokens.getSuccessful())) { token = tokens.getResultValue().getToken(); log.error("token==="+token); return token; } } }catch (Exception e){ log.error(e.toString(),e); } return token; } /** * 获取球机消息数据 * list 最多五十條 */ public static List getDeviceList(List list){ List res=new ArrayList<>(); String[] params = list.toArray(new String[list.size()]); try{ String token=getToken(); if(token!=null) { String url = VIDEO_ADDRESS+DEVICE_INFO+"?ak="+VIDEO_USERNAME+"&token="+token+"×tamp="+ DateUtils.getTimeStamp()+"&nonce="+ UUID.randomUUID(); Map body = new HashMap<>(16); body.put("devCodes", params); String str1 = JSON.toJSONString(body); HttpResponse execute = HttpUtil.createPost(url).body(str1).execute(); boolean ok = execute.isOk(); log.error("执行结果1--->" + ok); String responseBody = execute.body(); if (ok) { TYResultDeviceData data = JSON.parseObject(responseBody, TYResultDeviceData.class); if (Objects.equals("true", data.getSuccessful())) { res=data.getResultValue(); return res; } } } }catch (Exception e){ log.error(e.toString(),e); } return res; } /** * 球机上下线记录 * * @param devList 统一平台编码 * @param startTime 开始时间 YYYY-MM-DD * @param endTime 结束时间 YYYY-MM-DD */ public static List getDevUpDown(List devList, String startTime, String endTime) { List list = new ArrayList<>(); try { String[] params = devList.toArray(new String[devList.size()]); String token = getToken(); String url = VIDEO_ADDRESS + DEVICE_UP_DOWN + "?ak=" + VIDEO_USERNAME + "&token=" + token + "×tamp=" + DateUtils.getTimeStamp() + "&nonce=" + UUID.randomUUID(); if (token != null) { Map body = new HashMap<>(16); body.put("devCodes", params); body.put("startTime", startTime); body.put("endTime", endTime); body.put("pageNo", 1); body.put("pageSize", 200); String str1 = JSON.toJSONString(body); HttpResponse execute = HttpUtil.createPost(url).body(str1).execute(); boolean ok = execute.isOk(); if (ok) { String responseBody = execute.body(); STDevUpDownData data = JSON.parseObject(responseBody, STDevUpDownData.class); return data.getResultValue(); } } } catch (Exception e) { log.error(e.toString(), e); } return list; } }