为推流列表增加批量移除功能

This commit is contained in:
648540858
2022-02-07 18:30:43 +08:00
parent e0028a87cb
commit d07a5680f3
11 changed files with 145 additions and 22 deletions

View File

@@ -43,4 +43,5 @@ public interface IGbStreamService {
DeviceChannel getDeviceChannelListByStream(GbStream gbStream, String catalogId, String deviceGBId);
void sendCatalogMsg(GbStream gbStream, String type);
void sendCatalogMsgs(List<GbStream> gbStreams, String type);
}

View File

@@ -66,4 +66,6 @@ public interface IStreamPushService {
boolean saveToRandomGB();
void batchAdd(List<StreamPushItem> streamPushExcelDtoList);
boolean batchStop(List<GbStream> streamPushItems);
}

View File

@@ -20,6 +20,7 @@ import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.stereotype.Service;
import org.springframework.transaction.TransactionDefinition;
import org.springframework.transaction.TransactionStatus;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.List;
@@ -144,8 +145,16 @@ public class GbStreamServiceImpl implements IGbStreamService {
gbStreams.add(streamProxyItem);
}
}
sendCatalogMsgs(gbStreams, type);
}
@Override
public void sendCatalogMsgs(List<GbStream> gbStreams, String type) {
if (gbStreams.size() > 0) {
for (GbStream gs : gbStreams) {
if (StringUtils.isEmpty(gs.getGbId())){
continue;
}
List<ParentPlatform> parentPlatforms = platformGbStreamMapper.selectByAppAndStream(gs.getApp(), gs.getStream());
if (parentPlatforms.size() > 0) {
for (ParentPlatform parentPlatform : parentPlatforms) {

View File

@@ -355,8 +355,26 @@ public class StreamPushServiceImpl implements IStreamPushService {
}
}
}
}
}
@Override
public boolean batchStop(List<GbStream> gbStreams) {
if (gbStreams == null || gbStreams.size() == 0) {
return false;
}
gbStreamService.sendCatalogMsgs(gbStreams, CatalogEvent.DEL);
int delStream = streamPushMapper.delAllForGbStream(gbStreams);
gbStreamMapper.batchDelForGbStream(gbStreams);
platformGbStreamMapper.delByGbStreams(gbStreams);
if (delStream > 0) {
for (GbStream gbStream : gbStreams) {
MediaServerItem mediaServerItem = mediaServerService.getOne(gbStream.getMediaServerId());
zlmresTfulUtils.closeStreams(mediaServerItem, gbStream.getApp(), gbStream.getStream());
}
}
return true;
}
}

View File

@@ -84,6 +84,14 @@ public interface GbStreamMapper {
"</script>")
void batchDel(List<StreamProxyItem> streamProxyItemList);
@Delete("<script> "+
"DELETE FROM gb_stream where " +
"<foreach collection='gbStreams' item='item' separator='or'>" +
"(app=#{item.app} and stream=#{item.stream}) " +
"</foreach>" +
"</script>")
void batchDelForGbStream(List<GbStream> gbStreams);
@Insert("<script> " +
"REPLACE into gb_stream " +
"(app, stream, gbId, name, " +

View File

@@ -74,4 +74,12 @@ public interface PlatformGbStreamMapper {
@Delete("DELETE FROM platform_gb_stream WHERE app=#{app} AND stream=#{stream} AND platformId=#{platformId}")
int delByAppAndStreamAndPlatform(String app, String stream, String platformId);
@Delete("<script> "+
"DELETE FROM platform_gb_stream where " +
"<foreach collection='gbStreams' item='item' separator='or'>" +
"(app=#{item.app} and stream=#{item.stream}) " +
"</foreach>" +
"</script>")
void delByGbStreams(List<GbStream> gbStreams);
}

View File

@@ -1,5 +1,6 @@
package com.genersoft.iot.vmp.storager.dao;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
@@ -48,7 +49,13 @@ public interface StreamPushMapper {
"</script>")
int delAll(List<StreamPushItem> streamPushItems);
@Delete("<script> "+
"DELETE FROM stream_push where " +
"<foreach collection='gbStreams' item='item' separator='or'>" +
"(app=#{item.app} and stream=#{item.stream}) " +
"</foreach>" +
"</script>")
int delAllForGbStream(List<GbStream> gbStreams);
@Select(value = {" <script>" +

View File

@@ -0,0 +1,17 @@
package com.genersoft.iot.vmp.vmanager.bean;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import java.util.List;
public class BatchGBStreamParam {
private List<GbStream> gbStreams;
public List<GbStream> getGbStreams() {
return gbStreams;
}
public void setGbStreams(List<GbStream> gbStreams) {
this.gbStreams = gbStreams;
}
}

View File

@@ -10,6 +10,7 @@ import com.genersoft.iot.vmp.media.zlm.dto.StreamPushItem;
import com.genersoft.iot.vmp.service.IMediaServerService;
import com.genersoft.iot.vmp.service.IStreamPushService;
import com.genersoft.iot.vmp.service.impl.StreamPushUploadFileHandler;
import com.genersoft.iot.vmp.vmanager.bean.BatchGBStreamParam;
import com.genersoft.iot.vmp.vmanager.bean.StreamPushExcelDto;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.PageInfo;
@@ -116,13 +117,32 @@ public class StreamPushController {
})
@PostMapping(value = "/stop")
@ResponseBody
public Object removeFormGB(@RequestParam(required = true)String app, @RequestParam(required = true)String streamId){
public Object stop(String app, String streamId){
if (streamPushService.stop(app, streamId)){
return "success";
}else {
return "fail";
}
}
@ApiOperation("中止多个推流")
@ApiImplicitParams({
@ApiImplicitParam(name = "app", value = "应用名", required = true, dataTypeClass = String.class),
@ApiImplicitParam(name = "streamId", value = "流ID", required = true, dataTypeClass = String.class),
})
@DeleteMapping(value = "/batchStop")
@ResponseBody
public Object batchStop(@RequestBody BatchGBStreamParam batchGBStreamParam){
if (batchGBStreamParam.getGbStreams().size() == 0) {
return "fail";
}
if (streamPushService.batchStop(batchGBStreamParam.getGbStreams())){
return "success";
}else {
return "fail";
}
}
@PostMapping(value = "upload")
@ResponseBody
public DeferredResult<ResponseEntity<WVPResult<Object>>> uploadChannelFile(@RequestParam(value = "file") MultipartFile file){