2021与蓝度共同重构项目,服务端
liuhaonan
2022-10-25 d495f9b8cdc83663e4189bc3cc72ac9543ff5555
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxAPIUtil.java
@@ -1,7 +1,6 @@
package com.sandu.ximon.admin.utils;
import com.alibaba.fastjson.JSON;
import com.sandu.common.execption.BusinessException;
import com.sandu.ximon.admin.config.VnnoxConstant;
import com.sandu.ximon.admin.config.VnnoxUrl;
import com.sandu.ximon.admin.utils.request.*;
@@ -13,7 +12,13 @@
import org.springframework.stereotype.Component;
import java.net.URISyntaxException;
import java.util.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@Component("VnnoxAPIUtil")
@AllArgsConstructor
@@ -21,6 +26,8 @@
    //@Autowired
    private RedisUtils redisUtils;
    private CountDownLatchUtil countDownLatchUtil;
    public static VnnoxAPIUtil getBean() {
        return (VnnoxAPIUtil) SpringContextUtil.getBean("VnnoxAPIUtil");
@@ -30,11 +37,7 @@
     * 获取token
     */
    public void getToken() {
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.GET_TOKEN),
                new VnnoxGetTokenRequest().toJson(),
                new CommonHeader(CommonHeader.FORM, false)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.GET_TOKEN), new VnnoxGetTokenRequest().toJson(), new CommonHeader(CommonHeader.FORM, false));
        CommonResponse commonResponse = JSON.parseObject(result, CommonResponse.class);
        VnnoxGetTokenResponse response = new VnnoxGetTokenResponse().parse(commonResponse);
@@ -57,11 +60,7 @@
        urlParameters.add(new BasicNameValuePair("start", start.toString()));
        urlParameters.add(new BasicNameValuePair("name", name));
        String result = VnnoxRequestUtil.GetWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.GET_PLAYER_LIST),
                urlParameters,
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.GetWithHeader(VnnoxUrl.getUrl(VnnoxUrl.GET_PLAYER_LIST), urlParameters, new CommonHeader(CommonHeader.JSON, true));
        return new VnnoxPlayerListResponse().parse(JSON.parseObject(result, CommonResponse.class));
    }
@@ -84,11 +83,7 @@
        VnnoxSyncCurrentInfoRequest vnnoxSyncCurrentInfoRequest = new VnnoxSyncCurrentInfoRequest();
        vnnoxSyncCurrentInfoRequest.setPlayerIds(playerIds);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.SYNC_CURRENT_INFO),
                vnnoxSyncCurrentInfoRequest.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.SYNC_CURRENT_INFO), vnnoxSyncCurrentInfoRequest.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxSyncCurrentInfoResponse response = JSON.parseObject(result, VnnoxSyncCurrentInfoResponse.class);
@@ -122,11 +117,7 @@
        vnnoxScreenStatusRequest.setPlayerIds(playerIds);
        vnnoxScreenStatusRequest.setStatus(type);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.SCREEN_STATUS),
                vnnoxScreenStatusRequest.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.SCREEN_STATUS), vnnoxScreenStatusRequest.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
@@ -147,11 +138,7 @@
        request.setPlayerIds(playerIds);
        request.setValue(vol);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.CHANGE_VOL),
                request.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.CHANGE_VOL), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        return response.getData();
@@ -170,11 +157,7 @@
        request.setPlayerIds(playerIds);
        request.setValue(brightness);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.CHANGE_BRIGHTNESS),
                request.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.CHANGE_BRIGHTNESS), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        return response.getData();
@@ -193,11 +176,7 @@
        request.setPlayerIds(players);
        request.setNoticeUrl(VnnoxConstant.SCREEN_SHOT_NOTIFY_URL);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.SCREEN_SHOT),
                request.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.SCREEN_SHOT), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        return response.getData();
@@ -215,11 +194,7 @@
        request.setPlayerIds(players);
        request.setNoticeUrl(VnnoxConstant.SCREEN_SHOT_NOTIFY_URL);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.SCREEN_SHOT),
                request.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.SCREEN_SHOT), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        if (result.startsWith("{") && result.endsWith("}")) {
            VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
@@ -250,11 +225,7 @@
        request.setPlayerIds(playerIdList);
        request.setNoticeUrl(VnnoxConstant.SCREEN_SHOT_NOTIFY_URL);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.REBOOT),
                request.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.REBOOT), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        return response.getData();
