From 6d754022e36ce1b83c8f23bbd82178258304d493 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期一, 29 一月 2024 15:49:59 +0800
Subject: [PATCH] 测试提交

---
 ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java |  255 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 205 insertions(+), 50 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java b/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
index 83bdeea..6b39d98 100644
--- a/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
+++ b/ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java
@@ -1,50 +1,205 @@
-package com.ruoyi.media.controller;
-
-import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
-import com.ruoyi.common.annotation.Anonymous;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.media.domain.MediaInfo;
-import com.ruoyi.media.service.IMediaService;
-import com.ruoyi.media.service.impl.MediaService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RestController;
-
-import javax.annotation.Resource;
-
-/**
- * @Description:
- * @ClassName: controller
- * @Author: 鍒樿嫃涔�
- * @Date: 2023骞�07鏈�13鏃�9:26
- * @Version: 1.0
- **/
-@RestController
-@Api(tags = "娴佸獟浣撴帴鍙�")
-@Anonymous
-public class MediaController {
-    @Resource
-    private IMediaService mediaService;
-
-    @PostMapping("/add")
-    @ApiOperation("澧炲姞杞爜")
-    public AjaxResult addPath(@RequestBody MediaInfo mediaInfo) {
-        String rtsp = mediaService.addPath(mediaInfo.getName(), mediaInfo.getRtspPath());
-        return AjaxResult.success(rtsp);
-    }
-    @PostMapping("/remove")
-    @ApiOperation("绉婚櫎杞爜")
-    @ApiOperationSupport(includeParameters={"mediaInfo.name"})
-    public AjaxResult removePath(@RequestBody MediaInfo mediaInfo) {
-        mediaService.removePath(mediaInfo.getName());
-        return AjaxResult.success();
-    }
-    @GetMapping("/getList")
-    @ApiOperation("鑾峰彇褰撳墠杞爜鍒楄〃")
-    public AjaxResult getList() {
-        return AjaxResult.success(mediaService.list());
-    }
-}
+package com.ruoyi.media.controller;
+
+import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.media.domain.Config;
+import com.ruoyi.media.domain.StreamInfo;
+import com.ruoyi.media.domain.Vtdu;
+import com.ruoyi.media.service.IMediaService;
+import com.ruoyi.media.service.IVtduService;
+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;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description: 娴佸獟浣撲笟鍔�
+ * @ClassName: controller
+ * @Author: 鍒樿嫃涔�
+ * @Date: 2023骞�07鏈�13鏃�9:26
+ * @Version: 1.0
+ **/
+@RestController
+@Api(tags = "娴佸獟浣撴帴鍙�")
+@RequestMapping("/media/stream")
+@Anonymous
+public class MediaController extends BaseController {
+    @Resource
+    private IMediaService mediaService;
+    @Resource
+    private IVtduService vtduService;
+
+    /**
+     * 澧炲姞閫氶亾
+     */
+    @PostMapping()
+    @ApiOperation("澧炲姞閫氶亾")
+    @PreAuthorize("@ss.hasPermi('media:stream:add')")
+    @ApiOperationSupport(includeParameters = {"streamInfo.name", "streamInfo.rtspSource", "streamInfo.mode", "streamInfo.isCode"}, order = 1)
+    public AjaxResult addPath(@RequestBody StreamInfo streamInfo) {
+        if (StringUtils.isEmpty(streamInfo.getName())) {
+            return AjaxResult.error("閫氶亾鍚嶇О涓嶈兘涓虹┖");
+        }
+        if (StringUtils.isEmpty(streamInfo.getRtspSource())) {
+            return AjaxResult.error("rtsp鍦板潃涓嶈兘涓虹┖");
+        }
+        Map<String, String> map = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode(), streamInfo.getIsCode());
+        map.get("rtspUrl");
+        Vtdu vtdu = new Vtdu();
+        vtdu.setName(streamInfo.getName());
+        vtdu.setRtspSource(streamInfo.getRtspSource());
+        vtdu.setIsCode(streamInfo.getIsCode());
+        vtdu.setMode(streamInfo.getMode());
+        vtdu.setRtspUrl(map.get("rtspUrl"));
+        vtdu.setRtmpUrl(map.get("rtmpUrl"));
+        vtdu.setWebrtcUrl(map.get("webrtcUrl"));
+        vtduService.insertVtdu(vtdu);
+        return AjaxResult.success(map);
+    }
+
+
+    /**
+     * 淇敼閫氶亾
+     */
+    @ApiOperation("淇敼閫氶亾")
+    @ApiOperationSupport(includeParameters = {"streamInfo.name", "streamInfo.rtspSource", "streamInfo.mode", "streamInfo.isCode"}, order = 2)
+    @PreAuthorize("@ss.hasPermi('media:stream:edit')")
+    @PutMapping
+    public AjaxResult edit(@RequestBody StreamInfo streamInfo) {
+        Map<String, String> map = mediaService.editPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode(), streamInfo.getIsCode());
+        Vtdu vtdu = new Vtdu();
+        vtdu.setName(streamInfo.getName());
+        vtdu.setRtspSource(streamInfo.getRtspSource());
+        vtdu.setIsCode(streamInfo.getIsCode());
+        vtdu.setMode(streamInfo.getMode());
+        vtdu.setRtspUrl(map.get("rtspUrl"));
+        vtdu.setRtmpUrl(map.get("rtmpUrl"));
+        vtdu.setWebrtcUrl(map.get("webrtcUrl"));
+        vtduService.updateVtdu(vtdu);
+        //vtduService.deleteVtduByName(vtdu.getName());
+        //vtduService.insertVtdu(vtdu);
+        return AjaxResult.success(map);
+    }
+
+    /**
+     * 绉婚櫎閫氶亾
+     */
+    @DeleteMapping("/path/{names}")
+    @PreAuthorize("@ss.hasPermi('media:stream:remove')")
+    @ApiOperation("绉婚櫎閫氶亾")
+    @ApiOperationSupport(order = 3)
+    public AjaxResult removePath(@PathVariable String[] names) {
+        mediaService.removePath(names);
+        vtduService.deleteVtduByNames(names);
+        return AjaxResult.success();
+    }
+
+    /**
+     * 绉婚櫎鎷夋祦
+     */
+    @ApiOperation("绉婚櫎鎷夋祦")
+    @ApiOperationSupport(order =4 )
+    @PreAuthorize("@ss.hasPermi('media:stream:remove')")
+    @DeleteMapping("/{sessionId}")
+    public AjaxResult removePullStreamSession(@PathVariable String sessionId) {
+        List<StreamInfo> pullStreamList = mediaService.getPullStreamList();
+        StreamInfo streamInfo = pullStreamList.stream()
+                .filter(object -> object.getId().equals(sessionId))
+                .collect(Collectors.toList()).get(0);
+        switch (streamInfo.getSessionType()) {
+            case "rtsp":
+                return AjaxResult.success(mediaService.kickRtspSession(sessionId));
+            case "webrtc":
+                return AjaxResult.success(mediaService.kickWebrtcSession(sessionId));
+            case "rtmp":
+                return AjaxResult.success(mediaService.kickRtmpSession(sessionId));
+        }
+        return AjaxResult.error();
+    }
+
+    /**
+     * 鑾峰彇閫氶亾璇︾粏淇℃伅
+     */
+    @ApiOperation("鑾峰彇閫氶亾璇︾粏淇℃伅")
+    @ApiOperationSupport(order =4 )
+    @GetMapping(value = "/{name}")
+    public AjaxResult getInfo(@PathVariable("name") String name) {
+        return success(mediaService.getPathInfo(name));
+    }
+
+    /**
+     * 鑾峰彇褰撳墠閫氶亾鍒楄〃
+     */
+    @GetMapping("/path/list")
+    @ApiOperation("鑾峰彇褰撳墠閫氶亾鍒楄〃")
+    @ApiOperationSupport(order = 5)
+    public TableDataInfo getPaths() {
+        startPage();
+        return getDataTable(mediaService.paths());
+    }
+
+    /**
+     * 鎸塈D鏌ヨ鎷夋祦璇︽儏
+     */
+    @GetMapping("/getRtspSessionById")
+    @ApiOperation("鎸塈D鏌ヨ鎷夋祦璇︽儏")
+    public AjaxResult getRtspSessionById(String sessionId) {
+        List<StreamInfo> pullStreamList = mediaService.getPullStreamList();
+        StreamInfo streamInfo = pullStreamList.stream()
+                .filter(object -> object.getId().equals(sessionId))
+                .collect(Collectors.toList()).get(0);
+        switch (streamInfo.getSessionType()) {
+            case "rtsp":
+                return AjaxResult.success(mediaService.getRtspSessionById(sessionId));
+            case "rtmp":
+                return AjaxResult.success(mediaService.getRtmpSessionById(sessionId));
+            case "webrtc":
+                return AjaxResult.success(mediaService.getWebrtcSessionById(sessionId));
+        }
+        return AjaxResult.error();
+    }
+
+    /**
+     * 鑾峰彇鎺ㄦ祦鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('media:stream:list')")
+    @GetMapping("/pushList")
+    @ApiOperation("鑾峰彇鎺ㄦ祦鍒楄〃")
+    @ApiOperationSupport(order = 6)
+    public TableDataInfo getPushStreamList() {
+        startPage();
+        return getDataTable(mediaService.getPushStreamList());
+    }
+
+    /**
+     * 鑾峰彇鎷夋祦鍒楄〃
+     */
+    @PreAuthorize("@ss.hasPermi('media:stream:list')")
+    @GetMapping("/pullList")
+    @ApiOperation("鑾峰彇鎷夋祦鍒楄〃")
+    @ApiOperationSupport(order = 7)
+    public TableDataInfo getPullStreamList() {
+        startPage();
+        return getDataTable(mediaService.getPullStreamList());
+    }
+
+    /**
+     * 閰嶇疆娴佸獟浣撳弬鏁�
+     */
+    @PostMapping("/setConfig")
+    @ApiOperation("閰嶇疆娴佸獟浣撳弬鏁�")
+    @ApiOperationSupport(order = 8)
+    public AjaxResult setConfig(@RequestBody Config config) {
+        return AjaxResult.success(mediaService.setConfig(config));
+    }
+}

--
Gitblit v1.9.3