From 49c807f8c2e80cc012ed755acbe1308c5de0c65c Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: Wed, 24 Dec 2025 11:45:29 +0800
Subject: [PATCH] 增加任务视频 优化权限

---
 ard-work/src/main/java/com/ard/work/component/forest/TyClient.java            |   12 ++-
 ard-work/src/main/java/com/ard/work/domain/receiver/BoxVideosReceiver.java    |   32 ++++++++++
 ard-work/src/main/java/com/ard/work/component/forest/TyConst.java             |    1 
 ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java           |   20 ++++++
 ard-admin/src/main/java/com/ard/web/controller/work/UavControlController.java |    2 
 ard-work/src/main/java/com/ard/work/domain/dto/BoxVideosDTO.java              |   27 +++++++++
 ard-admin/src/main/java/com/ard/web/controller/work/UavBaseController.java    |   21 ++++---
 ard-work/src/main/java/com/ard/work/service/ITyService.java                   |   19 ++++++
 8 files changed, 117 insertions(+), 17 deletions(-)

diff --git a/ard-admin/src/main/java/com/ard/web/controller/work/UavBaseController.java b/ard-admin/src/main/java/com/ard/web/controller/work/UavBaseController.java
index 626e421..5ddbecf 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/work/UavBaseController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/work/UavBaseController.java
@@ -3,18 +3,12 @@
 import com.ard.common.core.controller.BaseController;
 import com.ard.common.core.domain.AjaxResult;
 import com.ard.common.core.page.TableDataInfo;
-import com.ard.work.domain.dto.BoxHistoryDTO;
-import com.ard.work.domain.dto.BoxPhotosDTO;
-import com.ard.work.domain.dto.BoxSettingsDTO;
-import com.ard.work.domain.dto.UavFlightStateDTO;
+import com.ard.work.domain.dto.*;
 import com.ard.work.domain.dto.telemetry.TelemetryData;
 import com.ard.work.domain.entity.ArdFlightTask;
 import com.ard.work.domain.entity.ArdFlightTaskPart;
 import com.ard.work.domain.entity.ArdMedia;
-import com.ard.work.domain.receiver.BoxHistoryReceiver;
-import com.ard.work.domain.receiver.BoxInfoReceiver;
-import com.ard.work.domain.receiver.BoxPhotosReceiver;
-import com.ard.work.domain.receiver.BoxStreamUrlReceiver;
+import com.ard.work.domain.receiver.*;
 import com.ard.work.service.IArdFlightTaskPartService;
 import com.ard.work.service.IArdFlightTaskService;
 import com.ard.work.service.IArdMediaService;
@@ -77,6 +71,7 @@
         List<BoxHistoryReceiver> boxHistory = tyService.getBoxHistory(boxHistoryDTO);
         return AjaxResult.success(boxHistory);
     }
+
     @ApiOperation("获取飞行架次")
     @ApiOperationSupport(order = 4)
     @GetMapping("/getFlightTask")
@@ -89,7 +84,7 @@
     @ApiOperation("获取架次飞行轨迹")
     @ApiOperationSupport(order = 4)
     @GetMapping("/getCompleteFlightData")
-    public TableDataInfo getCompleteFlightData(ArdFlightTaskPart ardFlightTaskPart){
+    public TableDataInfo getCompleteFlightData(ArdFlightTaskPart ardFlightTaskPart) {
         List<UavFlightStateDTO> completeFlightData = ardFlightTaskPartService.getCompleteFlightData(ardFlightTaskPart);
         return getDataTable(completeFlightData);
     }
@@ -111,6 +106,14 @@
         return AjaxResult.success(boxPhotos);
     }
 
+    @ApiOperation("获取任务视频")
+    @ApiOperationSupport(order = 5)
+    @PostMapping("/getBoxPhotos")
+    public AjaxResult getBoxVideos(@RequestBody BoxVideosDTO boxVideosDTO) {
+        List<BoxVideosReceiver> boxVideos = tyService.getBoxVideos(boxVideosDTO);
+        return AjaxResult.success(boxVideos);
+    }
+
     @ApiOperation("获取直播地址")
     @ApiOperationSupport(order = 6)
     @GetMapping("/getBoxLiveUrl/{boxSn}")
diff --git a/ard-admin/src/main/java/com/ard/web/controller/work/UavControlController.java b/ard-admin/src/main/java/com/ard/web/controller/work/UavControlController.java
index f61d61c..12cd1de 100644
--- a/ard-admin/src/main/java/com/ard/web/controller/work/UavControlController.java
+++ b/ard-admin/src/main/java/com/ard/web/controller/work/UavControlController.java
@@ -4,6 +4,7 @@
 import com.ard.work.service.control.UavControlService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 
 import javax.annotation.Resource;
