package com.sandu.ximon.admin.utils; import com.alibaba.fastjson.JSON; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.config.VnnoxUrl; import com.sandu.ximon.admin.utils.request.*; import com.sandu.ximon.admin.utils.response.*; import com.sandu.ximon.dao.domain.LedPlayerEntity; import lombok.AllArgsConstructor; import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; @Component("VnnoxAPIUtil") @AllArgsConstructor public class VnnoxAPIUtil { //@Autowired private RedisUtils redisUtils; public static VnnoxAPIUtil getBean() { return (VnnoxAPIUtil) SpringContextUtil.getBean("VnnoxAPIUtil"); } /** * 获取token */ public void getToken () { 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); // 将token保存到redis缓存中 redisUtils.set(VnnoxConstant.REDIS_TOKEN_NAME,response.getToken(),(long)(response.getExpire()-30)); } /** * 获取播放器列表 * * @param count 每次读取数量,默认20,取值范围:1~100 * @param start 从第几条记录开始读取,默认0 * @return */ public VnnoxPlayerListResponse getPlayerList(Integer count, Integer start) { String result = VnnoxRequestUtil.GetWithHeader( VnnoxUrl.getUrl(VnnoxUrl.GET_PLAYER_LIST), new VnnoxGetPlayerListRequest(count, start).toJson(), new CommonHeader(CommonHeader.JSON, true) ); VnnoxPlayerListResponse response = new VnnoxPlayerListResponse().parse(JSON.parseObject(result, CommonResponse.class)); return response; } /** * 获取当前屏幕信息-POST-JSON * * @param list * @return */ public List syncCurrentInfo(List list) { List playerIds = new ArrayList<>(); 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.setPlayerType(res.getPlayerType()); playerEntity.setOnlineStatus(res.getOnlineStatus()); playerEntity.setVersion(res.getVersion()); playerEntity.setOsVersion(res.getOsVersion()); playerEntity.setLastOnlineTime(res.getLastOnlineTime()); playerEntity.setIp(res.getIp()); playerEntity.setWidth(res.getWidth()); playerEntity.setHeight(res.getHeight()); break; } } } return list; } /** * 调整屏幕状态(亮屏/黑屏)-POST-JSON * * @param playerIds * @param type * @return */ public VnnoxResult screenStatus(List playerIds, VnnoxScreenStatusType type) { VnnoxScreenStatusRequest vnnoxScreenStatusRequest = new VnnoxScreenStatusRequest(); vnnoxScreenStatusRequest.setPlayerIds(playerIds); vnnoxScreenStatusRequest.setStatus(type); String result = VnnoxRequestUtil.PostWithHeader( VnnoxUrl.getUrl(VnnoxUrl.SCREEN_STATUS), vnnoxScreenStatusRequest.toJson(), new CommonHeader(CommonHeader.JSON, true) ); VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class); return response.getData(); } /** * 音量调整-POST-JSON * * @param playerIds * @param vol * @return */ public VnnoxResult volChange(List playerIds, Integer vol) { VnnoxBaseRequest request = new VnnoxBaseRequest(); request.setPlayerIds(playerIds); request.setValue(vol); 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(); } /** * 屏幕亮度调整 * * @param playerIds * @param brightness * @return */ public VnnoxResult brightnessChange(List playerIds, Integer brightness) { VnnoxBaseRequest request = new VnnoxBaseRequest(); request.setPlayerIds(playerIds); request.setValue(brightness); 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(); } /** * 屏幕截图 * * @param playerId * @return */ public VnnoxResult screenShot(String playerId) { List players = new ArrayList<>(); players.add(playerId); 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) ); VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class); return response.getData(); } /** * 设备重启 * * @param playerIdList * @return */ public VnnoxResult reboot(List playerIdList) { VnnoxBaseRequest request = new VnnoxBaseRequest(); 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) ); VnnoxResultResponse response = JSON.parseObject(result, VnnoxResultResponse.class); return response.getData(); } }