From d267efe74181bbc89e7ecda1032f11965984769b Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Wed, 19 Mar 2025 14:08:07 +0800
Subject: [PATCH] 增加状态统一订阅 增加载荷和飞控用户同时获取

---
 ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java |   95 ++++++++++++++++++++++++-----------------------
 1 files changed, 49 insertions(+), 46 deletions(-)

diff --git a/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java b/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
index 9fba16d..359228f 100644
--- a/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/tianyu/service/impl/TyServiceImpl.java
@@ -1,34 +1,32 @@
 package com.ard.tianyu.service.impl;
 
 import com.ard.common.utils.ByteUtils;
-import com.ard.tianyu.aspect.annotation.CheckControlAuthority;
+import com.ard.tianyu.aspect.annotation.CheckTakeoffAltitude;
+import com.ard.tianyu.aspect.annotation.CheckControlRight;
 import com.ard.tianyu.config.TyConfiguration;
-import com.ard.tianyu.http.TyClient;
-import com.ard.tianyu.model.cache.TyTcpServerCache;
-import com.ard.tianyu.model.cache.UavSignalInfoCache;
-import com.ard.tianyu.model.cache.UavStateCache;
-import com.ard.tianyu.model.cache.UavTelemetryDataCache;
-import com.ard.tianyu.model.dto.BoxHistoryDTO;
-import com.ard.tianyu.model.dto.BoxPhotosDTO;
-import com.ard.tianyu.model.dto.BoxSettingsDTO;
-import com.ard.tianyu.model.dto.camera.*;
-import com.ard.tianyu.model.dto.control.AbsAngleControlDTO;
-import com.ard.tianyu.model.dto.control.AngleControlDTO;
-import com.ard.tianyu.model.dto.control.SpeedControlDTO;
-import com.ard.tianyu.model.dto.converter.realdata.UavSignalInfoConverter;
-import com.ard.tianyu.model.dto.converter.realdata.UavStateConverter;
-import com.ard.tianyu.model.dto.converter.realdata.UavTelemetryDataConverter;
-import com.ard.tianyu.model.dto.converter.wayline.PlanLineDataConverter;
-import com.ard.tianyu.model.dto.manual.*;
-import com.ard.tianyu.model.dto.settings.ReturnHeightSettingDTO;
-import com.ard.tianyu.model.dto.settings.ReturnPointSettingDTO;
-import com.ard.tianyu.model.dto.settings.VideoStreamSettingDTO;
-import com.ard.tianyu.model.dto.signal.SignalInfo;
-import com.ard.tianyu.model.dto.speaker.*;
-import com.ard.tianyu.model.dto.state.UavState;
-import com.ard.tianyu.model.dto.telemetry.TelemetryData;
-import com.ard.tianyu.model.dto.wayline.*;
-import com.ard.tianyu.model.receiver.*;
+import com.ard.tianyu.domain.dto.camera.*;
+import com.ard.tianyu.domain.dto.manual.*;
+import com.ard.tianyu.domain.dto.speaker.*;
+import com.ard.tianyu.domain.dto.wayline.*;
+import com.ard.tianyu.domain.receiver.*;
+import com.ard.tianyu.forest.TyClient;
+import com.ard.tianyu.domain.cache.TyTcpServerCache;
+import com.ard.tianyu.domain.cache.UavSignalInfoCache;
+import com.ard.tianyu.domain.cache.UavStateCache;
+import com.ard.tianyu.domain.cache.UavTelemetryDataCache;
+import com.ard.tianyu.domain.dto.BoxHistoryDTO;
+import com.ard.tianyu.domain.dto.BoxPhotosDTO;
+import com.ard.tianyu.domain.dto.BoxSettingsDTO;
+import com.ard.tianyu.domain.dto.control.AbsAngleControlDTO;
+import com.ard.tianyu.domain.dto.control.AngleControlDTO;
+import com.ard.tianyu.domain.dto.control.SpeedControlDTO;
+import com.ard.tianyu.domain.dto.converter.wayline.PlanLineDataConverter;
+import com.ard.tianyu.domain.dto.settings.ReturnHeightSettingDTO;
+import com.ard.tianyu.domain.dto.settings.ReturnPointSettingDTO;
+import com.ard.tianyu.domain.dto.settings.VideoStreamSettingDTO;
+import com.ard.tianyu.domain.dto.signal.SignalInfo;
+import com.ard.tianyu.domain.dto.state.UavState;
+import com.ard.tianyu.domain.dto.telemetry.TelemetryData;
 import com.ard.tianyu.netty.command.*;
 import com.ard.tianyu.netty.TyNettyTcpClient;
 import com.ard.tianyu.netty.command.camera.*;