@@ -20,6 +21,7 @@
      * 申请控制权(请求通过 WebSocket 发送给当前控制者)
      */
     @ApiOperation("申请控制权")
+    @PreAuthorize("@ss.hasPermi('uav:control:request')")
     @PostMapping("/request")
     public AjaxResult requestControl(@RequestParam String boxSn, @RequestParam String type) {
         return AjaxResult.success(uavControlService.requestControl(boxSn, type));
diff --git a/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java b/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java
index 928ea74..badc96f 100644
--- a/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java
+++ b/ard-work/src/main/java/com/ard/work/component/forest/TyClient.java
@@ -1,9 +1,6 @@
 package com.ard.work.component.forest;
 
-import com.ard.work.domain.dto.BoxHistoryDTO;
-import com.ard.work.domain.dto.BoxPhotosDTO;
-import com.ard.work.domain.dto.BoxSettingsDTO;
-import com.ard.work.domain.dto.TokenDTO;
+import com.ard.work.domain.dto.*;
 import com.ard.work.domain.receiver.*;
 import com.dtflys.forest.annotation.*;
 
@@ -43,13 +40,18 @@
     @Post(value = TyConst.POST_BOX_HISTORY, interceptor = TokenInterceptor.class)
     TyHttpCommonReceiver<List<BoxHistoryReceiver>> getBoxHistory(@Var("serverId") String serverId,
                                                                  @JSONBody BoxHistoryDTO boxHistoryDTO);
-
     /**
      * 获取任务照片
      */
     @Post(value = TyConst.POST_BOX_PHOTOS, interceptor = TokenInterceptor.class)
     TyHttpCommonReceiver<List<BoxPhotosReceiver>> getBoxPhotos(@Var("serverId") String serverId,
                                                                @JSONBody BoxPhotosDTO boxPhotosDTO);
+    /**
+     * 获取任务视频
+     */
+    @Post(value = TyConst.POST_BOX_VIDEOS, interceptor = TokenInterceptor.class)
+    TyHttpCommonReceiver<List<BoxVideosReceiver>> getBoxVideos(@Var("serverId") String serverId,
+                                                               @JSONBody BoxVideosDTO boxVideosDTO);
 
     /**
      * 修改云盒设置
diff --git a/ard-work/src/main/java/com/ard/work/component/forest/TyConst.java b/ard-work/src/main/java/com/ard/work/component/forest/TyConst.java
index dba5e71..4d7f49c 100644
--- a/ard-work/src/main/java/com/ard/work/component/forest/TyConst.java
+++ b/ard-work/src/main/java/com/ard/work/component/forest/TyConst.java
@@ -8,6 +8,7 @@
     public static final String POST_UPDATE_LIVE = "/eapi/update/live";
     public static final String GET_BOX_LIVE_URL = "/eapi/box/pullUrl/{boxSn}";
     public static final String POST_BOX_PHOTOS = "/eapi/box/photos";
+    public static final String POST_BOX_VIDEOS = "/eapi/box/videos";
     public static final String GET_OPEN_LIVE = "/eapi/box/openlive/{boxSn}";
     public static final String GET_CLOSE_LIVE = "/eapi/box/closelive/{boxSn}";
 }
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ard/work/domain/dto/BoxVideosDTO.java b/ard-work/src/main/java/com/ard/work/domain/dto/BoxVideosDTO.java
new file mode 100644
index 0000000..5dfe819
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/work/domain/dto/BoxVideosDTO.java
@@ -0,0 +1,27 @@
+package com.ard.work.domain.dto;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class BoxVideosDTO {
+
+    @JsonProperty("boxSn")
+    private String boxSn;
+
+    @JsonProperty("taskId")
+    private Integer taskId;
+
+    @JsonProperty("pageIndex")
+    private Integer pageIndex;
+
+    @JsonProperty("pageSize")
+    private Integer pageSize;
+
+}
\ No newline at end of file
diff --git a/ard-work/src/main/java/com/ard/work/domain/receiver/BoxVideosReceiver.java b/ard-work/src/main/java/com/ard/work/domain/receiver/BoxVideosReceiver.java
new file mode 100644
index 0000000..704d9fd
--- /dev/null
+++ b/ard-work/src/main/java/com/ard/work/domain/receiver/BoxVideosReceiver.java
@@ -0,0 +1,32 @@
+package com.ard.work.domain.receiver;
+
+import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import lombok.Data;
+
+@Data
+@JsonIgnoreProperties(ignoreUnknown = true)
+public class BoxVideosReceiver {
+
+    @JsonProperty("id")
+    private Long id;
+
+    @JsonProperty("taskId")
+    private Long taskId;
+
+    @JsonProperty("name")
+    private String name;
+
+    @JsonProperty("spanSeconds")
+    private String spanSeconds;
+
+    @JsonProperty("uri")
+    private String imgUrl;
+
+    @JsonProperty("startTime")
+    private String startTime;
+
+    @JsonProperty("endTime")
+    private String endTime;
+
+}
diff --git a/ard-work/src/main/java/com/ard/work/service/ITyService.java b/ard-work/src/main/java/com/ard/work/service/ITyService.java
index 9f40e9a..18db889 100644
--- a/ard-work/src/main/java/com/ard/work/service/ITyService.java
+++ b/ard-work/src/main/java/com/ard/work/service/ITyService.java
@@ -3,6 +3,7 @@
 import com.ard.work.domain.dto.BoxHistoryDTO;
 import com.ard.work.domain.dto.BoxPhotosDTO;
 import com.ard.work.domain.dto.BoxSettingsDTO;
+import com.ard.work.domain.dto.BoxVideosDTO;
 import com.ard.work.domain.dto.camera.*;
 import com.ard.work.domain.dto.manual.*;
 import com.ard.work.domain.dto.speaker.*;
@@ -32,12 +33,14 @@
 
     /**
      * 获取边缘服务器token信息
+     *
      * @return
      */
     AccessTokenReceiver getAccessToken(String ServerId);
 
     /**
      * 获取全部服务器云盒列表
+     *
      * @return
      */
     List<BoxInfoReceiver> getBoxList();
@@ -51,42 +54,56 @@
 
     /**
      * 获取直播地址
+     *
      * @return
      */
     BoxStreamUrlReceiver getBoxLiveUrl(@Var("boxSn") String boxSn);
 
     /**
      * 获取飞行历史
+     *
      * @return
      */
     List<BoxHistoryReceiver> getBoxHistory(BoxHistoryDTO boxHistoryDTO);
 
     /**
-     * 获取盒子图片
+     * 获取任务图片
+     *
      * @return
      */
     List<BoxPhotosReceiver> getBoxPhotos(BoxPhotosDTO boxPhotosDTO);
 
     /**
+     * 获取任务视频
+     *
+     * @return
+     */
+    List<BoxVideosReceiver> getBoxVideos(BoxVideosDTO boxVideosDTO);
+
+    /**
      * 修改云盒设置
+     *
      * @return
      */
     Boolean updateBoxSettings(BoxSettingsDTO boxSettingsDTO);
 
     /**
      * 设置返航高度
+     *
      * @return
      */
     Boolean updateReturnHeight(ReturnHeightSettingDTO returnHeightSettingDTO);
 
     /**
      * 设置视频码流
+     *
      * @return
      */
     Boolean updateVideoStream(VideoStreamSettingDTO videoStreamSettingDTO);
 
     /**
      * 设置返航点
+     *
      * @return
      */
     Boolean updateReturnPoint(ReturnPointSettingDTO returnPointSettingDTO);
diff --git a/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java b/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
index e7f0880..c6a0d66 100644
--- a/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
+++ b/ard-work/src/main/java/com/ard/work/service/impl/TyServiceImpl.java
@@ -33,6 +33,7 @@
 import com.ard.work.domain.dto.BoxHistoryDTO;
 import com.ard.work.domain.dto.BoxPhotosDTO;
 import com.ard.work.domain.dto.BoxSettingsDTO;
+import com.ard.work.domain.dto.BoxVideosDTO;
 import com.ard.work.domain.dto.camera.*;
 import com.ard.work.domain.dto.control.AbsAngleControlDTO;
 import com.ard.work.domain.dto.control.AngleControlDTO;
@@ -157,7 +158,7 @@
     }
 
     /**
-     * 获取盒子图片
+     * 获取任务图片
      *
      * @return List<BoxPhotosReceiver>
      */
@@ -172,7 +173,22 @@
                 boxPhotosDTO);
         return boxPhotos == null ? null : boxPhotos.getContent();
     }
-
+    /**
+     * 获取任务视频
+     *
+     * @return List<BoxVideosReceiver>
+     */
+    @Override
+    public List<BoxVideosReceiver> getBoxVideos(BoxVideosDTO boxVideosDTO) {
+        String boxSn = boxVideosDTO.getBoxSn();
+        ArdDroneInfo ardDroneInfo = ardDroneService.selectArdDroneByboxSn(boxSn);
+        if (ardDroneInfo == null) {
+            throw new ControlException("未找到对应的飞行器信息,boxSn:{}" + boxSn);
+        }
+        TyHttpCommonReceiver<List<BoxVideosReceiver>> boxVideos = tyClient.getBoxVideos(ardDroneInfo.getServerId(),
+                boxVideosDTO);
+        return boxVideos == null ? null : boxVideos.getContent();
+    }
     /**
      * 修改云盒设置
      */

--
Gitblit v1.9.3