package com.sandu.ximon.admin.controller; import com.sandu.common.domain.ResponseVO; import com.sandu.common.execption.BusinessException; import com.sandu.common.object.BaseConditionVO; import com.sandu.common.security.annotation.AnonymousAccess; import com.sandu.common.util.ResponseUtil; import com.sandu.ximon.admin.param.NovaAStateInfoParam; import com.sandu.ximon.admin.param.VnnoxParam; import com.sandu.ximon.admin.security.PermissionConfig; import com.sandu.ximon.admin.service.LedNovaGroupRelationService; import com.sandu.ximon.admin.service.LedNovaGroupService; import com.sandu.ximon.admin.service.LedPlayerEntityService; import com.sandu.ximon.admin.service.VnnoxService; import com.sandu.ximon.admin.utils.VnnoxAPIUtil; import com.sandu.ximon.admin.vo.NovaAStateInfoVO; import com.sandu.ximon.admin.vo.NovaPushResultVO; import com.sandu.ximon.admin.vo.NovaResultParam; import com.sandu.ximon.dao.domain.LedNovaGroup; import com.sandu.ximon.dao.domain.LedPlayerEntity; import com.sandu.ximon.dao.domain.LedV2RegisterResultEntity; import com.sandu.ximon.dao.enums.MenuEnum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.net.URISyntaxException; import java.util.ArrayList; import java.util.List; import java.util.Map; /** * @Author liuhaonan * @Date 2021/12/23 9:35 * @Version 1.0 * 诺瓦LED处理 */ @RestController @RequestMapping("/v1/Vnnox") public class VnnoxController { @Autowired private PermissionConfig permissionConfig; @Autowired private VnnoxService vnnoxService; @Autowired private LedPlayerEntityService ledPlayerEntityService; @Autowired private VnnoxAPIUtil vnnoxAPIUtil; @Autowired private LedNovaGroupRelationService relationService; @Autowired private LedNovaGroupService groupService; /** * 截屏 * * @param vnnoxWebRequest * @return */ @PostMapping("/screenShot") public ResponseVO screenShot(@RequestBody VnnoxParam vnnoxWebRequest) { if (!permissionConfig.check(MenuEnum.VNNOX_SCREENSHOT.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } Map map = vnnoxService.getScreenShotUrl(vnnoxWebRequest.getId()); if (map.get("code").equals("500")) { return ResponseUtil.fail(map.get("msg")); } return ResponseUtil.success(map.get("url")); } @PostMapping("/allScreenShot") public ResponseVO allScreenShot(@RequestBody List vnnoxWebRequest) throws InterruptedException { return ResponseUtil.success(vnnoxService.getScreenShotUrl(vnnoxWebRequest)); } /** * 重启 * * @param * @return */ @PostMapping("/reboot") public ResponseVO reboot(@RequestBody List nova) { if (!permissionConfig.check(MenuEnum.VNNOX_RESTART.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(vnnoxService.reboot(nova)); } /** * 同步播放 */ @PostMapping("/syncPlay") public ResponseVO syncPlay(@RequestBody NovaResultParam vo) { if (!permissionConfig.check(MenuEnum.VNNOX_SYNC_PLAY.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } List playIdlist = vo.getPlayIdlist(); Integer option = vo.getOption(); if (option == null || vo.getOption() == null) { throw new BusinessException("option不能为空"); } return ResponseUtil.success(vnnoxService.syncPlay(playIdlist, option)); } /** * ntp对时 */ @PostMapping("/ntp") public ResponseVO ntp(@RequestBody NovaResultParam vo) { if (!permissionConfig.check(MenuEnum.VNNOX_NTP.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } boolean enable = vo.isEnable(); List playIdlist = vo.getPlayIdlist(); return ResponseUtil.success(vnnoxService.ntpSync(playIdlist, enable)); } /** * @param vnnoxWebRequest * @return 开关屏幕 */ @PostMapping("/screenStatusChange") public ResponseVO screenStatusChange(@RequestBody VnnoxParam vnnoxWebRequest) { if (!permissionConfig.check(MenuEnum.VNNOX_ON_OFF.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(vnnoxService.screenStatusChange(vnnoxWebRequest.getPlayerList(), vnnoxWebRequest.getScreenStatus())); } /** * 音量调节 * * @param vnnoxWebRequest * @return */ @PostMapping("/volChange") public ResponseVO volChange(@RequestBody VnnoxParam vnnoxWebRequest) { if (!permissionConfig.check(MenuEnum.VNNOX_VOL_CHANGE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(vnnoxService.volChange(vnnoxWebRequest.getPlayerList(), vnnoxWebRequest.getVol())); } /** * 亮度调节 * * @param vnnoxWebRequest * @return */ @PostMapping("/brightnessChange") public ResponseVO brightnessChange(@RequestBody VnnoxParam vnnoxWebRequest) { if (!permissionConfig.check(MenuEnum.VNNOX_BRIGHTNESS_CHANGE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(vnnoxService.brightnessChange(vnnoxWebRequest.getPlayerList(), vnnoxWebRequest.getBrightness())); } @PostMapping("/validateSN") public ResponseVO validateSN(@RequestBody Map map) throws URISyntaxException { if (!permissionConfig.check(MenuEnum.VNNOX_ADD.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } String sn = (String) map.get("sn"); String name = (String) map.get("name"); LedV2RegisterResultEntity ledV2RegisterResultEntity = vnnoxService.validateSN(name, sn); return ResponseUtil.success(ledV2RegisterResultEntity); } @PostMapping("/updateLedName/{id}") public ResponseVO updateLedName(@PathVariable Long id, @RequestBody Map map) { if (!permissionConfig.check(MenuEnum.VNNOX_NAME_UPDATE.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } String name = (String) map.get("name"); boolean b = vnnoxService.updateDataName(id, name); if (b) { return ResponseUtil.success("更改成功"); } { return ResponseUtil.success("更改失败"); } } @GetMapping("/list") public ResponseVO list(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword, @RequestParam(value = "order", required = false) Integer order, @RequestParam(value = "seq", required = false) Integer seq, @RequestParam(value = "groupId", required = false) Long groupId) { if (!permissionConfig.check(MenuEnum.LED_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.successPage(ledPlayerEntityService.ledPlayerEntityList(baseConditionVO, keyword, order, seq, groupId)); } @GetMapping("/onLineList") public ResponseVO onLineList(BaseConditionVO baseConditionVO, @RequestParam(value = "keyword", required = false) String keyword, @RequestParam(value = "order", required = false) Integer order, @RequestParam(value = "seq", required = false) Integer seq, @RequestParam(value = "groupId", required = false) Long groupId) { if (!permissionConfig.check(MenuEnum.LED_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } List list = ledPlayerEntityService.ledPlayerEntityList(baseConditionVO, keyword, order, seq, groupId); List entities = vnnoxService.setCacheInfo(vnnoxAPIUtil.syncCurrentInfo(list)); List online = new ArrayList<>(); for (LedPlayerEntity ledPlayer : entities) { if (ledPlayer.getOnlineStatus() == 1) { online.add(ledPlayer); } } return ResponseUtil.success(online); } /** * 屏幕详情 * * @param sn * @return */ @GetMapping("/getVnnoxInfo/{sn}") public ResponseVO getBySnAndPlayerId(@PathVariable String sn) { if (!permissionConfig.check(MenuEnum.LED_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } return ResponseUtil.success(ledPlayerEntityService.getBySnAndPlayerSn(sn)); } @AnonymousAccess @PostMapping("/saveInfo") public ResponseVO saveInfo() { vnnoxService.saveInfo(); return ResponseUtil.success("执行完毕"); } // @AnonymousAccess // @PostMapping("/asyncStatus") // public ResponseVO asyncStatus(@RequestBody List playerIds) { // vnnoxService.asyncStatus(playerIds); // return ResponseUtil.success("ok"); // } /** * 获取屏幕信息 * * @param param * @return */ @PostMapping("/getInfo") public ResponseVO getInfo(@RequestBody @Validated NovaAStateInfoParam param) { if (!permissionConfig.check(MenuEnum.LED_LIST.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } //同步状态 vnnoxService.getAsyncStatus(param.getPlayerIdList(), param.getStateValue()); //获取同步 List info = vnnoxService.getInfo(param.getStateValue(), param.getPlayerIdList()); return ResponseUtil.success(info); } /** * 根据分组id获取组内的屏幕 */ @GetMapping("/getByGroupId") public ResponseVO getByGroupId(@RequestParam(value = "groupId", required = true) Long groupId) { if (!permissionConfig.check(MenuEnum.LED_N_GROUP_INFO.getCode())) { return ResponseUtil.fail("缺少对应用户权限"); } if (groupId == null) { throw new BusinessException("groupId不能为空"); } LedNovaGroup byId = groupService.getById(groupId); if (byId == null) { throw new BusinessException("分组不存在"); } return ResponseUtil.success(ledPlayerEntityService.getListByGroupId(groupId)); } }