From 0f0ece240128795d7e174937a4ee848ef7f3d691 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期二, 25 十月 2022 10:17:59 +0800
Subject: [PATCH] 设备编辑增加收流IP

---
 src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java              |    9 ++++
 src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java                    |   11 +++++
 src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java         |    1 
 web_src/src/components/dialog/deviceEdit.vue                                    |    3 +
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java |   33 ++++++++++++----
 sql/update.sql                                                                  |    3 +
 web_src/src/components/dialog/configInfo.vue                                    |    2 
 7 files changed, 52 insertions(+), 10 deletions(-)

diff --git a/sql/update.sql b/sql/update.sql
index c6ec595..1c2f855 100644
--- a/sql/update.sql
+++ b/sql/update.sql
@@ -11,6 +11,9 @@
     add custom_name varchar(255) default null;
 
 alter table device
+    add sdpIp varchar(50) default null;
+
+alter table device
     add password varchar(255) default null;
 
 alter table device
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
index 8af042c..9dd046b 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/bean/Device.java
@@ -175,6 +175,9 @@
 	@Schema(description = "瀵嗙爜")
 	private String password;
 
+	@Schema(description = "鏀舵祦IP")
+	private String sdpIp;
+
 
 	public String getDeviceId() {
 		return deviceId;
@@ -391,4 +394,12 @@
 	public void setPassword(String password) {
 		this.password = password;
 	}
+
+	public String getSdpIp() {
+		return sdpIp;
+	}
+
+	public void setSdpIp(String sdpIp) {
+		this.sdpIp = sdpIp;
+	}
 }
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
index b374461..dc356d0 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/cmd/impl/SIPCommander.java
@@ -290,12 +290,17 @@
                 subscribe.removeSubscribe(hookSubscribe);
             }
         });
-        //
+        String sdpIp;
+        if (!ObjectUtils.isEmpty(device.getSdpIp())) {
+            sdpIp = device.getSdpIp();
+        }else {
+            sdpIp = mediaServerItem.getSdpIp();
+        }
         StringBuffer content = new StringBuffer(200);
         content.append("v=0\r\n");
-        content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
+        content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n");
         content.append("s=Play\r\n");
