From 3b5a37c270e5b6649b9a168ee753c2b3353a257a Mon Sep 17 00:00:00 2001
From: zouyaoji <370681295@qq.com>
Date: 星期六, 06 八月 2022 11:27:02 +0800
Subject: [PATCH] 前端显示媒体服务器配置时报错修复
---
src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java | 121 ++++++++++++++++++++++++++++++---------
1 files changed, 92 insertions(+), 29 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
index 67dfb6f..40c37c2 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/StreamProxyServiceImpl.java
@@ -3,10 +3,10 @@
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.genersoft.iot.vmp.common.StreamInfo;
-import com.genersoft.iot.vmp.conf.SipConfig;
import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.GbStream;
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform;
+import com.genersoft.iot.vmp.gb28181.bean.TreeType;
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
import com.genersoft.iot.vmp.gb28181.event.subscribe.catalog.CatalogEvent;
import com.genersoft.iot.vmp.media.zlm.ZLMRESTfulUtils;
@@ -23,14 +23,19 @@
import com.genersoft.iot.vmp.storager.dao.PlatformGbStreamMapper;
import com.genersoft.iot.vmp.storager.dao.StreamProxyMapper;
import com.genersoft.iot.vmp.service.IStreamProxyService;
+import com.genersoft.iot.vmp.utils.DateUtil;
import com.genersoft.iot.vmp.vmanager.bean.WVPResult;
import com.github.pagehelper.PageInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+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.net.InetAddress;
import java.util.*;
/**
@@ -48,7 +53,7 @@
private IMediaService mediaService;
@Autowired
- private ZLMRESTfulUtils zlmresTfulUtils;;
+ private ZLMRESTfulUtils zlmresTfulUtils;
@Autowired
private StreamProxyMapper streamProxyMapper;
@@ -61,9 +66,6 @@
@Autowired
private UserSetting userSetting;
-
- @Autowired
- private SipConfig sipConfig;
@Autowired
private GbStreamMapper gbStreamMapper;
@@ -83,6 +85,12 @@
@Autowired
private IMediaServerService mediaServerService;
+ @Autowired
+ DataSourceTransactionManager dataSourceTransactionManager;
+
+ @Autowired
+ TransactionDefinition transactionDefinition;
+
@Override
public WVPResult<StreamInfo> save(StreamProxyItem param) {
@@ -99,6 +107,7 @@
wvpResult.setMsg("淇濆瓨澶辫触");
return wvpResult;
}
+
String dstUrl = String.format("rtmp://%s:%s/%s/%s", "127.0.0.1", mediaInfo.getRtmpPort(), param.getApp(),
param.getStream() );
param.setDst_url(dstUrl);
@@ -108,9 +117,9 @@
boolean saveResult;
// 鏇存柊
if (videoManagerStorager.queryStreamProxy(param.getApp(), param.getStream()) != null) {
- saveResult = videoManagerStorager.updateStreamProxy(param);
+ saveResult = updateStreamProxy(param);
}else { // 鏂板
- saveResult = videoManagerStorager.addStreamProxy(param);
+ saveResult = addStreamProxy(param);
}
if (saveResult) {
result.append("淇濆瓨鎴愬姛");
@@ -124,7 +133,7 @@
if (param.isEnable_remove_none_reader()) {
del(param.getApp(), param.getStream());
}else {
- videoManagerStorager.updateStreamProxy(param);
+ updateStreamProxy(param);
}
}else {
@@ -147,25 +156,79 @@
result.append(", 鍏宠仈鍥芥爣骞冲彴[ " + param.getPlatformGbId() + " ]澶辫触");
}
}
- if (!StringUtils.isEmpty(param.getGbId())) {
- // 鏌ユ壘寮�鍚簡鍏ㄩ儴鐩存挱娴佸叡浜殑涓婄骇骞冲彴
- List<ParentPlatform> parentPlatforms = parentPlatformMapper.selectAllAhareAllLiveStream();
- if (parentPlatforms.size() > 0) {
- for (ParentPlatform parentPlatform : parentPlatforms) {
- param.setPlatformId(parentPlatform.getServerGBId());
- param.setCatalogId(parentPlatform.getCatalogId());
- String stream = param.getStream();
- StreamProxyItem streamProxyItems = platformGbStreamMapper.selectOne(param.getApp(), stream, parentPlatform.getServerGBId());
- if (streamProxyItems == null) {
- platformGbStreamMapper.add(param);
- eventPublisher.catalogEventPublishForStream(parentPlatform.getServerGBId(), param, CatalogEvent.ADD);
- }
- }
- }
- }
-
wvpResult.setMsg(result.toString());
return wvpResult;
+ }
+
+ /**
+ * 鏂板浠g悊娴�
+ * @param streamProxyItem
+ * @return
+ */
+ private boolean addStreamProxy(StreamProxyItem streamProxyItem) {
+ TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
+ boolean result = false;
+ streamProxyItem.setStreamType("proxy");
+ streamProxyItem.setStatus(true);
+ String now = DateUtil.getNow();
+ streamProxyItem.setCreateTime(now);
+ try {
+ if (streamProxyMapper.add(streamProxyItem) > 0) {
+ if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
+ if (gbStreamMapper.add(streamProxyItem) < 0) {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+ }
+ }else {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+ result = true;
+ dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦
+ }catch (Exception e) {
+ logger.error("鍚戞暟鎹簱娣诲姞娴佷唬鐞嗗け璐ワ細", e);
+ dataSourceTransactionManager.rollback(transactionStatus);
+ }
+
+
+ return result;
+ }
+
+ /**
+ * 鏇存柊浠g悊娴�
+ * @param streamProxyItem
+ * @return
+ */
+ @Override
+ public boolean updateStreamProxy(StreamProxyItem streamProxyItem) {
+ TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
+ boolean result = false;
+ streamProxyItem.setStreamType("proxy");
+ try {
+ if (streamProxyMapper.update(streamProxyItem) > 0) {
+ if (!StringUtils.isEmpty(streamProxyItem.getGbId())) {
+ if (gbStreamMapper.updateByAppAndStream(streamProxyItem) == 0) {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+ }
+ } else {
+ //浜嬪姟鍥炴粴
+ dataSourceTransactionManager.rollback(transactionStatus);
+ return false;
+ }
+
+ dataSourceTransactionManager.commit(transactionStatus); //鎵嬪姩鎻愪氦
+ result = true;
+ }catch (Exception e) {
+ e.printStackTrace();
+ dataSourceTransactionManager.rollback(transactionStatus);
+ }
+ return result;
}
@Override
@@ -239,7 +302,7 @@
if (jsonObject.getInteger("code") == 0) {
result = true;
streamProxy.setEnable(true);
- videoManagerStorager.updateStreamProxy(streamProxy);
+ updateStreamProxy(streamProxy);
}
}
return result;
@@ -253,7 +316,7 @@
JSONObject jsonObject = removeStreamProxyFromZlm(streamProxyDto);
if (jsonObject != null && jsonObject.getInteger("code") == 0) {
streamProxyDto.setEnable(false);
- result = videoManagerStorager.updateStreamProxy(streamProxyDto);
+ result = updateStreamProxy(streamProxyDto);
}
}
return result;
@@ -319,7 +382,7 @@
}
streamProxyMapper.deleteAutoRemoveItemByMediaServerId(mediaServerId);
// 鍏朵粬鐨勬祦璁剧疆绂荤嚎
- streamProxyMapper.updateStatusByMediaServerId(false, mediaServerId);
+ streamProxyMapper.updateStatusByMediaServerId(mediaServerId, false);
String type = "PULL";
// 鍙戦�乺edis娑堟伅
@@ -346,7 +409,7 @@
@Override
public int updateStatus(boolean status, String app, String stream) {
- return streamProxyMapper.updateStatus(status, app, stream);
+ return streamProxyMapper.updateStatus(app, stream, status);
}
private void syncPullStream(String mediaServerId){
--
Gitblit v1.8.0