From 510c29eecab77493816d3f0cdb5e5c4462083cc8 Mon Sep 17 00:00:00 2001 From: ‘liusuyi’ <1951119284@qq.com> Date: 星期二, 29 八月 2023 14:03:55 +0800 Subject: [PATCH] 增加流媒体数据库业务 增加电子围栏接口 --- ard-work/src/main/java/com/ruoyi/media/controller/MediaController.java | 178 +++++++++++++++++++++++++++++++++++------------------------ 1 files changed, 105 insertions(+), 73 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 ca50877..e91ca81 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 @@ -2,15 +2,15 @@ import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport; import com.ruoyi.common.annotation.Anonymous; -import com.ruoyi.common.annotation.Log; 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.enums.BusinessType; import com.ruoyi.common.utils.StringUtils; -import com.ruoyi.device.camera.domain.ArdCameras; +import com.ruoyi.common.utils.uuid.IdUtils; 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; @@ -19,7 +19,6 @@ import javax.annotation.Resource; import java.util.List; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @Description: @@ -35,11 +34,16 @@ public class MediaController extends BaseController { @Resource private IMediaService mediaService; + @Resource + private IVtduService vtduService; + /** + * 澧炲姞閫氶亾 + */ @PostMapping() - @ApiOperation("澧炲姞杞爜") + @ApiOperation("澧炲姞閫氶亾") @PreAuthorize("@ss.hasPermi('media:stream:add')") - @ApiOperationSupport(includeParameters = {"streamInfo.name", "streamInfo.rtspSource", "streamInfo.mode"}) + @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("閫氶亾鍚嶇О涓嶈兘涓虹┖"); @@ -48,107 +52,135 @@ return AjaxResult.error("rtsp鍦板潃涓嶈兘涓虹┖"); } String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode(), streamInfo.getIsCode()); + Vtdu vtdu = new Vtdu(); + vtdu.setName(streamInfo.getName()); + vtdu.setRtspUrl(streamInfo.getRtspSource()); + vtdu.setIsCode(streamInfo.getIsCode()); + vtdu.setCodeType(streamInfo.getMode()); + vtduService.insertVtdu(vtdu); + return AjaxResult.success(rtsp); + } + + + /** + * 淇敼閫氶亾 + */ + @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) { + mediaService.removePath(new String[]{streamInfo.getName()}); + vtduService.deleteVtduByName(streamInfo.getName()); + String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode(), streamInfo.getIsCode()); + Vtdu vtdu = new Vtdu(); + vtdu.setName(streamInfo.getName()); + vtdu.setRtspUrl(streamInfo.getRtspSource()); + vtdu.setIsCode(streamInfo.getIsCode()); + vtdu.setCodeType(streamInfo.getMode()); + vtduService.insertVtdu(vtdu); return AjaxResult.success(rtsp); } /** - * 鑾峰彇杞爜璇︾粏淇℃伅 + * 绉婚櫎閫氶亾 */ - @ApiOperation("鑾峰彇杞爜璇︾粏淇℃伅") + @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("/{id}") + 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)); } /** - * 淇敼杞爜 + * 鑾峰彇褰撳墠閫氶亾鍒楄〃 */ - @ApiOperation("淇敼杞爜") - @PreAuthorize("@ss.hasPermi('media:stream:edit')") - @PutMapping - public AjaxResult edit(@RequestBody StreamInfo streamInfo) { - mediaService.removePath(new String[]{streamInfo.getName()}); - String rtsp = mediaService.addPath(streamInfo.getName(), streamInfo.getRtspSource(), streamInfo.getMode(), streamInfo.getIsCode()); - return AjaxResult.success(rtsp); - } - - @DeleteMapping("/path/{names}") - @PreAuthorize("@ss.hasPermi('media:stream:remove')") - @ApiOperation("绉婚櫎杞爜") - public AjaxResult removePath(@PathVariable String[] names) { - mediaService.removePath(names); - return AjaxResult.success(); - } - @GetMapping("/path/list") - @ApiOperation("鑾峰彇褰撳墠杞爜鍒楄〃") + @ApiOperation("鑾峰彇褰撳墠閫氶亾鍒楄〃") + @ApiOperationSupport(order = 5) public TableDataInfo getPaths() { startPage(); return getDataTable(mediaService.paths()); } - @GetMapping("/getRtspSessions") - @ApiOperation("鑾峰彇rtsp浼氳瘽鍒楄〃") - public AjaxResult getRtspSessions() { - return AjaxResult.success(mediaService.rtspsessions()); - } - - @GetMapping("/getRtspConns") - @ApiOperation("鑾峰彇rtsp杩炴帴鍒楄〃") - public AjaxResult getRtspConns() { - return AjaxResult.success(mediaService.rtspconns()); - } - + /** + * 鎸塈D鏌ヨ鎷夋祦璇︽儏 + */ @GetMapping("/getRtspSessionById") - @ApiOperation("鎸塈D鏌ヨ浼氳瘽") + @ApiOperation("鎸塈D鏌ヨ鎷夋祦璇︽儏") public AjaxResult getRtspSessionById(String sessionId) { - return AjaxResult.success(mediaService.getRtspSessionById(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(); } - @GetMapping("/getPushStreams") - @ApiOperation("鑾峰彇鎺ㄦ祦淇℃伅") - public AjaxResult getPushStreams() { - return AjaxResult.success(mediaService.getPushStreams()); - } - - @GetMapping("/getPullStreams") - @ApiOperation("鑾峰彇鎷夋祦淇℃伅") - public AjaxResult getPullStreams() { - return AjaxResult.success(mediaService.getPullStreams()); - } - + /** + * 鑾峰彇鎺ㄦ祦鍒楄〃 + */ @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:remove')") - @DeleteMapping("/{id}") - public AjaxResult removePullStreamSession(@PathVariable String id) { - List<StreamInfo> pullStreamList = mediaService.getPullStreamList(); - StreamInfo streamInfo = pullStreamList.stream() - .filter(object -> object.getId().equals(id)) - .collect(Collectors.toList()).get(0); - switch (streamInfo.getSessionType()) { - case "rtsp": - return AjaxResult.success(mediaService.kickRtspSession(id)); - case "webrtc": - return AjaxResult.success(mediaService.kickWebrtcSession(id)); - case "rtmp": - return AjaxResult.success(mediaService.kickRtmpSession(id)); - } - return AjaxResult.error(); - } + + /** + * 鑾峰彇鎷夋祦鍒楄〃 + */ @PreAuthorize("@ss.hasPermi('media:stream:list')") @GetMapping("/pullList") @ApiOperation("鑾峰彇鎷夋祦鍒楄〃") + @ApiOperationSupport(order = 7) public TableDataInfo getPullStreamList() { startPage(); return getDataTable(mediaService.getPullStreamList()); -- Gitblit v1.9.3