2021与蓝度共同重构项目,服务端
liuhaonan
2022-10-25 dda268997ca8f8a364f7c19b45d7a43a50a98efe
ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxAPIUtil.java
@@ -12,10 +12,13 @@
import org.springframework.stereotype.Component;
import java.net.URISyntaxException;
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
@@ -23,6 +26,8 @@
    //@Autowired
    private RedisUtils redisUtils;
    private CountDownLatchUtil countDownLatchUtil;
    public static VnnoxAPIUtil getBean() {
        return (VnnoxAPIUtil) SpringContextUtil.getBean("VnnoxAPIUtil");
@@ -32,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);
@@ -59,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));
    }
@@ -86,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);
@@ -124,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);
@@ -149,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();
@@ -172,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();
@@ -195,14 +176,42 @@
        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();
    }
    /**
     * 批量屏幕截图
     *
     * @param players
     * @return
     */
    public VnnoxResult screenShot(List<String> players) {
        VnnoxBaseRequest request = new VnnoxBaseRequest();
        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));
        if (result.startsWith("{") && result.endsWith("}")) {
            VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class);
            if (response.getStatus() == 0) {
                return response.getData();
            } else {
                System.out.println(response.getErrmsg());
                VnnoxResult vnnoxResult = new VnnoxResult();
                vnnoxResult.getFail().addAll(players);
                return vnnoxResult;
            }
        } else {
            System.out.println("数据解析异常!");
            VnnoxResult vnnoxResult = new VnnoxResult();
            vnnoxResult.getFail().addAll(players);
            return vnnoxResult;
        }
    }
    /**
@@ -216,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();
@@ -235,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();
@@ -260,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;
    }
}