@@ -269,11 +240,7 @@
        request.setOption(option);
        request.setNoticeUrl(VnnoxConstant.SCREEN_SHOT_NOTIFY_URL);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.SIMU_LCAST),
                request.toJson(),
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.SIMU_LCAST), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        return response.getData();
@@ -294,14 +261,106 @@
        map.put("noticeUrl", VnnoxConstant.SCREEN_SHOT_NOTIFY_URL);
        map.put("playerIds", playerId);
        String s = JSON.toJSONString(map);
        String result = VnnoxRequestUtil.PostWithHeader(
                VnnoxUrl.getUrl(VnnoxUrl.NTP_SYNC),
                s,
                new CommonHeader(CommonHeader.JSON, true)
        );
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.NTP_SYNC), s, new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        return response.getData();
    }
    public List<LedPlayerEntity> saveCurrentInfo(List<LedPlayerEntity> list) {
        List<String> playerIds = new ArrayList<>();
        if (list.isEmpty()) {
            return null;
        }
        for (LedPlayerEntity playerEntity : list) {
            playerIds.add(playerEntity.getPlayerId());
        }
        VnnoxSyncCurrentInfoRequest vnnoxSyncCurrentInfoRequest = new VnnoxSyncCurrentInfoRequest();
        vnnoxSyncCurrentInfoRequest.setPlayerIds(playerIds);
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.SYNC_CURRENT_INFO), vnnoxSyncCurrentInfoRequest.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxSyncCurrentInfoResponse response = JSON.parseObject(result, VnnoxSyncCurrentInfoResponse.class);
        for (LedPlayerEntity playerEntity : list) {
            for (VnnoxPlayerInfoResponse res : response.getData()) {
                if (res.getPlayerId().equals(playerEntity.getPlayerId())) {
                    playerEntity.setResolution(res.getWidth() + " * " + res.getHeight());
                    break;
                }
            }
        }
        return list;
    }
    /**
     * 获取音量,亮度
     */
    public VnnoxResultResponse asyncStatus(List<String> playerId) {
        List<String> commands = new ArrayList<>();
        commands.add("volumeValue");
        commands.add("brightnessValue");
        commands.add("screenPowerStatus");
        VnnoxBaseRequest request = new VnnoxBaseRequest();
        request.setPlayerIds(playerId);
        request.setCommands(commands);
        request.setNoticeUrl(VnnoxConstant.STATUS_NOTIFY_URL);
        System.out.println(LocalDateTime.now() + "请求前");
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.ASYNCURRENTSTATUS), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        System.out.println(LocalDateTime.now() + "请求后");
        System.out.println(response.toString());
        int size = response.getData().getSuccess().size();
        CountDownLatch countDownLatch = new CountDownLatch(size * 2);
        countDownLatchUtil.push(response.getLogid(), countDownLatch);
        try {
            countDownLatch.await(3000, TimeUnit.MILLISECONDS);
            countDownLatchUtil.remove(response.getLogid());
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println(LocalDateTime.now() + "返回前");
        return response;
    }
    /**
     * 获取屏幕信息
     */
    public VnnoxResultResponse getAsyncStatus(List<String> playerId, String statusValue) {
        List<String> commands = new ArrayList<>();
        if ("all".equals(statusValue)) {
            commands.add("volumeValue");
            commands.add("brightnessValue");
            commands.add("videoSourceValue");
            commands.add("timeValue");
            commands.add("screenPowerStatus");
            commands.add("syncPlayStatus");
        } else {
            commands.add(statusValue);
        }
        VnnoxBaseRequest request = new VnnoxBaseRequest();
        request.setPlayerIds(playerId);
        request.setCommands(commands);
        request.setNoticeUrl(VnnoxConstant.STATUS_NOTIFY_URL);
        System.out.println(LocalDateTime.now() + "请求前");
        String result = VnnoxRequestUtil.PostWithHeader(VnnoxUrl.getUrl(VnnoxUrl.ASYNCURRENTSTATUS), request.toJson(), new CommonHeader(CommonHeader.JSON, true));
        VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
        System.out.println(LocalDateTime.now() + "请求后");
        System.out.println(response.toString());
        int size = response.getData().getSuccess().size();
        CountDownLatch countDownLatch = new CountDownLatch(size * commands.size());
        countDownLatchUtil.push(response.getLogid(), countDownLatch);
        try {
            countDownLatch.await(10000, TimeUnit.MILLISECONDS);
            countDownLatchUtil.remove(response.getLogid());
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        System.out.println(LocalDateTime.now() + "返回前");
        return response;
    }
}