ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxConstant.java
@@ -19,6 +19,7 @@ public static final String NOTIFY_URL = "http://112.74.63.130:20017/serv/vnnox/progress"; public static final String SCREEN_SHOT_NOTIFY_URL = "http://112.74.63.130:20017/serv/vnnox/screenshot"; // TODO è¦æ¹ public static final String STATUS_NOTIFY_URL = "http://112.74.63.130:20017/serv/vnnox/asyncStatus"; // TODO è¦æ¹ public static final String username = "zhxm"; public static final String password = "xm2512209."; ximon-admin/src/main/java/com/sandu/ximon/admin/config/VnnoxUrl.java
@@ -30,6 +30,9 @@ //å¤©æ° public static String WEATHER = "/v1/player/program/weather"; //宿¶ä¿¡æ¯(é³é,亮度) public static String ASYNCURRENTSTATUS = "/v1/player/get/asynCurrentStatus"; public static String getUrl(String urlSuffix) { return url + urlSuffix; ximon-admin/src/main/java/com/sandu/ximon/admin/controller/C3mOrderController.java
@@ -90,30 +90,6 @@ } /** * 订åç¶ææ¥è¯¢ 微信æ¯ä» * * @param param * @return */ @RequestMapping("/queryOrder") public ResponseVO<Object> queryOrder(@RequestBody PayParam param) { if (param.getOrderId() == null) { throw new BusinessException("请è¾å ¥æ£ç¡®ç订åid"); } C3mOrder order = c3mOrderService.getById(param.getOrderId()); if (order == null) { throw new BusinessException("订åä¸åå¨"); } if ((OrderType.ALIPAY.getCode()).equals(order.getOrderType())) { return ResponseUtil.success(AliPayUtils.alipayQuery(order.getOutTradeNo(), param.getPoleId())); } else if ((OrderType.WXPAY.getCode()).equals(order.getOrderType())) { return ResponseUtil.success(wxPayService.WxOrderQuery(param.getPoleId(), order.getOutTradeNo())); } else { return ResponseUtil.success("æ¯ä»æ¹å¼å¼å¸¸"); } } /** * 订åå表 ximon-admin/src/main/java/com/sandu/ximon/admin/controller/ServVnnoxController.java
@@ -1,16 +1,21 @@ package com.sandu.ximon.admin.controller; import com.sandu.common.domain.ResponseVO; import com.sandu.common.security.annotation.AnonymousAccess; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.config.VnnoxConstant; import com.sandu.ximon.admin.param.AsyncStatusParam; import com.sandu.ximon.admin.param.VnnoxProgressParam; import com.sandu.ximon.admin.param.VnnoxScreenShotParam; import com.sandu.ximon.admin.utils.CountDownLatchUtil; import com.sandu.ximon.admin.utils.RedisUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.concurrent.CountDownLatch; //诺ç¦åè° @RestController @@ -19,7 +24,11 @@ @Autowired private RedisUtils redisUtils; @Autowired private CountDownLatchUtil countDownLatchUtil; @AnonymousAccess @PostMapping("/screenshot") public ResponseVO<Object> screenshot(@RequestBody VnnoxScreenShotParam vnnoxScreenShot) { String url = vnnoxScreenShot.getScreenShotUrl().replace("&", "&"); @@ -27,10 +36,28 @@ return ResponseUtil.success("ok"); } @AnonymousAccess @PostMapping("/progress") public ResponseVO<Object> progress(@RequestBody VnnoxProgressParam vnnoxProgress) { redisUtils.set(VnnoxConstant.REDIS_PROGRESS + vnnoxProgress.getPlayerId(), vnnoxProgress.getPrecess()); return ResponseUtil.success("ok"); } @AnonymousAccess @PostMapping("/asyncStatus") public ResponseVO<Object> asyncStatus(@RequestBody AsyncStatusParam asyncStatusParam) { System.out.println(asyncStatusParam.toString()); if ("brightnessValue".equals(asyncStatusParam.getCommand())) { //亮度 redisUtils.set(VnnoxConstant.REDIS_BRIGHTNESS + asyncStatusParam.getPlayerId(), asyncStatusParam.getData().getRatio()); } else if ("volumeValue".equals(asyncStatusParam.getCommand())) { //é³é redisUtils.set(VnnoxConstant.REDIS_VOL + asyncStatusParam.getPlayerId(), asyncStatusParam.getData().getRatio()); } countDownLatchUtil.countDown(asyncStatusParam.getLogid()); return ResponseUtil.success("ok"); } } ximon-admin/src/main/java/com/sandu/ximon/admin/controller/VnnoxController.java
@@ -61,7 +61,7 @@ @PostMapping("/allScreenShot") public ResponseVO<Object> allScreenShot(@RequestBody List<NovaPushResultVO> vnnoxWebRequest) { public ResponseVO<Object> allScreenShot(@RequestBody List<NovaPushResultVO> vnnoxWebRequest) throws InterruptedException { return ResponseUtil.success(vnnoxService.getScreenShotUrl(vnnoxWebRequest)); } @@ -209,7 +209,7 @@ } /** * å±å¹è¯¦æ //å端æªåç°è°ç¨ * å±å¹è¯¦æ * * @param sn * @return @@ -226,4 +226,11 @@ vnnoxService.saveInfo(); return ResponseUtil.success("æ§è¡å®æ¯"); } @AnonymousAccess @PostMapping("/asyncStatus") public ResponseVO<Object> asyncStatus(List<String> playerIds) { vnnoxService.asyncStatus(playerIds); return ResponseUtil.success("ok"); } } ximon-admin/src/main/java/com/sandu/ximon/admin/param/AsyncStatusParam.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ package com.sandu.ximon.admin.param; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Data; import lombok.NoArgsConstructor; /** * @author LiuHaoNan * @date 2022/9/6 */ @NoArgsConstructor @Data public class AsyncStatusParam { private String playerId; private String command; private String logid; private DataDTO data; @NoArgsConstructor @Data public static class DataDTO { private String orderId; private Boolean enable; private String ratio; } } ximon-admin/src/main/java/com/sandu/ximon/admin/service/VnnoxService.java
@@ -15,6 +15,7 @@ import com.sandu.ximon.admin.utils.response.VnnoxPlayerListResponse; import com.sandu.ximon.admin.utils.response.VnnoxPlayerResponse; import com.sandu.ximon.admin.utils.response.VnnoxResult; import com.sandu.ximon.admin.utils.response.VnnoxResultResponse; import com.sandu.ximon.admin.vo.NovaPushResultVO; import com.sandu.ximon.admin.vo.NovaScreenShorUrlVO; import com.sandu.ximon.dao.domain.LedPlayerEntity; @@ -47,6 +48,7 @@ private LedPlayerEntityService ledPlayerEntityService; private VnnoxProgramAPIUtil vnnoxProgramAPIUtil; private CountDownLatchUtil countDownLatchUtil; /** * è®¾å¤æ ¡éªæ³¨å @@ -154,7 +156,7 @@ // æ ¹æ®å±å¹ç¶æè°æ´REDISæ è¯ä½ for (String playerId : vnnoxResult.getSuccess()) { redisUtils.set(VnnoxConstant.REDIS_SCREEN_STATUS + playerId, screenStatus, VnnoxConstant.REDIS_MAX_SAVE_TIME); redisUtils.set(VnnoxConstant.REDIS_SCREEN_STATUS + playerId, screenStatus); } return result; } @@ -171,7 +173,7 @@ VnnoxResult vnnoxResult = vnnoxAPIUtil.volChange(playerList.stream().map(item -> item.getPlayerId()).collect(Collectors.toList()), vol); // æ ¹æ®é³éè°æ´REDISæ è¯ä½ for (String playerId : vnnoxResult.getSuccess()) { redisUtils.set(VnnoxConstant.REDIS_VOL + playerId, vol, VnnoxConstant.REDIS_MAX_SAVE_TIME); redisUtils.set(VnnoxConstant.REDIS_VOL + playerId, vol); } List<String> success = vnnoxResult.getSuccess(); List<String> fail = vnnoxResult.getFail(); @@ -212,7 +214,7 @@ VnnoxResult vnnoxResult = vnnoxAPIUtil.brightnessChange(playerList.stream().map(item -> item.getPlayerId()).collect(Collectors.toList()), brightness); // æ ¹æ®äº®åº¦è°æ´REDISæ è¯ä½ for (String playerId : vnnoxResult.getSuccess()) { redisUtils.set(VnnoxConstant.REDIS_BRIGHTNESS + playerId, brightness, VnnoxConstant.REDIS_MAX_SAVE_TIME); redisUtils.set(VnnoxConstant.REDIS_BRIGHTNESS + playerId, brightness); } List<String> success = vnnoxResult.getSuccess(); List<String> fail = vnnoxResult.getFail(); @@ -286,7 +288,7 @@ // æ¹éæªå± public List<NovaScreenShorUrlVO> getScreenShotUrl(List<NovaPushResultVO> playerIds) { public List<NovaScreenShorUrlVO> getScreenShotUrl(List<NovaPushResultVO> playerIds) throws InterruptedException { List<NovaScreenShorUrlVO> screenShorUrlList = new ArrayList<>(); //ä»playerIdsä¸è·åplayerId @@ -306,6 +308,7 @@ break; } else { num++; Thread.sleep(500); } } screenShorUrlVO.setShortUrl(url); @@ -497,10 +500,26 @@ /** * è·åç¼åæ°æ® * * @param list * @param * @return */ public List<LedPlayerEntity> setCacheInfo(List<LedPlayerEntity> ledList) { List<String> temp = new ArrayList<>(); for (LedPlayerEntity item : ledList) { String playerId = item.getPlayerId(); if (redisUtils.get(VnnoxConstant.REDIS_VOL + playerId) == null || redisUtils.get(VnnoxConstant.REDIS_BRIGHTNESS + playerId) == null) { temp.add(item.getPlayerId()); } } if (temp.size() > 0) { List<List<String>> split = CollectionUtil.split(temp, 100); for (List<String> playIds : split) { System.out.println(playIds.size()); vnnoxAPIUtil.asyncStatus(playIds); } } List<List<LedPlayerEntity>> split = CollectionUtil.split(ledList, 100); for (List<LedPlayerEntity> list : split) { for (LedPlayerEntity playerEntity : list) { @@ -517,14 +536,15 @@ result = redisUtils.get(VnnoxConstant.REDIS_VOL + playerId); Integer vol = 0; if (null != result) { vol = Integer.parseInt(result); vol = Float.valueOf(result).intValue(); } cache.setVol(vol); // 设置å±å¹äº®åº¦ result = redisUtils.get(VnnoxConstant.REDIS_BRIGHTNESS + playerId); Integer brightness = 0; if (null != result) { brightness = Integer.parseInt(result); brightness = Float.valueOf(result).intValue(); } cache.setBrightness(brightness); @@ -600,4 +620,10 @@ } } public void asyncStatus(List<String> playerIds) { VnnoxResultResponse vnnoxResultResponse = vnnoxAPIUtil.asyncStatus(playerIds); } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/CountDownLatchUtil.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ package com.sandu.ximon.admin.utils; import lombok.Data; import org.springframework.context.annotation.Configuration; import java.util.HashMap; import java.util.Map; import java.util.concurrent.CountDownLatch; /** * @author LiuHaoNan * @date 2022/9/6 */ @Configuration public class CountDownLatchUtil { private static Map<String, CountDownLatch> data = new HashMap<>(); public void countDown(String id) { if (data != null && data.get(id) != null) { data.get(id).countDown(); } } public void push(String id, CountDownLatch countDownLatch) { if (data != null) { data.put(id, countDownLatch); } } public void remove(String id) { if (data != null) { data.remove(id); } } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/VnnoxAPIUtil.java
@@ -18,6 +18,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.CountDownLatch; @Component("VnnoxAPIUtil") @AllArgsConstructor @@ -25,6 +26,8 @@ //@Autowired private RedisUtils redisUtils; private CountDownLatchUtil countDownLatchUtil; public static VnnoxAPIUtil getBean() { return (VnnoxAPIUtil) SpringContextUtil.getBean("VnnoxAPIUtil"); @@ -34,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); @@ -61,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)); } @@ -88,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); @@ -126,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); @@ -151,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(); @@ -174,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(); @@ -197,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(); @@ -219,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); @@ -254,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(); @@ -273,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(); @@ -298,11 +261,7 @@ 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(); @@ -322,11 +281,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); @@ -338,8 +293,35 @@ } } } return list; return list; } /** * è·åé³é,亮度 */ public VnnoxResultResponse asyncStatus(List<String> playerId) { List<String> commands = new ArrayList<>(); commands.add("volumeValue"); commands.add("brightnessValue"); VnnoxBaseRequest request = new VnnoxBaseRequest(); request.setPlayerIds(playerId); request.setCommands(commands); request.setNoticeUrl(VnnoxConstant.STATUS_NOTIFY_URL); 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(response.toString()); int size = response.getData().getSuccess().size(); CountDownLatch countDownLatch = new CountDownLatch(size * 2); countDownLatchUtil.push(response.getLogid(), countDownLatch); try { countDownLatch.await(); countDownLatchUtil.remove(response.getLogid()); } catch (InterruptedException e) { throw new RuntimeException(e); } return response; } } ximon-admin/src/main/java/com/sandu/ximon/admin/utils/request/VnnoxBaseRequest.java
@@ -20,6 +20,8 @@ private String server; private List<String> commands; @Override public String toJson() { return VnnoxConstant.GSON.toJson(this); ximon-admin/src/main/java/com/sandu/ximon/admin/utils/response/VnnoxResultResponse.java
@@ -12,4 +12,6 @@ private VnnoxResult data; private String errmsg; }