|
|
@ -34,6 +34,7 @@ import org.dromara.common.sdk.mqtt.services.ServicesReplyReceiver; |
|
|
|
import org.dromara.common.sdk.mqtt.services.TopicServicesRequest; |
|
|
|
import org.dromara.common.translation.annotation.Translation; |
|
|
|
import org.dromara.sample.common.util.Md5Utils; |
|
|
|
import org.dromara.sample.feign.RemoteSystemFeign; |
|
|
|
import org.dromara.sample.manage.mapper.IDeviceStreamMapper; |
|
|
|
import org.dromara.sample.manage.model.dto.*; |
|
|
|
import org.dromara.sample.manage.model.entity.DeviceStreamEntity; |
|
|
@ -48,6 +49,7 @@ import java.net.URI; |
|
|
|
import java.net.URISyntaxException; |
|
|
|
import java.net.URL; |
|
|
|
import java.util.*; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
|
|
|
|
import static org.apache.commons.compress.utils.ArchiveUtils.sanitize; |
|
|
|
import static org.dromara.common.sdk.mqtt.MqttGatewayPublish.DEFAULT_RETRY_COUNT; |
|
|
@ -81,6 +83,8 @@ public class MegaphoneController { |
|
|
|
@Resource |
|
|
|
IDeviceStreamMapper deviceStreamMapper; |
|
|
|
|
|
|
|
@Resource |
|
|
|
private RemoteSystemFeign remoteSystemFeign; |
|
|
|
/** |
|
|
|
* 喊话器-开始播放文档(对应遥控器的录音广播模式) |
|
|
|
* Get the topology list of all online devices in one workspace. |
|
|
@ -267,32 +271,76 @@ public class MegaphoneController { |
|
|
|
//发送mqtt
|
|
|
|
String s = remoteConfigService.selectStreamIp(); |
|
|
|
DisobeyDTO param = Convert.convert(DisobeyDTO.class, objectMap); |
|
|
|
List<DeviceStreamEntity> deviceStreamEntities = deviceStreamMapper.selectList(new QueryWrapper<DeviceStreamEntity>().eq("rtmp_url", param.getRtmpUrl())); |
|
|
|
List<String> types = deviceStreamEntities.stream() |
|
|
|
.map(DeviceStreamEntity::getStreamType) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
if (param.getOpen() == 1){ |
|
|
|
deviceStreamMapper.delete(new QueryWrapper<DeviceStreamEntity>().eq("rtmp_url", param.getRtmpUrl())); |
|
|
|
// deviceStreamMapper.delete(new QueryWrapper<DeviceStreamEntity>().eq("rtmp_url", param.getRtmpUrl()));
|
|
|
|
if (StringUtils.isNotEmpty(param.getModel())){ |
|
|
|
String[] split = param.getModel().split(","); |
|
|
|
for (String type : split){ |
|
|
|
DeviceStreamEntity deviceStreamEntity = new DeviceStreamEntity(); |
|
|
|
deviceStreamEntity.setStreamType(type); |
|
|
|
deviceStreamEntity.setCreateTime(new Date()); |
|
|
|
deviceStreamEntity.setUpdateTime(new Date()); |
|
|
|
deviceStreamEntity.setRtmpUrl(param.getRtmpUrl()); |
|
|
|
deviceStreamMapper.insert(deviceStreamEntity); |
|
|
|
List<String> list = new ArrayList<>(); |
|
|
|
list.add(type); |
|
|
|
DisobeyDTO disobeyDTO = new DisobeyDTO(); |
|
|
|
disobeyDTO.setUrl(s); |
|
|
|
disobeyDTO.setOpen(param.getOpen()); |
|
|
|
disobeyDTO.setType(list); |
|
|
|
disobeyDTO.setRtmpUrl(param.getRtmpUrl()); |
|
|
|
gatewayPublish.publish(top,new CommonTopicRequest<>() |
|
|
|
.setData(Objects.requireNonNull(disobeyDTO)),1); |
|
|
|
|
|
|
|
if (CollectionUtils.isNotEmpty(types) && split.length > types.size()){ |
|
|
|
//加数据
|
|
|
|
for (String type : split){ |
|
|
|
if (!types.contains(type)){ |
|
|
|
DeviceStreamEntity deviceStreamEntity = new DeviceStreamEntity(); |
|
|
|
deviceStreamEntity.setStreamType(type); |
|
|
|
deviceStreamEntity.setCreateTime(new Date()); |
|
|
|
deviceStreamEntity.setUpdateTime(new Date()); |
|
|
|
deviceStreamEntity.setRtmpUrl(param.getRtmpUrl()); |
|
|
|
deviceStreamMapper.insert(deviceStreamEntity); |
|
|
|
List<String> list = new ArrayList<>(); |
|
|
|
list.add(type); |
|
|
|
DisobeyDTO disobeyDTO = new DisobeyDTO(); |
|
|
|
disobeyDTO.setUrl(s); |
|
|
|
disobeyDTO.setOpen(param.getOpen()); |
|
|
|
disobeyDTO.setType(list); |
|
|
|
disobeyDTO.setRtmpUrl(param.getRtmpUrl()); |
|
|
|
gatewayPublish.publish(top,new CommonTopicRequest<>() |
|
|
|
.setData(Objects.requireNonNull(disobeyDTO)),1); |
|
|
|
} |
|
|
|
} |
|
|
|
}else if (CollectionUtils.isNotEmpty(types) && split.length < types.size()){ |
|
|
|
//删数据
|
|
|
|
for (String type : types){ |
|
|
|
List<String> list1 = Arrays.asList(split); |
|
|
|
if (!list1.contains(type)){ |
|
|
|
deviceStreamMapper.delete(new QueryWrapper<DeviceStreamEntity>().eq("rtmp_url", param.getRtmpUrl()) |
|
|
|
.eq("stream_type", type)); |
|
|
|
List<String> list = new ArrayList<>(); |
|
|
|
list.add(type); |
|
|
|
DisobeyDTO disobeyDTO = new DisobeyDTO(); |
|
|
|
disobeyDTO.setUrl(s); |
|
|
|
disobeyDTO.setOpen(2); |
|
|
|
disobeyDTO.setType(list); |
|
|
|
disobeyDTO.setRtmpUrl(param.getRtmpUrl()); |
|
|
|
gatewayPublish.publish(top,new CommonTopicRequest<>() |
|
|
|
.setData(Objects.requireNonNull(disobeyDTO)),1); |
|
|
|
} |
|
|
|
} |
|
|
|
}else { |
|
|
|
for (String type : split){ |
|
|
|
DeviceStreamEntity deviceStreamEntity = new DeviceStreamEntity(); |
|
|
|
deviceStreamEntity.setStreamType(type); |
|
|
|
deviceStreamEntity.setCreateTime(new Date()); |
|
|
|
deviceStreamEntity.setUpdateTime(new Date()); |
|
|
|
deviceStreamEntity.setRtmpUrl(param.getRtmpUrl()); |
|
|
|
deviceStreamMapper.insert(deviceStreamEntity); |
|
|
|
List<String> list = new ArrayList<>(); |
|
|
|
list.add(type); |
|
|
|
DisobeyDTO disobeyDTO = new DisobeyDTO(); |
|
|
|
disobeyDTO.setUrl(s); |
|
|
|
disobeyDTO.setOpen(param.getOpen()); |
|
|
|
disobeyDTO.setType(list); |
|
|
|
disobeyDTO.setRtmpUrl(param.getRtmpUrl()); |
|
|
|
gatewayPublish.publish(top,new CommonTopicRequest<>() |
|
|
|
.setData(Objects.requireNonNull(disobeyDTO)),1); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if (param.getOpen() == 2){ |
|
|
|
List<DeviceStreamEntity> deviceStreamEntities = deviceStreamMapper.selectList(new QueryWrapper<DeviceStreamEntity>().eq("rtmp_url", param.getRtmpUrl())); |
|
|
|
if (CollectionUtils.isNotEmpty(deviceStreamEntities)){ |
|
|
|
for (DeviceStreamEntity deviceStreamEntity: deviceStreamEntities){ |
|
|
|
deviceStreamMapper.delete(new QueryWrapper<DeviceStreamEntity>().eq("rtmp_url", deviceStreamEntity.getRtmpUrl()) |
|
|
@ -468,4 +516,20 @@ public class MegaphoneController { |
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
@GetMapping("/streams") |
|
|
|
@Operation(summary = "获取媒体流ip。", description = "获取媒体流ip。") |
|
|
|
@Transactional |
|
|
|
public HttpResultResponse<List<String>> streams (@RequestParam String deviceSn |
|
|
|
) { |
|
|
|
List<String> list = remoteSystemFeign.selectStreamType(deviceSn); |
|
|
|
List<String> list1 = new ArrayList<>(); |
|
|
|
if (CollectionUtils.isNotEmpty(list)){ |
|
|
|
for (String s : list){ |
|
|
|
String[] split = s.split(","); |
|
|
|
list1.add(split[2]); |
|
|
|
} |
|
|
|
} |
|
|
|
return HttpResultResponse.success(list1); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|