-        content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
+        content.append("c=IN IP4 " + sdpIp + "\r\n");
         content.append("t=0 0\r\n");
 
         if (userSetting.isSeniorSdp()) {
@@ -379,13 +384,18 @@
 
 
         logger.info("{} 鍒嗛厤鐨刏LM涓�: {} [{}:{}]", ssrcInfo.getStream(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
-
+        String sdpIp;
+        if (!ObjectUtils.isEmpty(device.getSdpIp())) {
+            sdpIp = device.getSdpIp();
+        }else {
+            sdpIp = mediaServerItem.getSdpIp();
+        }
         StringBuffer content = new StringBuffer(200);
         content.append("v=0\r\n");
-        content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
+        content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n");
         content.append("s=Playback\r\n");
         content.append("u=" + channelId + ":0\r\n");
-        content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
+        content.append("c=IN IP4 " + sdpIp + "\r\n");
         content.append("t=" + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime) + " "
                 + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) + "\r\n");
 
@@ -476,13 +486,18 @@
                                   SipSubscribe.Event errorEvent) throws InvalidArgumentException, SipException, ParseException {
 
         logger.info("{} 鍒嗛厤鐨刏LM涓�: {} [{}:{}]", ssrcInfo.getStream(), mediaServerItem.getId(), mediaServerItem.getIp(), ssrcInfo.getPort());
-
+        String sdpIp;
+        if (!ObjectUtils.isEmpty(device.getSdpIp())) {
+            sdpIp = device.getSdpIp();
+        }else {
+            sdpIp = mediaServerItem.getSdpIp();
+        }
         StringBuffer content = new StringBuffer(200);
         content.append("v=0\r\n");
-        content.append("o=" + channelId + " 0 0 IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
+        content.append("o=" + channelId + " 0 0 IN IP4 " + sdpIp + "\r\n");
         content.append("s=Download\r\n");
         content.append("u=" + channelId + ":0\r\n");
-        content.append("c=IN IP4 " + mediaServerItem.getSdpIp() + "\r\n");
+        content.append("c=IN IP4 " + sdpIp + "\r\n");
         content.append("t=" + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(startTime) + " "
                 + DateUtil.yyyy_MM_dd_HH_mm_ssToTimestamp(endTime) + "\r\n");
 
diff --git a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
index 16c9803..c1a8619 100644
--- a/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
+++ b/src/main/java/com/genersoft/iot/vmp/service/impl/DeviceServiceImpl.java
@@ -600,6 +600,7 @@
         if (!deviceInStore.getGeoCoordSys().equals(device.getGeoCoordSys())) {
             updateDeviceChannelGeoCoordSys(device);
         }
+        // 鏇存柊redis
         deviceMapper.updateCustom(device);
     }
 
diff --git a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
index b1210c6..9bf5c02 100644
--- a/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
+++ b/src/main/java/com/genersoft/iot/vmp/storager/dao/DeviceMapper.java
@@ -24,6 +24,7 @@
             "transport," +
             "streamMode," +
             "ip," +
+            "sdpIp," +
             "port," +
             "hostAddress," +
             "expires," +
@@ -52,6 +53,7 @@
                 "transport," +
                 "streamMode," +
                 "ip," +
+                "sdpIp," +
                 "port," +
                 "hostAddress," +
                 "expires," +
@@ -77,6 +79,7 @@
                 "#{transport}," +
                 "#{streamMode}," +
                 "#{ip}," +
+                "#{sdpIp}," +
                 "#{port}," +
                 "#{hostAddress}," +
                 "#{expires}," +
@@ -125,6 +128,7 @@
             "transport," +
             "streamMode," +
             "ip," +
+            "sdpIp," +
             "port," +
             "hostAddress," +
             "expires," +
@@ -160,6 +164,7 @@
             "transport," +
             "streamMode," +
             "ip," +
+            "sdpIp," +
             "port," +
             "hostAddress," +
             "expires," +
@@ -188,6 +193,7 @@
             "transport," +
             "streamMode," +
             "ip," +
+            "sdpIp," +
             "port," +
             "hostAddress," +
             "expires," +
@@ -214,6 +220,7 @@
             "<if test=\"password != null\">, password='${password}'</if>" +
             "<if test=\"streamMode != null\">, streamMode='${streamMode}'</if>" +
             "<if test=\"ip != null\">, ip='${ip}'</if>" +
+            "<if test=\"sdpIp != null\">, sdpIp='${sdpIp}'</if>" +
             "<if test=\"port != null\">, port=${port}</if>" +
             "<if test=\"charset != null\">, charset='${charset}'</if>" +
             "<if test=\"subscribeCycleForCatalog != null\">, subscribeCycleForCatalog=${subscribeCycleForCatalog}</if>" +
@@ -232,6 +239,7 @@
             "deviceId, " +
             "custom_name, " +
             "password, " +
+            "sdpIp, " +
             "createTime," +
             "updateTime," +
             "charset," +
@@ -243,6 +251,7 @@
             "#{deviceId}," +
             "#{name}," +
             "#{password}," +
+            "#{sdpIp}," +
             "#{createTime}," +
             "#{updateTime}," +
             "#{charset}," +
diff --git a/web_src/src/components/dialog/configInfo.vue b/web_src/src/components/dialog/configInfo.vue
index 428d621..83d9f38 100644
--- a/web_src/src/components/dialog/configInfo.vue
+++ b/web_src/src/components/dialog/configInfo.vue
@@ -19,7 +19,7 @@
             <el-tag size="small">{{configInfoData.sip.password}}</el-tag>
           </el-descriptions-item>
         </el-descriptions>
-        <el-descriptions title="鐗堟湰淇℃伅"v-if="configInfoData.sip">
+        <el-descriptions title="鐗堟湰淇℃伅"v-if="configInfoData.version">
           <el-descriptions-item label="鐗堟湰">{{configInfoData.version.version}}</el-descriptions-item>
           <el-descriptions-item label="缂栬瘧鏃堕棿">{{configInfoData.version.BUILD_DATE}}</el-descriptions-item>
           <el-descriptions-item label="GIT鐗堟湰">{{configInfoData.version.GIT_Revision_SHORT}}</el-descriptions-item>
diff --git a/web_src/src/components/dialog/deviceEdit.vue b/web_src/src/components/dialog/deviceEdit.vue
index 3747ca4..8a5f9d1 100644
--- a/web_src/src/components/dialog/deviceEdit.vue
+++ b/web_src/src/components/dialog/deviceEdit.vue
@@ -22,6 +22,9 @@
           <el-form-item label="瀵嗙爜" prop="password">
             <el-input type="password" v-model="form.password" clearable></el-input>
           </el-form-item>
+          <el-form-item label="鏀舵祦IP" prop="sdpIp">
+            <el-input type="sdpIp" v-model="form.sdpIp" clearable></el-input>
+          </el-form-item>
           <el-form-item label="娴佸獟浣揑D" prop="mediaServerId">
             <el-select v-model="form.mediaServerId" style="float: left; width: 100%" >
               <el-option key="auto" label="鑷姩璐熻浇鏈�灏�" value="auto"></el-option>

--
Gitblit v1.8.0