@@ -49,8 +47,7 @@
 import com.ard.tianyu.netty.handler.ErrorCodeEnum;
 import com.ard.tianyu.netty.protobuf.TelemetryDataPB;
 import com.ard.tianyu.service.ITyService;
-import com.ard.tianyu.websocket.utils.WebSocketUtil;
-import com.ard.vtdu.domain.ArdVtdu;
+import com.ard.tianyu.websocket.domain.UavControlType;
 import com.ard.vtdu.service.IMediaService;
 import io.netty.channel.Channel;
 import io.netty.channel.ChannelFuture;
@@ -200,6 +197,7 @@
     /**
      * 云台控制基于角度
      */
+    @CheckControlRight(UavControlType.PAYLOAD)
     @Override
     public Boolean angleControl(AngleControlDTO angleControlDto) {
         AngleControlCmd controlAngleCommand = new AngleControlCmd(angleControlDto);
@@ -210,6 +208,7 @@
     /**
      * 云台绝对值控制(基于角度)
      */
+    @CheckControlRight(UavControlType.PAYLOAD)
     @Override
     public Boolean absAngleControl(AbsAngleControlDTO absAngleControlDto) {
         AbsAngleControlCmd absAngleControlCommand = new AbsAngleControlCmd(absAngleControlDto);
@@ -220,6 +219,7 @@
     /**
      * 云台转动(基于速度)
      */
+    @CheckControlRight(UavControlType.PAYLOAD)
     @Override
     public Boolean speedControl(SpeedControlDTO speedControlDto) {
         SpeedControlCmd speedControlCommand = new SpeedControlCmd(speedControlDto);
@@ -267,6 +267,7 @@
     /**
      * 变倍
      */
+    @CheckControlRight(UavControlType.PAYLOAD)
     @Override
     public Boolean zoom(ZoomDTO zoomDTO) {
         ZoomCmd zoomCommand = new ZoomCmd(zoomDTO);
@@ -277,6 +278,7 @@
     /**
      * 变倍到指定倍数
      */
+    @CheckControlRight(UavControlType.PAYLOAD)
     @Override
     public Boolean zoomToLevel(ZoomToLevelDTO zoomToLevelDTO) {
         ZoomToLevelCmd zoomToLevelCommand = new ZoomToLevelCmd(zoomToLevelDTO);
@@ -327,7 +329,7 @@
     /**
      * 起飞
      */
-    @CheckControlAuthority
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean takeOff(TakeOffDTO takeOffDTO) {
         TakeOffCmd takeOffCmd = new TakeOffCmd(takeOffDTO);
@@ -338,6 +340,7 @@
     /**
      * 返航
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean returnHome(ReturnHomeDTO returnHomeDTO) {
         ReturnHomeCmd returnHomeCmd = new ReturnHomeCmd(returnHomeDTO);
@@ -348,6 +351,7 @@
     /**
      * 取消返航
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean returnHomeCancel(ReturnHomeCancelDTO returnHomeCancelDTO) {
         ReturnHomeCancelCmd returnHomeCancelCmd = new ReturnHomeCancelCmd(returnHomeCancelDTO);
@@ -358,6 +362,7 @@
     /**
      * 降落
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean land(LandDTO landDTO) {
         LandCmd landCmd = new LandCmd(landDTO);
@@ -368,6 +373,7 @@
     /**
      * 取消降落
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean landCancel(LandCancelDTO landCancelDTO) {
         LandCancelCmd landCancelCmd = new LandCancelCmd(landCancelDTO);
@@ -378,6 +384,7 @@
     /**
      * 强制降落
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean landForced(LandForcedDTO landForcedDTO) {
         LandForcedCmd landForcedCmd = new LandForcedCmd(landForcedDTO);
@@ -388,6 +395,8 @@
     /**
      * 方向控制
      */
+    @CheckControlRight(UavControlType.FLY)
+    @CheckTakeoffAltitude(minAltitude = 30.0)
     @Override
     public Boolean flyControl(FlyControlDTO flyControlDTO) {
         FlyControlCmd flyControlCmd = new FlyControlCmd(flyControlDTO);
@@ -398,6 +407,8 @@
     /**
      * 指点飞行控制
      */
+    @CheckControlRight(UavControlType.FLY)
+    @CheckTakeoffAltitude(minAltitude = 30.0)
     @Override
     public Boolean flyPointControl(FlyPointControlDTO flyPointControlDTO) {
         FlyPointControlCmd flyPointControlCmd = new FlyPointControlCmd(flyPointControlDTO);
@@ -408,6 +419,7 @@
     /**
      * 停止指点飞行控制
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean flyPointControlCancel(FlyPointControlCancelDTO flyPointControlCancelDTO) {
         FlyPointControlCancelCmd flyPointControlCancelCmd = new FlyPointControlCancelCmd(flyPointControlCancelDTO);
@@ -418,6 +430,7 @@
     /**
      * 紧急制动
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public Boolean emeragencyBrake(EmeragencyBrakeDTO emeragencyBrakeDTO) {
         EmergencyBrakeCmd emergencyBrakeCmd = new EmergencyBrakeCmd(emeragencyBrakeDTO);
@@ -559,6 +572,7 @@
     /**
      * 航线开始
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public void wayLineBegin(WayLineBeginDTO wayLineBeginDTO) {
         WayLineBeginCmd wayLineBeginCmd = new WayLineBeginCmd(wayLineBeginDTO);
@@ -568,6 +582,7 @@
     /**
      * 航线暂停
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public void wayLinePause(WayLinePauseDTO wayLinePauseDTO) {
         WayLinePauseCmd wayLinePauseCmd = new WayLinePauseCmd(wayLinePauseDTO);
@@ -577,6 +592,7 @@
     /**
      * 航线恢复
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public void wayLineResume(WayLineResumeDTO wayLineResumeDTO) {
         WayLineResumeCmd wayLineResumeCmd = new WayLineResumeCmd(wayLineResumeDTO);
@@ -586,24 +602,11 @@
     /**
      * 航线结束
      */
+    @CheckControlRight(UavControlType.FLY)
     @Override
     public void wayLineEnd(WayLineEndDTO wayLineEndDTO) {
         WayLineEndCmd wayLineEndCmd = new WayLineEndCmd(wayLineEndDTO);
         this.sendMessage(tyConfiguration.getIpPort(), wayLineEndCmd);
-    }
-
-    /**
-     * 点播
-     */
-    @Override
-    public ArdVtdu play(String boxSn) {
-        BoxStreamUrlReceiver boxLiveUrl = getBoxLiveUrl(boxSn);
-        if(boxLiveUrl == null||boxLiveUrl.getRtsp() == null) {
-            return null;
-        }
-        ArdVtdu ardVtdu = ArdVtdu.builder().name(boxSn).rtspSource(boxLiveUrl.getRtsp()).build();
-        ardVtdu = mediaService.addPath(ardVtdu);
-        return ardVtdu;
     }
 
     /**
@@ -644,14 +647,14 @@
                 UavStateCmd uavStateCmd = (UavStateCmd) tyCommand;
                 UavStateCache.putUavState(uavStateCmd.getUavState());
                 logPrint("无人机状态", uavStateCmd.getUavState().getBoxSn());
-                WebSocketUtil.sendMessageAll(uavStateCmd.getUavState());
+               // WebSocketUtil.sendMessageAll(uavStateCmd.getUavState());
                 break;
             case (byte) 0xA9:
                 // 处理无人机遥测消息
                 UavTelemetryDataCmd uavTelemetryDataCmd = (UavTelemetryDataCmd) tyCommand;
                 UavTelemetryDataCache.putUavTelemetryData(uavTelemetryDataCmd.getTelemetryData());
                 logPrint("无人机遥测", uavTelemetryDataCmd.getTelemetryData().getBoxSn());
-                WebSocketUtil.sendMessageAll(uavTelemetryDataCmd.getTelemetryData());
+                //WebSocketUtil.sendMessageAll(uavTelemetryDataCmd.getTelemetryData());
                 break;
 
             case (byte) 0x0C:

--
Gitblit v1.9.3