Merge remote-tracking branch 'origin/wvp-28181-2.0' into map
This commit is contained in:
commit
088419b4d8
@ -134,10 +134,10 @@ QQ私信一般不回, 精力有限.欢迎大家在群里讨论.觉得项目对
|
|||||||
感谢作者[dexter langhuihui](https://github.com/langhuihui) 开源这么好用的WEB播放器。
|
感谢作者[dexter langhuihui](https://github.com/langhuihui) 开源这么好用的WEB播放器。
|
||||||
感谢作者[Kyle](https://gitee.com/kkkkk5G) 开源了好用的前端页面
|
感谢作者[Kyle](https://gitee.com/kkkkk5G) 开源了好用的前端页面
|
||||||
感谢各位大佬的赞助以及对项目的指正与帮助。包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后:
|
感谢各位大佬的赞助以及对项目的指正与帮助。包括但不限于代码贡献、问题反馈、资金捐赠等各种方式的支持!以下排名不分先后:
|
||||||
[lawrencehj](https://github.com/lawrencehj) @陆丰-创奇科技 [swwhaha](https://github.com/swwheihei)
|
[lawrencehj](https://github.com/lawrencehj) [Smallwhitepig](https://github.com/Smallwhitepig) [swwhaha](https://github.com/swwheihei)
|
||||||
[hotcoffie](https://github.com/hotcoffie) [xiaomu](https://github.com/nikmu) [TristingChen](https://github.com/TristingChen)
|
[hotcoffie](https://github.com/hotcoffie) [xiaomu](https://github.com/nikmu) [TristingChen](https://github.com/TristingChen)
|
||||||
[chenparty](https://github.com/chenparty) [Hotleave](https://github.com/hotleave) [ydwxb](https://github.com/ydwxb)
|
[chenparty](https://github.com/chenparty) [Hotleave](https://github.com/hotleave) [ydwxb](https://github.com/ydwxb)
|
||||||
[ydpd](https://github.com/ydpd) [szy833](https://github.com/szy833) [ydwxb](https://github.com/ydwxb)
|
[ydpd](https://github.com/ydpd) [szy833](https://github.com/szy833) [ydwxb](https://github.com/ydwxb) [Albertzhu666](https://github.com/Albertzhu666)
|
||||||
|
|
||||||
ps: 刚增加了这个名单,肯定遗漏了一些大佬,欢迎大佬联系我添加。
|
ps: 刚增加了这个名单,肯定遗漏了一些大佬,欢迎大佬联系我添加。
|
||||||
|
|
||||||
|
91
bootstrap.sh
Executable file
91
bootstrap.sh
Executable file
@ -0,0 +1,91 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
######################################################
|
||||||
|
# Copyright 2019 Pham Ngoc Hoai
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
#
|
||||||
|
# Repo: https://github.com/tyrion9/spring-boot-startup-script
|
||||||
|
#
|
||||||
|
######### PARAM ######################################
|
||||||
|
|
||||||
|
JAVA_OPT=-Xmx1024m
|
||||||
|
JARFILE=`ls -1r *.jar 2>/dev/null | head -n 1`
|
||||||
|
PID_FILE=pid.file
|
||||||
|
RUNNING=N
|
||||||
|
PWD=`pwd`
|
||||||
|
|
||||||
|
######### DO NOT MODIFY ########
|
||||||
|
|
||||||
|
if [ -f $PID_FILE ]; then
|
||||||
|
PID=`cat $PID_FILE`
|
||||||
|
if [ ! -z "$PID" ] && kill -0 $PID 2>/dev/null; then
|
||||||
|
RUNNING=Y
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
start()
|
||||||
|
{
|
||||||
|
if [ $RUNNING == "Y" ]; then
|
||||||
|
echo "Application already started"
|
||||||
|
else
|
||||||
|
if [ -z "$JARFILE" ]
|
||||||
|
then
|
||||||
|
echo "ERROR: jar file not found"
|
||||||
|
else
|
||||||
|
nohup java $JAVA_OPT -Djava.security.egd=file:/dev/./urandom -jar $PWD/$JARFILE > nohup.out 2>&1 &
|
||||||
|
echo $! > $PID_FILE
|
||||||
|
echo "Application $JARFILE starting..."
|
||||||
|
tail -f nohup.out
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
stop()
|
||||||
|
{
|
||||||
|
if [ $RUNNING == "Y" ]; then
|
||||||
|
kill -9 $PID
|
||||||
|
rm -f $PID_FILE
|
||||||
|
echo "Application stopped"
|
||||||
|
else
|
||||||
|
echo "Application not running"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
restart()
|
||||||
|
{
|
||||||
|
stop
|
||||||
|
start
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
|
||||||
|
'start')
|
||||||
|
start
|
||||||
|
;;
|
||||||
|
|
||||||
|
'stop')
|
||||||
|
stop
|
||||||
|
;;
|
||||||
|
|
||||||
|
'restart')
|
||||||
|
restart
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 { start | stop | restart }"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
exit 0
|
||||||
|
|
2
pom.xml
2
pom.xml
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
<groupId>com.genersoft</groupId>
|
<groupId>com.genersoft</groupId>
|
||||||
<artifactId>wvp-pro</artifactId>
|
<artifactId>wvp-pro</artifactId>
|
||||||
<version>2.0.2</version>
|
<version>2.1.1</version>
|
||||||
<name>web video platform</name>
|
<name>web video platform</name>
|
||||||
<description>国标28181视频平台</description>
|
<description>国标28181视频平台</description>
|
||||||
|
|
||||||
|
13
sql/clean.sql
Normal file
13
sql/clean.sql
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
delete from device;
|
||||||
|
delete from device_alarm;
|
||||||
|
delete from device_channel;
|
||||||
|
delete from device_mobile_position;
|
||||||
|
delete from gb_stream;
|
||||||
|
delete from log;
|
||||||
|
delete from media_server;
|
||||||
|
delete from parent_platform;
|
||||||
|
delete from platform_catalog;
|
||||||
|
delete from platform_gb_channel;
|
||||||
|
delete from platform_gb_stream;
|
||||||
|
delete from stream_proxy;
|
||||||
|
delete from stream_push;
|
426
sql/mysql.sql
426
sql/mysql.sql
@ -1,13 +1,13 @@
|
|||||||
-- MySQL dump 10.13 Distrib 8.0.28, for Linux (x86_64)
|
-- MariaDB dump 10.19 Distrib 10.7.3-MariaDB, for Linux (x86_64)
|
||||||
--
|
--
|
||||||
-- Host: 127.0.0.1 Database: wvp
|
-- Host: 127.0.0.1 Database: wvp3
|
||||||
-- ------------------------------------------------------
|
-- ------------------------------------------------------
|
||||||
-- Server version 8.0.28-0ubuntu0.20.04.3
|
-- Server version 8.0.0-dmr
|
||||||
|
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||||
/*!50503 SET NAMES utf8mb4 */;
|
/*!40101 SET NAMES utf8mb4 */;
|
||||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||||
@ -21,33 +21,34 @@
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `device`;
|
DROP TABLE IF EXISTS `device`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `device` (
|
CREATE TABLE `device` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`deviceId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`deviceId` varchar(50) NOT NULL,
|
||||||
`name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`name` varchar(255) DEFAULT NULL,
|
||||||
`manufacturer` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`manufacturer` varchar(255) DEFAULT NULL,
|
||||||
`model` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`model` varchar(255) DEFAULT NULL,
|
||||||
`firmware` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`firmware` varchar(255) DEFAULT NULL,
|
||||||
`transport` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`transport` varchar(50) DEFAULT NULL,
|
||||||
`streamMode` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`streamMode` varchar(50) DEFAULT NULL,
|
||||||
`online` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`online` varchar(50) DEFAULT NULL,
|
||||||
`registerTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`registerTime` varchar(50) DEFAULT NULL,
|
||||||
`keepaliveTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`keepaliveTime` varchar(50) DEFAULT NULL,
|
||||||
`ip` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`ip` varchar(50) NOT NULL,
|
||||||
`createTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`createTime` varchar(50) NOT NULL,
|
||||||
`updateTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`updateTime` varchar(50) NOT NULL,
|
||||||
`port` int NOT NULL,
|
`port` int(11) NOT NULL,
|
||||||
`expires` int NOT NULL,
|
`expires` int(11) NOT NULL,
|
||||||
`subscribeCycleForCatalog` int NOT NULL,
|
`subscribeCycleForCatalog` int(11) NOT NULL,
|
||||||
`subscribeCycleForMobilePosition` int NOT NULL,
|
`subscribeCycleForMobilePosition` int(11) NOT NULL,
|
||||||
`mobilePositionSubmissionInterval` int DEFAULT 5 NOT NULL,
|
`mobilePositionSubmissionInterval` int(11) NOT NULL DEFAULT '5',
|
||||||
`subscribeCycleForAlarm` int NOT NULL,
|
`subscribeCycleForAlarm` int(11) NOT NULL,
|
||||||
`hostAddress` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`hostAddress` varchar(50) NOT NULL,
|
||||||
`charset` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`charset` varchar(50) NOT NULL,
|
||||||
|
`ssrcCheck` int(11) DEFAULT '0',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `device_deviceId_uindex` (`deviceId`)
|
UNIQUE KEY `device_deviceId_uindex` (`deviceId`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8mb4;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -65,20 +66,20 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `device_alarm`;
|
DROP TABLE IF EXISTS `device_alarm`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `device_alarm` (
|
CREATE TABLE `device_alarm` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`deviceId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`deviceId` varchar(50) NOT NULL,
|
||||||
`channelId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`channelId` varchar(50) NOT NULL,
|
||||||
`alarmPriority` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`alarmPriority` varchar(50) NOT NULL,
|
||||||
`alarmMethod` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`alarmMethod` varchar(50) DEFAULT NULL,
|
||||||
`alarmTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`alarmTime` varchar(50) NOT NULL,
|
||||||
`alarmDescription` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`alarmDescription` varchar(255) DEFAULT NULL,
|
||||||
`longitude` double DEFAULT NULL,
|
`longitude` double DEFAULT NULL,
|
||||||
`latitude` double DEFAULT NULL,
|
`latitude` double DEFAULT NULL,
|
||||||
`alarmType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`alarmType` varchar(50) DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -96,43 +97,43 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `device_channel`;
|
DROP TABLE IF EXISTS `device_channel`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `device_channel` (
|
CREATE TABLE `device_channel` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`channelId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`channelId` varchar(50) NOT NULL,
|
||||||
`name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`name` varchar(255) DEFAULT NULL,
|
||||||
`manufacture` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`manufacture` varchar(50) DEFAULT NULL,
|
||||||
`model` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`model` varchar(50) DEFAULT NULL,
|
||||||
`owner` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`owner` varchar(50) DEFAULT NULL,
|
||||||
`civilCode` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`civilCode` varchar(50) DEFAULT NULL,
|
||||||
`block` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`block` varchar(50) DEFAULT NULL,
|
||||||
`address` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`address` varchar(50) DEFAULT NULL,
|
||||||
`parentId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`parentId` varchar(50) DEFAULT NULL,
|
||||||
`safetyWay` int DEFAULT NULL,
|
`safetyWay` int(11) DEFAULT NULL,
|
||||||
`registerWay` int DEFAULT NULL,
|
`registerWay` int(11) DEFAULT NULL,
|
||||||
`certNum` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`certNum` varchar(50) DEFAULT NULL,
|
||||||
`certifiable` int DEFAULT NULL,
|
`certifiable` int(11) DEFAULT NULL,
|
||||||
`errCode` int DEFAULT NULL,
|
`errCode` int(11) DEFAULT NULL,
|
||||||
`endTime` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`endTime` varchar(50) DEFAULT NULL,
|
||||||
`secrecy` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`secrecy` varchar(50) DEFAULT NULL,
|
||||||
`ipAddress` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`ipAddress` varchar(50) DEFAULT NULL,
|
||||||
`port` int DEFAULT NULL,
|
`port` int(11) DEFAULT NULL,
|
||||||
`password` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`password` varchar(255) DEFAULT NULL,
|
||||||
`PTZType` int DEFAULT NULL,
|
`PTZType` int(11) DEFAULT NULL,
|
||||||
`status` int DEFAULT NULL,
|
`status` int(11) DEFAULT NULL,
|
||||||
`longitude` double DEFAULT NULL,
|
`longitude` double DEFAULT NULL,
|
||||||
`latitude` double DEFAULT NULL,
|
`latitude` double DEFAULT NULL,
|
||||||
`streamId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`streamId` varchar(50) DEFAULT NULL,
|
||||||
`deviceId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`deviceId` varchar(50) NOT NULL,
|
||||||
`parental` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`parental` varchar(50) DEFAULT NULL,
|
||||||
`hasAudio` bit(1) DEFAULT NULL,
|
`hasAudio` bit(1) DEFAULT NULL,
|
||||||
`createTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`createTime` varchar(50) NOT NULL,
|
||||||
`updateTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`updateTime` varchar(50) NOT NULL,
|
||||||
`subCount` int DEFAULT '0',
|
`subCount` int(11) DEFAULT '0',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `device_channel_id_uindex` (`id`),
|
UNIQUE KEY `device_channel_id_uindex` (`id`),
|
||||||
UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`)
|
UNIQUE KEY `device_channel_pk` (`channelId`,`deviceId`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB AUTO_INCREMENT=81657 DEFAULT CHARSET=utf8mb4;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -150,24 +151,24 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `device_mobile_position`;
|
DROP TABLE IF EXISTS `device_mobile_position`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `device_mobile_position` (
|
CREATE TABLE `device_mobile_position` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`deviceId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`deviceId` varchar(50) NOT NULL,
|
||||||
`channelId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`channelId` varchar(50) NOT NULL,
|
||||||
`deviceName` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`deviceName` varchar(255) DEFAULT NULL,
|
||||||
`time` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`time` varchar(50) NOT NULL,
|
||||||
`longitude` double NOT NULL,
|
`longitude` double NOT NULL,
|
||||||
`latitude` double NOT NULL,
|
`latitude` double NOT NULL,
|
||||||
`altitude` double DEFAULT NULL,
|
`altitude` double DEFAULT NULL,
|
||||||
`speed` double DEFAULT NULL,
|
`speed` double DEFAULT NULL,
|
||||||
`direction` double DEFAULT NULL,
|
`direction` double DEFAULT NULL,
|
||||||
`reportSource` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`reportSource` varchar(50) DEFAULT NULL,
|
||||||
`geodeticSystem` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`geodeticSystem` varchar(50) DEFAULT NULL,
|
||||||
`cnLng` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`cnLng` varchar(50) DEFAULT NULL,
|
||||||
`cnLat` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`cnLat` varchar(50) DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB AUTO_INCREMENT=6108 DEFAULT CHARSET=utf8mb4;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -185,23 +186,23 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `gb_stream`;
|
DROP TABLE IF EXISTS `gb_stream`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `gb_stream` (
|
CREATE TABLE `gb_stream` (
|
||||||
`gbStreamId` int NOT NULL AUTO_INCREMENT,
|
`gbStreamId` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`app` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`app` varchar(255) NOT NULL,
|
||||||
`stream` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`stream` varchar(255) NOT NULL,
|
||||||
`gbId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`gbId` varchar(50) NOT NULL,
|
||||||
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`name` varchar(255) DEFAULT NULL,
|
||||||
`longitude` double DEFAULT NULL,
|
`longitude` double DEFAULT NULL,
|
||||||
`latitude` double DEFAULT NULL,
|
`latitude` double DEFAULT NULL,
|
||||||
`streamType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`streamType` varchar(50) DEFAULT NULL,
|
||||||
`mediaServerId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`mediaServerId` varchar(50) DEFAULT NULL,
|
||||||
`status` int DEFAULT NULL,
|
`status` int(11) DEFAULT NULL,
|
||||||
`createStamp` bigint DEFAULT NULL,
|
`createStamp` bigint(20) DEFAULT NULL,
|
||||||
PRIMARY KEY (`gbStreamId`) USING BTREE,
|
PRIMARY KEY (`gbStreamId`) USING BTREE,
|
||||||
UNIQUE KEY `app` (`app`,`stream`) USING BTREE,
|
UNIQUE KEY `app` (`app`,`stream`) USING BTREE,
|
||||||
UNIQUE KEY `gbId` (`gbId`) USING BTREE
|
UNIQUE KEY `gbId` (`gbId`) USING BTREE
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=300766 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB AUTO_INCREMENT=300769 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -219,19 +220,19 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `log`;
|
DROP TABLE IF EXISTS `log`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `log` (
|
CREATE TABLE `log` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`name` varchar(50) NOT NULL,
|
||||||
`type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`type` varchar(50) NOT NULL,
|
||||||
`uri` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`uri` varchar(200) NOT NULL,
|
||||||
`address` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`address` varchar(50) NOT NULL,
|
||||||
`result` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`result` varchar(50) NOT NULL,
|
||||||
`timing` bigint NOT NULL,
|
`timing` bigint(20) NOT NULL,
|
||||||
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`username` varchar(50) NOT NULL,
|
||||||
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`createTime` varchar(50) NOT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=962 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB AUTO_INCREMENT=1552 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -249,34 +250,34 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `media_server`;
|
DROP TABLE IF EXISTS `media_server`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `media_server` (
|
CREATE TABLE `media_server` (
|
||||||
`id` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`id` varchar(255) NOT NULL,
|
||||||
`ip` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`ip` varchar(50) NOT NULL,
|
||||||
`hookIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`hookIp` varchar(50) NOT NULL,
|
||||||
`sdpIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`sdpIp` varchar(50) NOT NULL,
|
||||||
`streamIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`streamIp` varchar(50) NOT NULL,
|
||||||
`httpPort` int NOT NULL,
|
`httpPort` int(11) NOT NULL,
|
||||||
`httpSSlPort` int NOT NULL,
|
`httpSSlPort` int(11) NOT NULL,
|
||||||
`rtmpPort` int NOT NULL,
|
`rtmpPort` int(11) NOT NULL,
|
||||||
`rtmpSSlPort` int NOT NULL,
|
`rtmpSSlPort` int(11) NOT NULL,
|
||||||
`rtpProxyPort` int NOT NULL,
|
`rtpProxyPort` int(11) NOT NULL,
|
||||||
`rtspPort` int NOT NULL,
|
`rtspPort` int(11) NOT NULL,
|
||||||
`rtspSSLPort` int NOT NULL,
|
`rtspSSLPort` int(11) NOT NULL,
|
||||||
`autoConfig` int NOT NULL,
|
`autoConfig` int(11) NOT NULL,
|
||||||
`secret` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`secret` varchar(50) NOT NULL,
|
||||||
`streamNoneReaderDelayMS` int NOT NULL,
|
`streamNoneReaderDelayMS` int(11) NOT NULL,
|
||||||
`rtpEnable` int NOT NULL,
|
`rtpEnable` int(11) NOT NULL,
|
||||||
`rtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`rtpPortRange` varchar(50) NOT NULL,
|
||||||
`sendRtpPortRange` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`sendRtpPortRange` varchar(50) NOT NULL,
|
||||||
`recordAssistPort` int NOT NULL,
|
`recordAssistPort` int(11) NOT NULL,
|
||||||
`defaultServer` int NOT NULL,
|
`defaultServer` int(11) NOT NULL,
|
||||||
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`createTime` varchar(50) NOT NULL,
|
||||||
`updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`updateTime` varchar(50) NOT NULL,
|
||||||
`hookAliveInterval` int NOT NULL,
|
`hookAliveInterval` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
UNIQUE KEY `media_server_i` (`ip`,`httpPort`) USING BTREE
|
UNIQUE KEY `media_server_i` (`ip`,`httpPort`) USING BTREE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -294,33 +295,36 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `parent_platform`;
|
DROP TABLE IF EXISTS `parent_platform`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `parent_platform` (
|
CREATE TABLE `parent_platform` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`enable` int DEFAULT NULL,
|
`enable` int(11) DEFAULT NULL,
|
||||||
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`name` varchar(255) DEFAULT NULL,
|
||||||
`serverGBId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`serverGBId` varchar(50) NOT NULL,
|
||||||
`serverGBDomain` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`serverGBDomain` varchar(50) DEFAULT NULL,
|
||||||
`serverIP` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`serverIP` varchar(50) DEFAULT NULL,
|
||||||
`serverPort` int DEFAULT NULL,
|
`serverPort` int(11) DEFAULT NULL,
|
||||||
`deviceGBId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`deviceGBId` varchar(50) NOT NULL,
|
||||||
`deviceIp` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`deviceIp` varchar(50) DEFAULT NULL,
|
||||||
`devicePort` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`devicePort` varchar(50) DEFAULT NULL,
|
||||||
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`username` varchar(255) DEFAULT NULL,
|
||||||
`password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`password` varchar(50) DEFAULT NULL,
|
||||||
`expires` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`expires` varchar(50) DEFAULT NULL,
|
||||||
`keepTimeout` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`keepTimeout` varchar(50) DEFAULT NULL,
|
||||||
`transport` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`transport` varchar(50) DEFAULT NULL,
|
||||||
`characterSet` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`characterSet` varchar(50) DEFAULT NULL,
|
||||||
`catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`catalogId` varchar(50) NOT NULL,
|
||||||
`ptz` int DEFAULT NULL,
|
`ptz` int(11) DEFAULT NULL,
|
||||||
`rtcp` int DEFAULT NULL,
|
`rtcp` int(11) DEFAULT NULL,
|
||||||
`status` bit(1) DEFAULT NULL,
|
`status` bit(1) DEFAULT NULL,
|
||||||
`shareAllLiveStream` int DEFAULT NULL,
|
`shareAllLiveStream` int(11) DEFAULT NULL,
|
||||||
|
`startOfflinePush` int(11) DEFAULT '0',
|
||||||
|
`administrativeDivision` varchar(50) NOT NULL,
|
||||||
|
`catalogGroup` int(11) DEFAULT '1',
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `parent_platform_id_uindex` (`id`),
|
UNIQUE KEY `parent_platform_id_uindex` (`id`),
|
||||||
UNIQUE KEY `parent_platform_pk` (`serverGBId`)
|
UNIQUE KEY `parent_platform_pk` (`serverGBId`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=23 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -338,14 +342,14 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `platform_catalog`;
|
DROP TABLE IF EXISTS `platform_catalog`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `platform_catalog` (
|
CREATE TABLE `platform_catalog` (
|
||||||
`id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`id` varchar(50) NOT NULL,
|
||||||
`platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`platformId` varchar(50) NOT NULL,
|
||||||
`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`name` varchar(255) NOT NULL,
|
||||||
`parentId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`parentId` varchar(50) DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -363,14 +367,14 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `platform_gb_channel`;
|
DROP TABLE IF EXISTS `platform_gb_channel`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `platform_gb_channel` (
|
CREATE TABLE `platform_gb_channel` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`platformId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`platformId` varchar(50) NOT NULL,
|
||||||
`catalogId` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`catalogId` varchar(50) NOT NULL,
|
||||||
`deviceChannelId` int NOT NULL,
|
`deviceChannelId` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB AUTO_INCREMENT=250 DEFAULT CHARSET=utf8mb4;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -388,15 +392,15 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `platform_gb_stream`;
|
DROP TABLE IF EXISTS `platform_gb_stream`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `platform_gb_stream` (
|
CREATE TABLE `platform_gb_stream` (
|
||||||
`platformId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`platformId` varchar(50) NOT NULL,
|
||||||
`catalogId` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`catalogId` varchar(50) NOT NULL,
|
||||||
`gbStreamId` int NOT NULL,
|
`gbStreamId` int(11) NOT NULL,
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`)
|
UNIQUE KEY `platform_gb_stream_pk` (`platformId`,`catalogId`,`gbStreamId`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=301207 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB AUTO_INCREMENT=301210 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -414,29 +418,29 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `stream_proxy`;
|
DROP TABLE IF EXISTS `stream_proxy`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `stream_proxy` (
|
CREATE TABLE `stream_proxy` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`type` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`type` varchar(50) NOT NULL,
|
||||||
`app` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
`app` varchar(255) NOT NULL,
|
||||||
`stream` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
`stream` varchar(255) NOT NULL,
|
||||||
`url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`url` varchar(255) DEFAULT NULL,
|
||||||
`src_url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`src_url` varchar(255) DEFAULT NULL,
|
||||||
`dst_url` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`dst_url` varchar(255) DEFAULT NULL,
|
||||||
`timeout_ms` int DEFAULT NULL,
|
`timeout_ms` int(11) DEFAULT NULL,
|
||||||
`ffmpeg_cmd_key` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`ffmpeg_cmd_key` varchar(255) DEFAULT NULL,
|
||||||
`rtp_type` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`rtp_type` varchar(50) DEFAULT NULL,
|
||||||
`mediaServerId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`mediaServerId` varchar(50) DEFAULT NULL,
|
||||||
`enable_hls` bit(1) DEFAULT NULL,
|
`enable_hls` bit(1) DEFAULT NULL,
|
||||||
`enable_mp4` bit(1) DEFAULT NULL,
|
`enable_mp4` bit(1) DEFAULT NULL,
|
||||||
`enable` bit(1) NOT NULL,
|
`enable` bit(1) NOT NULL,
|
||||||
`status` bit(1) NOT NULL,
|
`status` bit(1) NOT NULL,
|
||||||
`enable_remove_none_reader` bit(1) NOT NULL,
|
`enable_remove_none_reader` bit(1) NOT NULL,
|
||||||
`createTime` varchar(50) COLLATE utf8mb4_general_ci NOT NULL,
|
`createTime` varchar(50) NOT NULL,
|
||||||
`name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`name` varchar(255) DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `stream_proxy_pk` (`app`,`stream`)
|
UNIQUE KEY `stream_proxy_pk` (`app`,`stream`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -454,20 +458,20 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `stream_push`;
|
DROP TABLE IF EXISTS `stream_push`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `stream_push` (
|
CREATE TABLE `stream_push` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`app` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
`app` varchar(255) NOT NULL,
|
||||||
`stream` varchar(255) COLLATE utf8mb4_general_ci NOT NULL,
|
`stream` varchar(255) NOT NULL,
|
||||||
`totalReaderCount` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`totalReaderCount` varchar(50) DEFAULT NULL,
|
||||||
`originType` int DEFAULT NULL,
|
`originType` int(11) DEFAULT NULL,
|
||||||
`originTypeStr` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`originTypeStr` varchar(50) DEFAULT NULL,
|
||||||
`createStamp` bigint DEFAULT NULL,
|
`createStamp` bigint(20) DEFAULT NULL,
|
||||||
`aliveSecond` int DEFAULT NULL,
|
`aliveSecond` int(11) DEFAULT NULL,
|
||||||
`mediaServerId` varchar(50) COLLATE utf8mb4_general_ci DEFAULT NULL,
|
`mediaServerId` varchar(50) DEFAULT NULL,
|
||||||
PRIMARY KEY (`id`),
|
PRIMARY KEY (`id`),
|
||||||
UNIQUE KEY `stream_push_pk` (`app`,`stream`)
|
UNIQUE KEY `stream_push_pk` (`app`,`stream`)
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=300799 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
|
) ENGINE=InnoDB AUTO_INCREMENT=300838 DEFAULT CHARSET=utf8mb4;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -485,17 +489,17 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `user`;
|
DROP TABLE IF EXISTS `user`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `user` (
|
CREATE TABLE `user` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`username` varchar(255) NOT NULL,
|
||||||
`password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`password` varchar(255) NOT NULL,
|
||||||
`roleId` int NOT NULL,
|
`roleId` int(11) NOT NULL,
|
||||||
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`createTime` varchar(50) NOT NULL,
|
||||||
`updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`updateTime` varchar(50) NOT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE,
|
PRIMARY KEY (`id`) USING BTREE,
|
||||||
UNIQUE KEY `user_username_uindex` (`username`) USING BTREE
|
UNIQUE KEY `user_username_uindex` (`username`) USING BTREE
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -504,7 +508,8 @@ CREATE TABLE `user` (
|
|||||||
|
|
||||||
LOCK TABLES `user` WRITE;
|
LOCK TABLES `user` WRITE;
|
||||||
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
|
||||||
INSERT INTO `user` VALUES (1,'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021 - 04 - 13 14:14:57','2021 - 04 - 13 14:14:57');
|
INSERT INTO `user` VALUES
|
||||||
|
(1,'admin','21232f297a57a5a743894a0e4a801fc3',1,'2021 - 04 - 13 14:14:57','2021 - 04 - 13 14:14:57');
|
||||||
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
@ -514,15 +519,15 @@ UNLOCK TABLES;
|
|||||||
|
|
||||||
DROP TABLE IF EXISTS `user_role`;
|
DROP TABLE IF EXISTS `user_role`;
|
||||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||||
/*!50503 SET character_set_client = utf8mb4 */;
|
/*!40101 SET character_set_client = utf8 */;
|
||||||
CREATE TABLE `user_role` (
|
CREATE TABLE `user_role` (
|
||||||
`id` int NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`name` varchar(50) NOT NULL,
|
||||||
`authority` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`authority` varchar(50) NOT NULL,
|
||||||
`createTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`createTime` varchar(50) NOT NULL,
|
||||||
`updateTime` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
`updateTime` varchar(50) NOT NULL,
|
||||||
PRIMARY KEY (`id`) USING BTREE
|
PRIMARY KEY (`id`) USING BTREE
|
||||||
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC;
|
||||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||||
|
|
||||||
--
|
--
|
||||||
@ -531,7 +536,8 @@ CREATE TABLE `user_role` (
|
|||||||
|
|
||||||
LOCK TABLES `user_role` WRITE;
|
LOCK TABLES `user_role` WRITE;
|
||||||
/*!40000 ALTER TABLE `user_role` DISABLE KEYS */;
|
/*!40000 ALTER TABLE `user_role` DISABLE KEYS */;
|
||||||
INSERT INTO `user_role` VALUES (1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57');
|
INSERT INTO `user_role` VALUES
|
||||||
|
(1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57');
|
||||||
/*!40000 ALTER TABLE `user_role` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `user_role` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||||
@ -544,4 +550,4 @@ UNLOCK TABLES;
|
|||||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||||
|
|
||||||
-- Dump completed on 2022-03-07 8:26:30
|
-- Dump completed on 2022-04-18 10:50:27
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
alter table device
|
alter table parent_platform
|
||||||
add subscribeCycleForMobilePosition int null;
|
add startOfflinePush int default 0 null;
|
||||||
|
|
||||||
|
alter table parent_platform
|
||||||
|
add administrativeDivision varchar(50) not null;
|
||||||
|
|
||||||
|
alter table parent_platform
|
||||||
|
add catalogGroup int default 1 null;
|
||||||
|
|
||||||
alter table device
|
alter table device
|
||||||
add mobilePositionSubmissionInterval int default 5 null;
|
add ssrcCheck int default 0 null;
|
||||||
|
|
||||||
alter table device
|
|
||||||
add subscribeCycleForAlarm int null;
|
|
@ -76,7 +76,6 @@ public class DynamicTask {
|
|||||||
*/
|
*/
|
||||||
public void startDelay(String key, Runnable task, int delay) {
|
public void startDelay(String key, Runnable task, int delay) {
|
||||||
stop(key);
|
stop(key);
|
||||||
System.out.println("定时任务开始了");
|
|
||||||
Date starTime = new Date(System.currentTimeMillis() + delay);
|
Date starTime = new Date(System.currentTimeMillis() + delay);
|
||||||
|
|
||||||
ScheduledFuture future = futureMap.get(key);
|
ScheduledFuture future = futureMap.get(key);
|
||||||
@ -100,7 +99,6 @@ public class DynamicTask {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void stop(String key) {
|
public void stop(String key) {
|
||||||
System.out.println("定时任务结束了");
|
|
||||||
if (futureMap.get(key) != null && !futureMap.get(key).isCancelled()) {
|
if (futureMap.get(key) != null && !futureMap.get(key).isCancelled()) {
|
||||||
futureMap.get(key).cancel(true);
|
futureMap.get(key).cancel(true);
|
||||||
Runnable runnable = runnableMap.get(key);
|
Runnable runnable = runnableMap.get(key);
|
||||||
|
@ -48,6 +48,7 @@ public class SipLayer{
|
|||||||
properties.setProperty("javax.sip.STACK_NAME", "GB28181_SIP");
|
properties.setProperty("javax.sip.STACK_NAME", "GB28181_SIP");
|
||||||
properties.setProperty("javax.sip.IP_ADDRESS", sipConfig.getMonitorIp());
|
properties.setProperty("javax.sip.IP_ADDRESS", sipConfig.getMonitorIp());
|
||||||
properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "true");
|
properties.setProperty("gov.nist.javax.sip.LOG_MESSAGE_CONTENT", "true");
|
||||||
|
properties.setProperty("gov.nist.javax.sip.DELIVER_UNSOLICITED_NOTIFY", "true"); // 接收所有notify请求,即使没有订阅
|
||||||
/**
|
/**
|
||||||
* sip_server_log.log 和 sip_debug_log.log public static final int TRACE_NONE =
|
* sip_server_log.log 和 sip_debug_log.log public static final int TRACE_NONE =
|
||||||
* 0; public static final int TRACE_MESSAGES = 16; public static final int
|
* 0; public static final int TRACE_MESSAGES = 16; public static final int
|
||||||
|
@ -4,6 +4,7 @@ import java.util.Date;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class CatalogData {
|
public class CatalogData {
|
||||||
|
private int sn; // 命令序列号
|
||||||
private int total;
|
private int total;
|
||||||
private List<DeviceChannel> channelList;
|
private List<DeviceChannel> channelList;
|
||||||
private Date lastTime;
|
private Date lastTime;
|
||||||
@ -15,6 +16,15 @@ public class CatalogData {
|
|||||||
}
|
}
|
||||||
private CatalogDataStatus status;
|
private CatalogDataStatus status;
|
||||||
|
|
||||||
|
|
||||||
|
public int getSn() {
|
||||||
|
return sn;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSn(int sn) {
|
||||||
|
this.sn = sn;
|
||||||
|
}
|
||||||
|
|
||||||
public int getTotal() {
|
public int getTotal() {
|
||||||
return total;
|
return total;
|
||||||
}
|
}
|
||||||
|
@ -129,6 +129,11 @@ public class Device {
|
|||||||
*/
|
*/
|
||||||
private int subscribeCycleForAlarm;
|
private int subscribeCycleForAlarm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否开启ssrc校验,默认关闭,开启可以防止串流
|
||||||
|
*/
|
||||||
|
private boolean ssrcCheck;
|
||||||
|
|
||||||
|
|
||||||
public String getDeviceId() {
|
public String getDeviceId() {
|
||||||
return deviceId;
|
return deviceId;
|
||||||
@ -321,4 +326,12 @@ public class Device {
|
|||||||
public void setSubscribeCycleForAlarm(int subscribeCycleForAlarm) {
|
public void setSubscribeCycleForAlarm(int subscribeCycleForAlarm) {
|
||||||
this.subscribeCycleForAlarm = subscribeCycleForAlarm;
|
this.subscribeCycleForAlarm = subscribeCycleForAlarm;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isSsrcCheck() {
|
||||||
|
return ssrcCheck;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSsrcCheck(boolean ssrcCheck) {
|
||||||
|
this.ssrcCheck = ssrcCheck;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,6 +169,11 @@ public class DeviceChannel {
|
|||||||
*/
|
*/
|
||||||
private boolean hasAudio;
|
private boolean hasAudio;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 标记通道的类型,0->国标通道 1->直播流通道 2->业务分组/虚拟组织/行政区划
|
||||||
|
*/
|
||||||
|
private int channelType;
|
||||||
|
|
||||||
public int getId() {
|
public int getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
@ -441,4 +446,12 @@ public class DeviceChannel {
|
|||||||
public void setUpdateTime(String updateTime) {
|
public void setUpdateTime(String updateTime) {
|
||||||
this.updateTime = updateTime;
|
this.updateTime = updateTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getChannelType() {
|
||||||
|
return channelType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChannelType(int channelType) {
|
||||||
|
this.channelType = channelType;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,6 +129,21 @@ public class ParentPlatform {
|
|||||||
*/
|
*/
|
||||||
private boolean mobilePositionSubscribe;
|
private boolean mobilePositionSubscribe;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点播未推流的设备时是否使用redis通知拉起
|
||||||
|
*/
|
||||||
|
private boolean startOfflinePush;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 目录分组-每次向上级发送通道信息时单个包携带的通道数量,取值1,2,4,8
|
||||||
|
*/
|
||||||
|
private int catalogGroup;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 行政区划
|
||||||
|
*/
|
||||||
|
private String administrativeDivision;
|
||||||
|
|
||||||
public Integer getId() {
|
public Integer getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
@ -329,4 +344,28 @@ public class ParentPlatform {
|
|||||||
public void setMobilePositionSubscribe(boolean mobilePositionSubscribe) {
|
public void setMobilePositionSubscribe(boolean mobilePositionSubscribe) {
|
||||||
this.mobilePositionSubscribe = mobilePositionSubscribe;
|
this.mobilePositionSubscribe = mobilePositionSubscribe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isStartOfflinePush() {
|
||||||
|
return startOfflinePush;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStartOfflinePush(boolean startOfflinePush) {
|
||||||
|
this.startOfflinePush = startOfflinePush;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getCatalogGroup() {
|
||||||
|
return catalogGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCatalogGroup(int catalogGroup) {
|
||||||
|
this.catalogGroup = catalogGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getAdministrativeDivision() {
|
||||||
|
return administrativeDivision;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAdministrativeDivision(String administrativeDivision) {
|
||||||
|
this.administrativeDivision = administrativeDivision;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,7 @@ public class OnlineEventListener implements ApplicationListener<OnlineEvent> {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SIPCommander cmder;
|
private SIPCommander cmder;
|
||||||
|
|
||||||
|
|
||||||
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -74,7 +75,7 @@ public class OnlineEventListener implements ApplicationListener<OnlineEvent> {
|
|||||||
if (deviceInStore == null) { //第一次上线
|
if (deviceInStore == null) { //第一次上线
|
||||||
logger.info("[{}] 首次注册,查询设备信息以及通道信息", device.getDeviceId());
|
logger.info("[{}] 首次注册,查询设备信息以及通道信息", device.getDeviceId());
|
||||||
cmder.deviceInfoQuery(device);
|
cmder.deviceInfoQuery(device);
|
||||||
cmder.catalogQuery(device, null);
|
deviceService.sync(device);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
// 设备主动发送心跳触发的在线事件
|
// 设备主动发送心跳触发的在线事件
|
||||||
|
@ -26,28 +26,35 @@ public class CatalogDataCatch {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private IVideoManagerStorage storager;
|
private IVideoManagerStorage storager;
|
||||||
|
|
||||||
public void addReady(String key) {
|
public void addReady(Device device, int sn ) {
|
||||||
CatalogData catalogData = data.get(key);
|
CatalogData catalogData = data.get(device.getDeviceId());
|
||||||
if (catalogData == null || catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end)) {
|
if (catalogData == null || catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end)) {
|
||||||
catalogData = new CatalogData();
|
catalogData = new CatalogData();
|
||||||
catalogData.setChannelList(new ArrayList<>());
|
catalogData.setChannelList(new ArrayList<>());
|
||||||
|
catalogData.setDevice(device);
|
||||||
|
catalogData.setSn(sn);
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.ready);
|
catalogData.setStatus(CatalogData.CatalogDataStatus.ready);
|
||||||
catalogData.setLastTime(new Date(System.currentTimeMillis()));
|
catalogData.setLastTime(new Date(System.currentTimeMillis()));
|
||||||
data.put(key, catalogData);
|
data.put(device.getDeviceId(), catalogData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void put(String key, int total, Device device, List<DeviceChannel> deviceChannelList) {
|
public void put(String deviceId, int sn, int total, Device device, List<DeviceChannel> deviceChannelList) {
|
||||||
CatalogData catalogData = data.get(key);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
if (catalogData == null) {
|
if (catalogData == null) {
|
||||||
catalogData = new CatalogData();
|
catalogData = new CatalogData();
|
||||||
|
catalogData.setSn(sn);
|
||||||
catalogData.setTotal(total);
|
catalogData.setTotal(total);
|
||||||
catalogData.setDevice(device);
|
catalogData.setDevice(device);
|
||||||
catalogData.setChannelList(new ArrayList<>());
|
catalogData.setChannelList(new ArrayList<>());
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.runIng);
|
catalogData.setStatus(CatalogData.CatalogDataStatus.runIng);
|
||||||
catalogData.setLastTime(new Date(System.currentTimeMillis()));
|
catalogData.setLastTime(new Date(System.currentTimeMillis()));
|
||||||
data.put(key, catalogData);
|
data.put(deviceId, catalogData);
|
||||||
}else {
|
}else {
|
||||||
|
// 同一个设备的通道同步请求只考虑一个,其他的直接忽略
|
||||||
|
if (catalogData.getSn() != sn) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
catalogData.setTotal(total);
|
catalogData.setTotal(total);
|
||||||
catalogData.setDevice(device);
|
catalogData.setDevice(device);
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.runIng);
|
catalogData.setStatus(CatalogData.CatalogDataStatus.runIng);
|
||||||
@ -56,20 +63,20 @@ public class CatalogDataCatch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<DeviceChannel> get(String key) {
|
public List<DeviceChannel> get(String deviceId) {
|
||||||
CatalogData catalogData = data.get(key);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
if (catalogData == null) return null;
|
if (catalogData == null) return null;
|
||||||
return catalogData.getChannelList();
|
return catalogData.getChannelList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getTotal(String key) {
|
public int getTotal(String deviceId) {
|
||||||
CatalogData catalogData = data.get(key);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
if (catalogData == null) return 0;
|
if (catalogData == null) return 0;
|
||||||
return catalogData.getTotal();
|
return catalogData.getTotal();
|
||||||
}
|
}
|
||||||
|
|
||||||
public SyncStatus getSyncStatus(String key) {
|
public SyncStatus getSyncStatus(String deviceId) {
|
||||||
CatalogData catalogData = data.get(key);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
if (catalogData == null) return null;
|
if (catalogData == null) return null;
|
||||||
SyncStatus syncStatus = new SyncStatus();
|
SyncStatus syncStatus = new SyncStatus();
|
||||||
syncStatus.setCurrent(catalogData.getChannelList().size());
|
syncStatus.setCurrent(catalogData.getChannelList().size());
|
||||||
@ -78,8 +85,10 @@ public class CatalogDataCatch {
|
|||||||
return syncStatus;
|
return syncStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void del(String key) {
|
public boolean isSyncRunning(String deviceId) {
|
||||||
data.remove(key);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
|
if (catalogData == null) return false;
|
||||||
|
return !catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Scheduled(fixedRate = 5 * 1000) //每5秒执行一次, 发现数据5秒未更新则移除数据并认为数据接收超时
|
@Scheduled(fixedRate = 5 * 1000) //每5秒执行一次, 发现数据5秒未更新则移除数据并认为数据接收超时
|
||||||
@ -92,23 +101,30 @@ public class CatalogDataCatch {
|
|||||||
Calendar calendarBefore30S = Calendar.getInstance();
|
Calendar calendarBefore30S = Calendar.getInstance();
|
||||||
calendarBefore30S.setTime(new Date());
|
calendarBefore30S.setTime(new Date());
|
||||||
calendarBefore30S.set(Calendar.SECOND, calendarBefore30S.get(Calendar.SECOND) - 30);
|
calendarBefore30S.set(Calendar.SECOND, calendarBefore30S.get(Calendar.SECOND) - 30);
|
||||||
for (String key : keys) {
|
for (String deviceId : keys) {
|
||||||
CatalogData catalogData = data.get(key);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
if (catalogData.getLastTime().before(calendarBefore5S.getTime())) { // 超过五秒收不到消息任务超时, 只更新这一部分数据
|
if ( catalogData.getLastTime().before(calendarBefore5S.getTime())) { // 超过五秒收不到消息任务超时, 只更新这一部分数据
|
||||||
storager.resetChannels(catalogData.getDevice().getDeviceId(), catalogData.getChannelList());
|
if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.runIng)) {
|
||||||
String errorMsg = "更新成功,共" + catalogData.getTotal() + "条,已更新" + catalogData.getChannelList().size() + "条";
|
storager.resetChannels(catalogData.getDevice().getDeviceId(), catalogData.getChannelList());
|
||||||
|
if (catalogData.getTotal() != catalogData.getChannelList().size()) {
|
||||||
|
String errorMsg = "更新成功,共" + catalogData.getTotal() + "条,已更新" + catalogData.getChannelList().size() + "条";
|
||||||
|
catalogData.setErrorMsg(errorMsg);
|
||||||
|
}
|
||||||
|
}else if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.ready)) {
|
||||||
|
String errorMsg = "同步失败,等待回复超时";
|
||||||
|
catalogData.setErrorMsg(errorMsg);
|
||||||
|
}
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.end);
|
catalogData.setStatus(CatalogData.CatalogDataStatus.end);
|
||||||
catalogData.setErrorMsg(errorMsg);
|
|
||||||
}
|
}
|
||||||
if (catalogData.getLastTime().before(calendarBefore30S.getTime())) { // 超过三十秒,如果标记为end则删除
|
if (catalogData.getStatus().equals(CatalogData.CatalogDataStatus.end) && catalogData.getLastTime().before(calendarBefore30S.getTime())) { // 超过三十秒,如果标记为end则删除
|
||||||
data.remove(key);
|
data.remove(deviceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void setChannelSyncEnd(String key, String errorMsg) {
|
public void setChannelSyncEnd(String deviceId, String errorMsg) {
|
||||||
CatalogData catalogData = data.get(key);
|
CatalogData catalogData = data.get(deviceId);
|
||||||
if (catalogData == null)return;
|
if (catalogData == null)return;
|
||||||
catalogData.setStatus(CatalogData.CatalogDataStatus.end);
|
catalogData.setStatus(CatalogData.CatalogDataStatus.end);
|
||||||
catalogData.setErrorMsg(errorMsg);
|
catalogData.setErrorMsg(errorMsg);
|
||||||
|
@ -10,6 +10,8 @@ import org.springframework.scheduling.annotation.Async;
|
|||||||
import javax.sip.Dialog;
|
import javax.sip.Dialog;
|
||||||
import javax.sip.DialogState;
|
import javax.sip.DialogState;
|
||||||
import javax.sip.ResponseEvent;
|
import javax.sip.ResponseEvent;
|
||||||
|
import java.util.Timer;
|
||||||
|
import java.util.TimerTask;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 目录订阅任务
|
* 目录订阅任务
|
||||||
@ -20,6 +22,8 @@ public class CatalogSubscribeTask implements ISubscribeTask {
|
|||||||
private final ISIPCommander sipCommander;
|
private final ISIPCommander sipCommander;
|
||||||
private Dialog dialog;
|
private Dialog dialog;
|
||||||
|
|
||||||
|
private Timer timer ;
|
||||||
|
|
||||||
public CatalogSubscribeTask(Device device, ISIPCommander sipCommander) {
|
public CatalogSubscribeTask(Device device, ISIPCommander sipCommander) {
|
||||||
this.device = device;
|
this.device = device;
|
||||||
this.sipCommander = sipCommander;
|
this.sipCommander = sipCommander;
|
||||||
@ -27,6 +31,10 @@ public class CatalogSubscribeTask implements ISubscribeTask {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
if (timer != null ) {
|
||||||
|
timer.cancel();
|
||||||
|
timer = null;
|
||||||
|
}
|
||||||
sipCommander.catalogSubscribe(device, dialog, eventResult -> {
|
sipCommander.catalogSubscribe(device, dialog, eventResult -> {
|
||||||
if (eventResult.dialog != null || eventResult.dialog.getState().equals(DialogState.CONFIRMED)) {
|
if (eventResult.dialog != null || eventResult.dialog.getState().equals(DialogState.CONFIRMED)) {
|
||||||
dialog = eventResult.dialog;
|
dialog = eventResult.dialog;
|
||||||
@ -43,6 +51,13 @@ public class CatalogSubscribeTask implements ISubscribeTask {
|
|||||||
dialog = null;
|
dialog = null;
|
||||||
// 失败
|
// 失败
|
||||||
logger.warn("[目录订阅]失败,信令发送失败: {}-{} ", device.getDeviceId(), eventResult.msg);
|
logger.warn("[目录订阅]失败,信令发送失败: {}-{} ", device.getDeviceId(), eventResult.msg);
|
||||||
|
timer = new Timer();
|
||||||
|
timer.schedule(new TimerTask() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
CatalogSubscribeTask.this.run();
|
||||||
|
}
|
||||||
|
}, 2000);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -56,9 +71,13 @@ public class CatalogSubscribeTask implements ISubscribeTask {
|
|||||||
* TERMINATED-> Terminated Dialog状态-终止
|
* TERMINATED-> Terminated Dialog状态-终止
|
||||||
*/
|
*/
|
||||||
logger.info("取消目录订阅时dialog状态为{}", DialogState.CONFIRMED);
|
logger.info("取消目录订阅时dialog状态为{}", DialogState.CONFIRMED);
|
||||||
|
if (timer != null ) {
|
||||||
|
timer.cancel();
|
||||||
|
timer = null;
|
||||||
|
}
|
||||||
if (dialog != null && dialog.getState().equals(DialogState.CONFIRMED)) {
|
if (dialog != null && dialog.getState().equals(DialogState.CONFIRMED)) {
|
||||||
device.setSubscribeCycleForCatalog(0);
|
device.setSubscribeCycleForCatalog(0);
|
||||||
sipCommander.mobilePositionSubscribe(device, dialog, eventResult -> {
|
sipCommander.catalogSubscribe(device, dialog, eventResult -> {
|
||||||
ResponseEvent event = (ResponseEvent) eventResult.event;
|
ResponseEvent event = (ResponseEvent) eventResult.event;
|
||||||
if (event.getResponse().getRawContent() != null) {
|
if (event.getResponse().getRawContent() != null) {
|
||||||
// 成功
|
// 成功
|
||||||
|
@ -29,7 +29,6 @@ public class MobilePositionSubscribeHandlerTask implements ISubscribeTask {
|
|||||||
private String key;
|
private String key;
|
||||||
|
|
||||||
public MobilePositionSubscribeHandlerTask(IRedisCatchStorage redisCatchStorage, ISIPCommanderForPlatform sipCommanderForPlatform, IVideoManagerStorage storager, String platformId, String sn, String key, SubscribeHolder subscribeInfo) {
|
public MobilePositionSubscribeHandlerTask(IRedisCatchStorage redisCatchStorage, ISIPCommanderForPlatform sipCommanderForPlatform, IVideoManagerStorage storager, String platformId, String sn, String key, SubscribeHolder subscribeInfo) {
|
||||||
System.out.println("MobilePositionSubscribeHandlerTask 初始化");
|
|
||||||
this.redisCatchStorage = redisCatchStorage;
|
this.redisCatchStorage = redisCatchStorage;
|
||||||
this.storager = storager;
|
this.storager = storager;
|
||||||
this.platform = storager.queryParentPlatByServerGBId(platformId);
|
this.platform = storager.queryParentPlatByServerGBId(platformId);
|
||||||
@ -42,7 +41,6 @@ public class MobilePositionSubscribeHandlerTask implements ISubscribeTask {
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
logger.info("执行MobilePositionSubscribeHandlerTask");
|
|
||||||
if (platform == null) return;
|
if (platform == null) return;
|
||||||
SubscribeInfo subscribe = subscribeHolder.getMobilePositionSubscribe(platform.getServerGBId());
|
SubscribeInfo subscribe = subscribeHolder.getMobilePositionSubscribe(platform.getServerGBId());
|
||||||
if (subscribe != null) {
|
if (subscribe != null) {
|
||||||
@ -71,7 +69,6 @@ public class MobilePositionSubscribeHandlerTask implements ISubscribeTask {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.info("结束执行MobilePositionSubscribeHandlerTask");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -250,7 +250,7 @@ public interface ISIPCommander {
|
|||||||
*
|
*
|
||||||
* @param device 视频设备
|
* @param device 视频设备
|
||||||
*/
|
*/
|
||||||
boolean catalogQuery(Device device, SipSubscribe.Event errorEvent);
|
boolean catalogQuery(Device device, int sn, SipSubscribe.Event errorEvent);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询录像信息
|
* 查询录像信息
|
||||||
|
@ -1208,14 +1208,14 @@ public class SIPCommander implements ISIPCommander {
|
|||||||
* @param device 视频设备
|
* @param device 视频设备
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public boolean catalogQuery(Device device, SipSubscribe.Event errorEvent) {
|
public boolean catalogQuery(Device device, int sn, SipSubscribe.Event errorEvent) {
|
||||||
try {
|
try {
|
||||||
StringBuffer catalogXml = new StringBuffer(200);
|
StringBuffer catalogXml = new StringBuffer(200);
|
||||||
String charset = device.getCharset();
|
String charset = device.getCharset();
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + charset + "\"?>\r\n");
|
||||||
catalogXml.append("<Query>\r\n");
|
catalogXml.append("<Query>\r\n");
|
||||||
catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
|
catalogXml.append("<CmdType>Catalog</CmdType>\r\n");
|
||||||
catalogXml.append("<SN>" + (int)((Math.random()*9+1)*100000) + "</SN>\r\n");
|
catalogXml.append("<SN>" + sn + "</SN>\r\n");
|
||||||
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
catalogXml.append("<DeviceID>" + device.getDeviceId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("</Query>\r\n");
|
catalogXml.append("</Query>\r\n");
|
||||||
|
|
||||||
|
@ -32,6 +32,7 @@ import javax.sip.header.*;
|
|||||||
import javax.sip.message.Request;
|
import javax.sip.message.Request;
|
||||||
import java.lang.reflect.Field;
|
import java.lang.reflect.Field;
|
||||||
import java.text.ParseException;
|
import java.text.ParseException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
@ -215,7 +216,11 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
String catalogXml = getCatalogXml(channel, sn, parentPlatform, size);
|
List<DeviceChannel> channels = new ArrayList<>();
|
||||||
|
if (channel != null) {
|
||||||
|
channels.add(channel);
|
||||||
|
}
|
||||||
|
String catalogXml = getCatalogXml(channels, sn, parentPlatform, size);
|
||||||
|
|
||||||
// callid
|
// callid
|
||||||
CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
|
CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
|
||||||
@ -239,7 +244,7 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
sendCatalogResponse(channels, parentPlatform, sn, fromTag, 0);
|
sendCatalogResponse(channels, parentPlatform, sn, fromTag, 0);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
private String getCatalogXml(DeviceChannel channel, String sn, ParentPlatform parentPlatform, int size) {
|
private String getCatalogXml(List<DeviceChannel> channels, String sn, ParentPlatform parentPlatform, int size) {
|
||||||
String characterSet = parentPlatform.getCharacterSet();
|
String characterSet = parentPlatform.getCharacterSet();
|
||||||
StringBuffer catalogXml = new StringBuffer(600);
|
StringBuffer catalogXml = new StringBuffer(600);
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet +"\"?>\r\n");
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet +"\"?>\r\n");
|
||||||
@ -248,34 +253,38 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
catalogXml.append("<SN>" +sn + "</SN>\r\n");
|
catalogXml.append("<SN>" +sn + "</SN>\r\n");
|
||||||
catalogXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
|
catalogXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("<SumNum>" + size + "</SumNum>\r\n");
|
catalogXml.append("<SumNum>" + size + "</SumNum>\r\n");
|
||||||
catalogXml.append("<DeviceList Num=\"1\">\r\n");
|
catalogXml.append("<DeviceList Num=\"" + channels.size() +"\">\r\n");
|
||||||
catalogXml.append("<Item>\r\n");
|
if (channels.size() > 0) {
|
||||||
if (channel != null) {
|
for (DeviceChannel channel : channels) {
|
||||||
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
|
catalogXml.append("<Item>\r\n");
|
||||||
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
|
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
|
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
|
||||||
catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
|
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
|
||||||
catalogXml.append("<Owner>" + channel.getOwner() + "</Owner>\r\n");
|
catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
|
||||||
catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
|
if (channel.getParentId() != null) {
|
||||||
catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
|
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
|
||||||
catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
|
}
|
||||||
if (channel.getParentId() != null) {
|
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
|
||||||
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
|
catalogXml.append("<Status>" + (channel.getStatus() == 0?"OFF":"ON") + "</Status>\r\n");
|
||||||
|
catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
|
||||||
|
if (channel.getChannelType() != 2) { // 业务分组/虚拟组织/行政区划 不设置以下字段
|
||||||
|
catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
|
||||||
|
catalogXml.append("<Owner>" + channel.getOwner() + "</Owner>\r\n");
|
||||||
|
catalogXml.append("<CivilCode>" + channel.getCivilCode() + "</CivilCode>\r\n");
|
||||||
|
catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
|
||||||
|
catalogXml.append("<Longitude>" + channel.getLongitude() + "</Longitude>\r\n");
|
||||||
|
catalogXml.append("<Latitude>" + channel.getLatitude() + "</Latitude>\r\n");
|
||||||
|
catalogXml.append("<IPAddress>" + channel.getIpAddress() + "</IPAddress>\r\n");
|
||||||
|
catalogXml.append("<Port>" + channel.getPort() + "</Port>\r\n");
|
||||||
|
catalogXml.append("<Info>\r\n");
|
||||||
|
catalogXml.append("<PTZType>" + channel.getPTZType() + "</PTZType>\r\n");
|
||||||
|
catalogXml.append("</Info>\r\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
catalogXml.append("</Item>\r\n");
|
||||||
}
|
}
|
||||||
catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
|
|
||||||
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
|
|
||||||
catalogXml.append("<Status>" + (channel.getStatus() == 0?"OFF":"ON") + "</Status>\r\n");
|
|
||||||
catalogXml.append("<Longitude>" + channel.getLongitude() + "</Longitude>\r\n");
|
|
||||||
catalogXml.append("<Latitude>" + channel.getLatitude() + "</Latitude>\r\n");
|
|
||||||
catalogXml.append("<IPAddress>" + channel.getIpAddress() + "</IPAddress>\r\n");
|
|
||||||
catalogXml.append("<Port>" + channel.getPort() + "</Port>\r\n");
|
|
||||||
catalogXml.append("<Info>\r\n");
|
|
||||||
catalogXml.append("<PTZType>" + channel.getPTZType() + "</PTZType>\r\n");
|
|
||||||
catalogXml.append("</Info>\r\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
catalogXml.append("</Item>\r\n");
|
|
||||||
catalogXml.append("</DeviceList>\r\n");
|
catalogXml.append("</DeviceList>\r\n");
|
||||||
catalogXml.append("</Response>\r\n");
|
catalogXml.append("</Response>\r\n");
|
||||||
return catalogXml.toString();
|
return catalogXml.toString();
|
||||||
@ -286,15 +295,20 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
DeviceChannel deviceChannel = channels.get(index);
|
List<DeviceChannel> deviceChannels;
|
||||||
String catalogXml = getCatalogXml(deviceChannel, sn, parentPlatform, channels.size());
|
if (index + parentPlatform.getCatalogGroup() < channels.size()) {
|
||||||
|
deviceChannels = channels.subList(index, index + parentPlatform.getCatalogGroup());
|
||||||
|
}else {
|
||||||
|
deviceChannels = channels.subList(index, channels.size());
|
||||||
|
}
|
||||||
|
String catalogXml = getCatalogXml(deviceChannels, sn, parentPlatform, channels.size());
|
||||||
// callid
|
// callid
|
||||||
CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
|
CallIdHeader callIdHeader = parentPlatform.getTransport().equals("TCP") ? tcpSipProvider.getNewCallId()
|
||||||
: udpSipProvider.getNewCallId();
|
: udpSipProvider.getNewCallId();
|
||||||
|
|
||||||
Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, callIdHeader);
|
Request request = headerProviderPlarformProvider.createMessageRequest(parentPlatform, catalogXml, fromTag, callIdHeader);
|
||||||
transmitRequest(parentPlatform, request, null, eventResult -> {
|
transmitRequest(parentPlatform, request, null, eventResult -> {
|
||||||
int indexNext = index + 1;
|
int indexNext = index + parentPlatform.getCatalogGroup();
|
||||||
sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext);
|
sendCatalogResponse(channels, parentPlatform, sn, fromTag, indexNext);
|
||||||
});
|
});
|
||||||
} catch (SipException | ParseException | InvalidArgumentException e) {
|
} catch (SipException | ParseException | InvalidArgumentException e) {
|
||||||
@ -432,13 +446,21 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
if (index >= deviceChannels.size()) {
|
if (index >= deviceChannels.size()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
List<DeviceChannel> channels;
|
||||||
|
if (index + parentPlatform.getCatalogGroup() < deviceChannels.size()) {
|
||||||
|
channels = deviceChannels.subList(index, index + parentPlatform.getCatalogGroup());
|
||||||
|
}else {
|
||||||
|
channels = deviceChannels.subList(index, deviceChannels.size());
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
Integer finalIndex = index;
|
Integer finalIndex = index;
|
||||||
String catalogXmlContent = getCatalogXmlContentForCatalogAddOrUpdate(parentPlatform, deviceChannels.get(index ), deviceChannels.size(), type, subscribeInfo);
|
String catalogXmlContent = getCatalogXmlContentForCatalogAddOrUpdate(parentPlatform, channels,
|
||||||
|
deviceChannels.size(), type, subscribeInfo);
|
||||||
sendNotify(parentPlatform, catalogXmlContent, subscribeInfo, eventResult -> {
|
sendNotify(parentPlatform, catalogXmlContent, subscribeInfo, eventResult -> {
|
||||||
logger.error("发送NOTIFY通知消息失败。错误:{} {}", eventResult.statusCode, eventResult.msg);
|
logger.error("发送NOTIFY通知消息失败。错误:{} {}", eventResult.statusCode, eventResult.msg);
|
||||||
}, (eventResult -> {
|
}, (eventResult -> {
|
||||||
sendNotifyForCatalogAddOrUpdate(type, parentPlatform, deviceChannels, subscribeInfo, finalIndex + 1);
|
sendNotifyForCatalogAddOrUpdate(type, parentPlatform, deviceChannels, subscribeInfo,
|
||||||
|
finalIndex + parentPlatform.getCatalogGroup());
|
||||||
}));
|
}));
|
||||||
} catch (SipException | ParseException e) {
|
} catch (SipException | ParseException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -500,11 +522,9 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, DeviceChannel channel, int sumNum, String type, SubscribeInfo subscribeInfo) {
|
private String getCatalogXmlContentForCatalogAddOrUpdate(ParentPlatform parentPlatform, List<DeviceChannel> channels, int sumNum, String type, SubscribeInfo subscribeInfo) {
|
||||||
StringBuffer catalogXml = new StringBuffer(600);
|
StringBuffer catalogXml = new StringBuffer(600);
|
||||||
if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
|
|
||||||
channel.setParentId(parentPlatform.getDeviceGBId());
|
|
||||||
}
|
|
||||||
String characterSet = parentPlatform.getCharacterSet();
|
String characterSet = parentPlatform.getCharacterSet();
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
|
||||||
catalogXml.append("<Notify>\r\n");
|
catalogXml.append("<Notify>\r\n");
|
||||||
@ -512,26 +532,35 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
||||||
catalogXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
|
catalogXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("<SumNum>1</SumNum>\r\n");
|
catalogXml.append("<SumNum>1</SumNum>\r\n");
|
||||||
catalogXml.append("<DeviceList Num=\"1\">\r\n");
|
catalogXml.append("<DeviceList Num=\"" + channels.size() + "\">\r\n");
|
||||||
catalogXml.append("<Item>\r\n");
|
if (channels.size() > 0) {
|
||||||
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
|
for (DeviceChannel channel : channels) {
|
||||||
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
|
if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
|
||||||
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
|
channel.setParentId(parentPlatform.getDeviceGBId());
|
||||||
catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
|
}
|
||||||
catalogXml.append("<Owner>0</Owner>\r\n");
|
catalogXml.append("<Item>\r\n");
|
||||||
catalogXml.append("<CivilCode>CivilCode</CivilCode>\r\n");
|
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
|
catalogXml.append("<Name>" + channel.getName() + "</Name>\r\n");
|
||||||
catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
|
catalogXml.append("<Manufacturer>" + channel.getManufacture() + "</Manufacturer>\r\n");
|
||||||
if (channel.getParentId() != null) {
|
catalogXml.append("<Parental>" + channel.getParental() + "</Parental>\r\n");
|
||||||
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
|
if (channel.getParentId() != null) {
|
||||||
|
catalogXml.append("<ParentID>" + channel.getParentId() + "</ParentID>\r\n");
|
||||||
|
}
|
||||||
|
catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
|
||||||
|
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
|
||||||
|
catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
|
||||||
|
if (channel.getChannelType() == 2) { // 业务分组/虚拟组织/行政区划 不设置以下属性
|
||||||
|
catalogXml.append("<Model>" + channel.getModel() + "</Model>\r\n");
|
||||||
|
catalogXml.append("<Owner>0</Owner>\r\n");
|
||||||
|
catalogXml.append("<CivilCode>CivilCode</CivilCode>\r\n");
|
||||||
|
catalogXml.append("<Address>" + channel.getAddress() + "</Address>\r\n");
|
||||||
|
}
|
||||||
|
if (!"presence".equals(subscribeInfo.getEventType())) {
|
||||||
|
catalogXml.append("<Event>" + type + "</Event>\r\n");
|
||||||
|
}
|
||||||
|
catalogXml.append("</Item>\r\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catalogXml.append("<Secrecy>" + channel.getSecrecy() + "</Secrecy>\r\n");
|
|
||||||
catalogXml.append("<RegisterWay>" + channel.getRegisterWay() + "</RegisterWay>\r\n");
|
|
||||||
catalogXml.append("<Status>" + (channel.getStatus() == 0 ? "OFF" : "ON") + "</Status>\r\n");
|
|
||||||
if (!"presence".equals(subscribeInfo.getEventType())) {
|
|
||||||
catalogXml.append("<Event>" + type + "</Event>\r\n");
|
|
||||||
}
|
|
||||||
catalogXml.append("</Item>\r\n");
|
|
||||||
catalogXml.append("</DeviceList>\r\n");
|
catalogXml.append("</DeviceList>\r\n");
|
||||||
catalogXml.append("</Notify>\r\n");
|
catalogXml.append("</Notify>\r\n");
|
||||||
return catalogXml.toString();
|
return catalogXml.toString();
|
||||||
@ -553,13 +582,20 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
if (index >= deviceChannels.size()) {
|
if (index >= deviceChannels.size()) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
List<DeviceChannel> channels;
|
||||||
|
if (index + parentPlatform.getCatalogGroup() < deviceChannels.size()) {
|
||||||
|
channels = deviceChannels.subList(index, index + parentPlatform.getCatalogGroup());
|
||||||
|
}else {
|
||||||
|
channels = deviceChannels.subList(index, deviceChannels.size());
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
Integer finalIndex = index;
|
Integer finalIndex = index;
|
||||||
String catalogXmlContent = getCatalogXmlContentForCatalogOther(parentPlatform, deviceChannels.get(index), type);
|
String catalogXmlContent = getCatalogXmlContentForCatalogOther(parentPlatform, channels, type);
|
||||||
sendNotify(parentPlatform, catalogXmlContent, subscribeInfo, eventResult -> {
|
sendNotify(parentPlatform, catalogXmlContent, subscribeInfo, eventResult -> {
|
||||||
logger.error("发送NOTIFY通知消息失败。错误:{} {}", eventResult.statusCode, eventResult.msg);
|
logger.error("发送NOTIFY通知消息失败。错误:{} {}", eventResult.statusCode, eventResult.msg);
|
||||||
}, (eventResult -> {
|
}, (eventResult -> {
|
||||||
sendNotifyForCatalogOther(type, parentPlatform, deviceChannels, subscribeInfo, finalIndex + 1);
|
sendNotifyForCatalogOther(type, parentPlatform, deviceChannels, subscribeInfo,
|
||||||
|
finalIndex + parentPlatform.getCatalogGroup());
|
||||||
}));
|
}));
|
||||||
} catch (SipException e) {
|
} catch (SipException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
@ -574,10 +610,8 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getCatalogXmlContentForCatalogOther(ParentPlatform parentPlatform, DeviceChannel channel, String type) {
|
private String getCatalogXmlContentForCatalogOther(ParentPlatform parentPlatform, List<DeviceChannel> channels, String type) {
|
||||||
if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
|
|
||||||
channel.setParentId(parentPlatform.getDeviceGBId());
|
|
||||||
}
|
|
||||||
String characterSet = parentPlatform.getCharacterSet();
|
String characterSet = parentPlatform.getCharacterSet();
|
||||||
StringBuffer catalogXml = new StringBuffer(600);
|
StringBuffer catalogXml = new StringBuffer(600);
|
||||||
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
|
catalogXml.append("<?xml version=\"1.0\" encoding=\"" + characterSet + "\"?>\r\n");
|
||||||
@ -586,11 +620,18 @@ public class SIPCommanderFroPlatform implements ISIPCommanderForPlatform {
|
|||||||
catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
catalogXml.append("<SN>" + (int) ((Math.random() * 9 + 1) * 100000) + "</SN>\r\n");
|
||||||
catalogXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
|
catalogXml.append("<DeviceID>" + parentPlatform.getDeviceGBId() + "</DeviceID>\r\n");
|
||||||
catalogXml.append("<SumNum>1</SumNum>\r\n");
|
catalogXml.append("<SumNum>1</SumNum>\r\n");
|
||||||
catalogXml.append("<DeviceList Num=\"1\">\r\n");
|
catalogXml.append("<DeviceList Num=\" " + channels.size() + " \">\r\n");
|
||||||
catalogXml.append("<Item>\r\n");
|
if (channels.size() > 0) {
|
||||||
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
|
for (DeviceChannel channel : channels) {
|
||||||
catalogXml.append("<Event>" + type + "</Event>\r\n");
|
if (parentPlatform.getServerGBId().equals(channel.getParentId())) {
|
||||||
catalogXml.append("</Item>\r\n");
|
channel.setParentId(parentPlatform.getDeviceGBId());
|
||||||
|
}
|
||||||
|
catalogXml.append("<Item>\r\n");
|
||||||
|
catalogXml.append("<DeviceID>" + channel.getChannelId() + "</DeviceID>\r\n");
|
||||||
|
catalogXml.append("<Event>" + type + "</Event>\r\n");
|
||||||
|
catalogXml.append("</Item>\r\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
catalogXml.append("</DeviceList>\r\n");
|
catalogXml.append("</DeviceList>\r\n");
|
||||||
catalogXml.append("</Notify>\r\n");
|
catalogXml.append("</Notify>\r\n");
|
||||||
return catalogXml.toString();
|
return catalogXml.toString();
|
||||||
|
@ -397,6 +397,10 @@ public class InviteRequestProcessor extends SIPRequestProcessorParent implements
|
|||||||
logger.info("[ app={}, stream={} ]通道离线,启用流后开始推流",gbStream.getApp(), gbStream.getStream());
|
logger.info("[ app={}, stream={} ]通道离线,启用流后开始推流",gbStream.getApp(), gbStream.getStream());
|
||||||
responseAck(evt, Response.BAD_REQUEST, "channel [" + gbStream.getGbId() + "] offline");
|
responseAck(evt, Response.BAD_REQUEST, "channel [" + gbStream.getGbId() + "] offline");
|
||||||
}else if ("push".equals(gbStream.getStreamType())) {
|
}else if ("push".equals(gbStream.getStreamType())) {
|
||||||
|
if (!platform.isStartOfflinePush()) {
|
||||||
|
responseAck(evt, Response.TEMPORARILY_UNAVAILABLE, "channel unavailable");
|
||||||
|
return;
|
||||||
|
}
|
||||||
// 发送redis消息以使设备上线
|
// 发送redis消息以使设备上线
|
||||||
logger.info("[ app={}, stream={} ]通道离线,发送redis信息控制设备开始推流",gbStream.getApp(), gbStream.getStream());
|
logger.info("[ app={}, stream={} ]通道离线,发送redis信息控制设备开始推流",gbStream.getApp(), gbStream.getStream());
|
||||||
MessageForPushChannel messageForPushChannel = new MessageForPushChannel();
|
MessageForPushChannel messageForPushChannel = new MessageForPushChannel();
|
||||||
|
@ -3,7 +3,6 @@ package com.genersoft.iot.vmp.gb28181.transmit.event.request.impl;
|
|||||||
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
import com.genersoft.iot.vmp.common.VideoManagerConstants;
|
||||||
import com.genersoft.iot.vmp.conf.SipConfig;
|
import com.genersoft.iot.vmp.conf.SipConfig;
|
||||||
import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
|
import com.genersoft.iot.vmp.gb28181.auth.DigestServerAuthenticationHelper;
|
||||||
import com.genersoft.iot.vmp.gb28181.auth.RegisterLogicHandler;
|
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
import com.genersoft.iot.vmp.gb28181.bean.Device;
|
||||||
import com.genersoft.iot.vmp.gb28181.bean.WvpSipDate;
|
import com.genersoft.iot.vmp.gb28181.bean.WvpSipDate;
|
||||||
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
|
import com.genersoft.iot.vmp.gb28181.event.EventPublisher;
|
||||||
@ -42,166 +41,157 @@ import java.util.Locale;
|
|||||||
@Component
|
@Component
|
||||||
public class RegisterRequestProcessor extends SIPRequestProcessorParent implements InitializingBean, ISIPRequestProcessor {
|
public class RegisterRequestProcessor extends SIPRequestProcessorParent implements InitializingBean, ISIPRequestProcessor {
|
||||||
|
|
||||||
private Logger logger = LoggerFactory.getLogger(RegisterRequestProcessor.class);
|
private final Logger logger = LoggerFactory.getLogger(RegisterRequestProcessor.class);
|
||||||
|
|
||||||
public String method = "REGISTER";
|
public String method = "REGISTER";
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private SipConfig sipConfig;
|
private SipConfig sipConfig;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private RegisterLogicHandler handler;
|
private IRedisCatchStorage redisCatchStorage;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IRedisCatchStorage redisCatchStorage;
|
private IVideoManagerStorage storager;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IVideoManagerStorage storager;
|
private EventPublisher publisher;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private EventPublisher publisher;
|
private SIPProcessorObserver sipProcessorObserver;
|
||||||
|
|
||||||
@Autowired
|
@Override
|
||||||
private SIPProcessorObserver sipProcessorObserver;
|
public void afterPropertiesSet() throws Exception {
|
||||||
|
// 添加消息处理的订阅
|
||||||
|
sipProcessorObserver.addRequestProcessor(method, this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
public void afterPropertiesSet() throws Exception {
|
* 收到注册请求 处理
|
||||||
// 添加消息处理的订阅
|
*
|
||||||
sipProcessorObserver.addRequestProcessor(method, this);
|
* @param evt
|
||||||
}
|
*/
|
||||||
|
@Override
|
||||||
|
public void process(RequestEvent evt) {
|
||||||
|
try {
|
||||||
|
RequestEventExt evtExt = (RequestEventExt) evt;
|
||||||
|
String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort();
|
||||||
|
logger.info("[{}] 收到注册请求,开始处理", requestAddress);
|
||||||
|
Request request = evt.getRequest();
|
||||||
|
ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME);
|
||||||
|
Response response = null;
|
||||||
|
boolean passwordCorrect = false;
|
||||||
|
// 注册标志 0:未携带授权头或者密码错误 1:注册成功 2:注销成功
|
||||||
|
int registerFlag = 0;
|
||||||
|
FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME);
|
||||||
|
AddressImpl address = (AddressImpl) fromHeader.getAddress();
|
||||||
|
SipUri uri = (SipUri) address.getURI();
|
||||||
|
String deviceId = uri.getUser();
|
||||||
|
|
||||||
/**
|
AuthorizationHeader authHead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME);
|
||||||
* 收到注册请求 处理
|
if (authHead == null) {
|
||||||
* @param evt
|
logger.info("[{}] 未携带授权头 回复401", requestAddress);
|
||||||
*/
|
response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
|
||||||
@Override
|
new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain());
|
||||||
public void process(RequestEvent evt) {
|
sendResponse(evt, response);
|
||||||
try {
|
return;
|
||||||
RequestEventExt evtExt = (RequestEventExt)evt;
|
}
|
||||||
String requestAddress = evtExt.getRemoteIpAddress() + ":" + evtExt.getRemotePort();
|
|
||||||
logger.info("[{}] 收到注册请求,开始处理", requestAddress);
|
|
||||||
Request request = evt.getRequest();
|
|
||||||
ExpiresHeader expiresHeader = (ExpiresHeader) request.getHeader(Expires.NAME);
|
|
||||||
Response response = null;
|
|
||||||
boolean passwordCorrect = false;
|
|
||||||
// 注册标志 0:未携带授权头或者密码错误 1:注册成功 2:注销成功
|
|
||||||
int registerFlag = 0;
|
|
||||||
FromHeader fromHeader = (FromHeader) request.getHeader(FromHeader.NAME);
|
|
||||||
AddressImpl address = (AddressImpl) fromHeader.getAddress();
|
|
||||||
SipUri uri = (SipUri) address.getURI();
|
|
||||||
String deviceId = uri.getUser();
|
|
||||||
Device deviceInRedis = redisCatchStorage.getDevice(deviceId);
|
|
||||||
Device device = storager.queryVideoDevice(deviceId);
|
|
||||||
if (deviceInRedis != null && device == null) {
|
|
||||||
// redis 存在脏数据
|
|
||||||
redisCatchStorage.clearCatchByDeviceId(deviceId);
|
|
||||||
}
|
|
||||||
AuthorizationHeader authorhead = (AuthorizationHeader) request.getHeader(AuthorizationHeader.NAME);
|
|
||||||
// 校验密码是否正确
|
|
||||||
if (authorhead != null) {
|
|
||||||
passwordCorrect = new DigestServerAuthenticationHelper().doAuthenticatePlainTextPassword(request,
|
|
||||||
sipConfig.getPassword());
|
|
||||||
}
|
|
||||||
if (StringUtils.isEmpty(sipConfig.getPassword())){
|
|
||||||
passwordCorrect = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// 未携带授权头或者密码错误 回复401
|
// 校验密码是否正确
|
||||||
if (authorhead == null ) {
|
passwordCorrect = StringUtils.isEmpty(sipConfig.getPassword()) ||
|
||||||
|
new DigestServerAuthenticationHelper().doAuthenticatePlainTextPassword(request, sipConfig.getPassword());
|
||||||
|
// 未携带授权头或者密码错误 回复401
|
||||||
|
|
||||||
logger.info("[{}] 未携带授权头 回复401", requestAddress);
|
if (!passwordCorrect) {
|
||||||
response = getMessageFactory().createResponse(Response.UNAUTHORIZED, request);
|
// 注册失败
|
||||||
new DigestServerAuthenticationHelper().generateChallenge(getHeaderFactory(), response, sipConfig.getDomain());
|
response = getMessageFactory().createResponse(Response.FORBIDDEN, request);
|
||||||
}else {
|
response.setReasonPhrase("wrong password");
|
||||||
if (!passwordCorrect){
|
logger.info("[{}] 密码/SIP服务器ID错误, 回复403", requestAddress);
|
||||||
// 注册失败
|
sendResponse(evt, response);
|
||||||
response = getMessageFactory().createResponse(Response.FORBIDDEN, request);
|
return;
|
||||||
response.setReasonPhrase("wrong password");
|
}
|
||||||
logger.info("[{}] 密码/SIP服务器ID错误, 回复403", requestAddress);
|
|
||||||
}else {
|
|
||||||
// 携带授权头并且密码正确
|
|
||||||
response = getMessageFactory().createResponse(Response.OK, request);
|
|
||||||
// 添加date头
|
|
||||||
SIPDateHeader dateHeader = new SIPDateHeader();
|
|
||||||
// 使用自己修改的
|
|
||||||
WvpSipDate wvpSipDate = new WvpSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis());
|
|
||||||
dateHeader.setDate(wvpSipDate);
|
|
||||||
response.addHeader(dateHeader);
|
|
||||||
|
|
||||||
|
Device deviceInRedis = redisCatchStorage.getDevice(deviceId);
|
||||||
|
Device device = storager.queryVideoDevice(deviceId);
|
||||||
|
if (deviceInRedis != null && device == null) {
|
||||||
|
// redis 存在脏数据
|
||||||
|
redisCatchStorage.clearCatchByDeviceId(deviceId);
|
||||||
|
}
|
||||||
|
// 携带授权头并且密码正确
|
||||||
|
response = getMessageFactory().createResponse(Response.OK, request);
|
||||||
|
// 添加date头
|
||||||
|
SIPDateHeader dateHeader = new SIPDateHeader();
|
||||||
|
// 使用自己修改的
|
||||||
|
WvpSipDate wvpSipDate = new WvpSipDate(Calendar.getInstance(Locale.ENGLISH).getTimeInMillis());
|
||||||
|
dateHeader.setDate(wvpSipDate);
|
||||||
|
response.addHeader(dateHeader);
|
||||||
|
|
||||||
if (expiresHeader == null) {
|
if (expiresHeader == null) {
|
||||||
response = getMessageFactory().createResponse(Response.BAD_REQUEST, request);
|
response = getMessageFactory().createResponse(Response.BAD_REQUEST, request);
|
||||||
ServerTransaction serverTransaction = getServerTransaction(evt);
|
ServerTransaction serverTransaction = getServerTransaction(evt);
|
||||||
serverTransaction.sendResponse(response);
|
serverTransaction.sendResponse(response);
|
||||||
if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
|
if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 添加Contact头
|
// 添加Contact头
|
||||||
response.addHeader(request.getHeader(ContactHeader.NAME));
|
response.addHeader(request.getHeader(ContactHeader.NAME));
|
||||||
// 添加Expires头
|
// 添加Expires头
|
||||||
response.addHeader(request.getExpires());
|
response.addHeader(request.getExpires());
|
||||||
|
|
||||||
// 获取到通信地址等信息
|
// 获取到通信地址等信息
|
||||||
ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
|
ViaHeader viaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
|
||||||
String received = viaHeader.getReceived();
|
String received = viaHeader.getReceived();
|
||||||
int rPort = viaHeader.getRPort();
|
int rPort = viaHeader.getRPort();
|
||||||
// 解析本地地址替代
|
// 解析本地地址替代
|
||||||
if (StringUtils.isEmpty(received) || rPort == -1) {
|
if (StringUtils.isEmpty(received) || rPort == -1) {
|
||||||
received = viaHeader.getHost();
|
received = viaHeader.getHost();
|
||||||
rPort = viaHeader.getPort();
|
rPort = viaHeader.getPort();
|
||||||
}
|
}
|
||||||
//
|
if (device == null) {
|
||||||
|
device = new Device();
|
||||||
|
device.setStreamMode("UDP");
|
||||||
|
device.setCharset("GB2312");
|
||||||
|
device.setDeviceId(deviceId);
|
||||||
|
device.setFirsRegister(true);
|
||||||
|
} else {
|
||||||
|
device.setFirsRegister(device.getOnline() == 0);
|
||||||
|
}
|
||||||
|
device.setIp(received);
|
||||||
|
device.setPort(rPort);
|
||||||
|
device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
|
||||||
|
if (expiresHeader.getExpires() == 0) {
|
||||||
|
// 注销成功
|
||||||
|
registerFlag = 2;
|
||||||
|
} else {
|
||||||
|
// 注册成功
|
||||||
|
device.setExpires(expiresHeader.getExpires());
|
||||||
|
registerFlag = 1;
|
||||||
|
// 判断TCP还是UDP
|
||||||
|
ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
|
||||||
|
String transport = reqViaHeader.getTransport();
|
||||||
|
device.setTransport("TCP".equals(transport) ? "TCP" : "UDP");
|
||||||
|
}
|
||||||
|
|
||||||
if (device == null) {
|
sendResponse(evt, response);
|
||||||
device = new Device();
|
// 注册成功
|
||||||
device.setStreamMode("UDP");
|
// 保存到redis
|
||||||
device.setCharset("GB2312");
|
if (registerFlag == 1) {
|
||||||
device.setDeviceId(deviceId);
|
logger.info("[{}] 注册成功! deviceId:" + deviceId, requestAddress);
|
||||||
device.setFirsRegister(true);
|
publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_REGISTER, expiresHeader.getExpires());
|
||||||
}else {
|
} else if (registerFlag == 2) {
|
||||||
if (device.getOnline() == 0) {
|
logger.info("[{}] 注销成功! deviceId:" + deviceId, requestAddress);
|
||||||
device.setFirsRegister(true);
|
publisher.outlineEventPublish(deviceId, VideoManagerConstants.EVENT_OUTLINE_UNREGISTER);
|
||||||
}
|
}
|
||||||
}
|
} catch (SipException | InvalidArgumentException | NoSuchAlgorithmException | ParseException e) {
|
||||||
device.setIp(received);
|
e.printStackTrace();
|
||||||
device.setPort(rPort);
|
}
|
||||||
device.setHostAddress(received.concat(":").concat(String.valueOf(rPort)));
|
|
||||||
// 注销成功
|
|
||||||
if (expiresHeader.getExpires() == 0) {
|
|
||||||
registerFlag = 2;
|
|
||||||
}
|
|
||||||
// 注册成功
|
|
||||||
else {
|
|
||||||
device.setExpires(expiresHeader.getExpires());
|
|
||||||
registerFlag = 1;
|
|
||||||
// 判断TCP还是UDP
|
|
||||||
boolean isTcp = false;
|
|
||||||
ViaHeader reqViaHeader = (ViaHeader) request.getHeader(ViaHeader.NAME);
|
|
||||||
String transport = reqViaHeader.getTransport();
|
|
||||||
if (transport.equals("TCP")) {
|
|
||||||
isTcp = true;
|
|
||||||
}
|
|
||||||
device.setTransport(isTcp ? "TCP" : "UDP");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ServerTransaction serverTransaction = getServerTransaction(evt);
|
}
|
||||||
serverTransaction.sendResponse(response);
|
|
||||||
if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
|
private void sendResponse(RequestEvent evt, Response response) throws InvalidArgumentException, SipException {
|
||||||
// 注册成功
|
ServerTransaction serverTransaction = getServerTransaction(evt);
|
||||||
// 保存到redis
|
serverTransaction.sendResponse(response);
|
||||||
if (registerFlag == 1 ) {
|
if (serverTransaction.getDialog() != null) serverTransaction.getDialog().delete();
|
||||||
logger.info("[{}] 注册成功! deviceId:" + device.getDeviceId(), requestAddress);
|
}
|
||||||
publisher.onlineEventPublish(device, VideoManagerConstants.EVENT_ONLINE_REGISTER, expiresHeader.getExpires());
|
|
||||||
} else if (registerFlag == 2) {
|
|
||||||
logger.info("[{}] 注销成功! deviceId:" + device.getDeviceId(), requestAddress);
|
|
||||||
publisher.outlineEventPublish(device.getDeviceId(), VideoManagerConstants.EVENT_OUTLINE_UNREGISTER);
|
|
||||||
}
|
|
||||||
} catch (SipException | InvalidArgumentException | NoSuchAlgorithmException | ParseException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ public class CatalogNotifyMessageHandler extends SIPRequestProcessorParent imple
|
|||||||
deviceChannel.setParental(1);
|
deviceChannel.setParental(1);
|
||||||
deviceChannel.setParentId(catalog.getParentId());
|
deviceChannel.setParentId(catalog.getParentId());
|
||||||
deviceChannel.setRegisterWay(1);
|
deviceChannel.setRegisterWay(1);
|
||||||
deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0,6));
|
deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
|
||||||
deviceChannel.setModel("live");
|
deviceChannel.setModel("live");
|
||||||
deviceChannel.setOwner("wvp-pro");
|
deviceChannel.setOwner("wvp-pro");
|
||||||
deviceChannel.setSecrecy("0");
|
deviceChannel.setSecrecy("0");
|
||||||
@ -116,7 +116,7 @@ public class CatalogNotifyMessageHandler extends SIPRequestProcessorParent imple
|
|||||||
deviceChannel.setStatus(1);
|
deviceChannel.setStatus(1);
|
||||||
deviceChannel.setParentId(gbStream.getCatalogId());
|
deviceChannel.setParentId(gbStream.getCatalogId());
|
||||||
deviceChannel.setRegisterWay(1);
|
deviceChannel.setRegisterWay(1);
|
||||||
deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0,6));
|
deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
|
||||||
deviceChannel.setModel("live");
|
deviceChannel.setModel("live");
|
||||||
deviceChannel.setOwner("wvp-pro");
|
deviceChannel.setOwner("wvp-pro");
|
||||||
deviceChannel.setParental(0);
|
deviceChannel.setParental(0);
|
||||||
|
@ -83,20 +83,17 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem
|
|||||||
catalog.setParentId(parentPlatform.getDeviceGBId());
|
catalog.setParentId(parentPlatform.getDeviceGBId());
|
||||||
}
|
}
|
||||||
DeviceChannel deviceChannel = new DeviceChannel();
|
DeviceChannel deviceChannel = new DeviceChannel();
|
||||||
|
// 通道的类型,0->国标通道 1->直播流通道 2->业务分组/虚拟组织/行政区划
|
||||||
|
deviceChannel.setChannelType(2);
|
||||||
deviceChannel.setChannelId(catalog.getId());
|
deviceChannel.setChannelId(catalog.getId());
|
||||||
deviceChannel.setName(catalog.getName());
|
deviceChannel.setName(catalog.getName());
|
||||||
deviceChannel.setLongitude(0.0);
|
|
||||||
deviceChannel.setLatitude(0.0);
|
|
||||||
deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
|
deviceChannel.setDeviceId(parentPlatform.getDeviceGBId());
|
||||||
deviceChannel.setManufacture("wvp-pro");
|
deviceChannel.setManufacture("wvp-pro");
|
||||||
deviceChannel.setStatus(1);
|
deviceChannel.setStatus(1);
|
||||||
deviceChannel.setParental(1);
|
deviceChannel.setParental(1);
|
||||||
deviceChannel.setParentId(catalog.getParentId());
|
deviceChannel.setParentId(catalog.getParentId());
|
||||||
deviceChannel.setRegisterWay(1);
|
deviceChannel.setRegisterWay(1);
|
||||||
deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0,6));
|
deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
|
||||||
deviceChannel.setModel("live");
|
|
||||||
deviceChannel.setOwner("wvp-pro");
|
|
||||||
deviceChannel.setSecrecy("0");
|
|
||||||
allChannels.add(deviceChannel);
|
allChannels.add(deviceChannel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -107,6 +104,8 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem
|
|||||||
channel.setCatalogId(parentPlatform.getDeviceGBId());
|
channel.setCatalogId(parentPlatform.getDeviceGBId());
|
||||||
}
|
}
|
||||||
DeviceChannel deviceChannel = storage.queryChannel(channel.getDeviceId(), channel.getChannelId());
|
DeviceChannel deviceChannel = storage.queryChannel(channel.getDeviceId(), channel.getChannelId());
|
||||||
|
// 通道的类型,0->国标通道 1->直播流通道 2->业务分组/虚拟组织/行政区划
|
||||||
|
deviceChannel.setChannelType(0);
|
||||||
deviceChannel.setParental(0);
|
deviceChannel.setParental(0);
|
||||||
deviceChannel.setParentId(channel.getCatalogId());
|
deviceChannel.setParentId(channel.getCatalogId());
|
||||||
deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0, 6));
|
deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0, 6));
|
||||||
@ -120,6 +119,8 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem
|
|||||||
gbStream.setCatalogId(null);
|
gbStream.setCatalogId(null);
|
||||||
}
|
}
|
||||||
DeviceChannel deviceChannel = new DeviceChannel();
|
DeviceChannel deviceChannel = new DeviceChannel();
|
||||||
|
// 通道的类型,0->国标通道 1->直播流通道 2->业务分组/虚拟组织/行政区划
|
||||||
|
deviceChannel.setChannelType(1);
|
||||||
deviceChannel.setChannelId(gbStream.getGbId());
|
deviceChannel.setChannelId(gbStream.getGbId());
|
||||||
deviceChannel.setName(gbStream.getName());
|
deviceChannel.setName(gbStream.getName());
|
||||||
deviceChannel.setLongitude(gbStream.getLongitude());
|
deviceChannel.setLongitude(gbStream.getLongitude());
|
||||||
@ -130,7 +131,7 @@ public class CatalogQueryMessageHandler extends SIPRequestProcessorParent implem
|
|||||||
deviceChannel.setStatus(1);
|
deviceChannel.setStatus(1);
|
||||||
deviceChannel.setParentId(gbStream.getCatalogId());
|
deviceChannel.setParentId(gbStream.getCatalogId());
|
||||||
deviceChannel.setRegisterWay(1);
|
deviceChannel.setRegisterWay(1);
|
||||||
deviceChannel.setCivilCode(parentPlatform.getDeviceGBId().substring(0,6));
|
deviceChannel.setCivilCode(parentPlatform.getAdministrativeDivision());
|
||||||
deviceChannel.setModel("live");
|
deviceChannel.setModel("live");
|
||||||
deviceChannel.setOwner("wvp-pro");
|
deviceChannel.setOwner("wvp-pro");
|
||||||
deviceChannel.setParental(0);
|
deviceChannel.setParental(0);
|
||||||
|
@ -87,23 +87,17 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
|
|||||||
rootElement = getRootElement(evt, device.getCharset());
|
rootElement = getRootElement(evt, device.getCharset());
|
||||||
Element deviceListElement = rootElement.element("DeviceList");
|
Element deviceListElement = rootElement.element("DeviceList");
|
||||||
Element sumNumElement = rootElement.element("SumNum");
|
Element sumNumElement = rootElement.element("SumNum");
|
||||||
if (sumNumElement == null || deviceListElement == null) {
|
Element snElement = rootElement.element("SN");
|
||||||
|
if (snElement == null || sumNumElement == null || deviceListElement == null) {
|
||||||
responseAck(evt, Response.BAD_REQUEST, "xml error");
|
responseAck(evt, Response.BAD_REQUEST, "xml error");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int sumNum = Integer.parseInt(sumNumElement.getText());
|
int sumNum = Integer.parseInt(sumNumElement.getText());
|
||||||
|
|
||||||
if (sumNum == 0) {
|
if (sumNum == 0) {
|
||||||
// 数据已经完整接收
|
// 数据已经完整接收
|
||||||
storager.cleanChannelsForDevice(device.getDeviceId());
|
storager.cleanChannelsForDevice(device.getDeviceId());
|
||||||
RequestMessage msg = new RequestMessage();
|
catalogDataCatch.setChannelSyncEnd(device.getDeviceId(), null);
|
||||||
msg.setKey(key);
|
|
||||||
WVPResult<Object> result = new WVPResult<>();
|
|
||||||
result.setCode(0);
|
|
||||||
result.setData(device);
|
|
||||||
msg.setData(result);
|
|
||||||
result.setMsg("更新成功,共0条");
|
|
||||||
deferredResultHolder.invokeAllResult(msg);
|
|
||||||
catalogDataCatch.del(key);
|
|
||||||
}else {
|
}else {
|
||||||
Iterator<Element> deviceListIterator = deviceListElement.elementIterator();
|
Iterator<Element> deviceListIterator = deviceListElement.elementIterator();
|
||||||
if (deviceListIterator != null) {
|
if (deviceListIterator != null) {
|
||||||
@ -124,24 +118,18 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
|
|||||||
|
|
||||||
channelList.add(deviceChannel);
|
channelList.add(deviceChannel);
|
||||||
}
|
}
|
||||||
logger.info("收到来自设备【{}】的通道: {}个,{}/{}", device.getDeviceId(), channelList.size(), catalogDataCatch.get(key) == null ? 0 :catalogDataCatch.get(key).size(), sumNum);
|
int sn = Integer.parseInt(snElement.getText());
|
||||||
catalogDataCatch.put(key, sumNum, device, channelList);
|
catalogDataCatch.put(device.getDeviceId(), sn, sumNum, device, channelList);
|
||||||
if (catalogDataCatch.get(key).size() == sumNum) {
|
logger.info("收到来自设备【{}】的通道: {}个,{}/{}", device.getDeviceId(), channelList.size(), catalogDataCatch.get(device.getDeviceId()) == null ? 0 :catalogDataCatch.get(device.getDeviceId()).size(), sumNum);
|
||||||
|
if (catalogDataCatch.get(device.getDeviceId()).size() == sumNum) {
|
||||||
// 数据已经完整接收
|
// 数据已经完整接收
|
||||||
boolean resetChannelsResult = storager.resetChannels(device.getDeviceId(), catalogDataCatch.get(key));
|
boolean resetChannelsResult = storager.resetChannels(device.getDeviceId(), catalogDataCatch.get(device.getDeviceId()));
|
||||||
RequestMessage msg = new RequestMessage();
|
if (!resetChannelsResult) {
|
||||||
msg.setKey(key);
|
String errorMsg = "接收成功,写入失败,共" + sumNum + "条,已接收" + catalogDataCatch.get(device.getDeviceId()).size() + "条";
|
||||||
WVPResult<Object> result = new WVPResult<>();
|
catalogDataCatch.setChannelSyncEnd(device.getDeviceId(), errorMsg);
|
||||||
result.setCode(0);
|
|
||||||
result.setData(device);
|
|
||||||
if (resetChannelsResult || sumNum ==0) {
|
|
||||||
result.setMsg("更新成功,共" + sumNum + "条,已更新" + catalogDataCatch.get(key).size() + "条");
|
|
||||||
}else {
|
}else {
|
||||||
result.setMsg("接收成功,写入失败,共" + sumNum + "条,已接收" + catalogDataCatch.get(key).size() + "条");
|
catalogDataCatch.setChannelSyncEnd(device.getDeviceId(), null);
|
||||||
}
|
}
|
||||||
msg.setData(result);
|
|
||||||
deferredResultHolder.invokeAllResult(msg);
|
|
||||||
catalogDataCatch.del(key);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 回复200 OK
|
// 回复200 OK
|
||||||
@ -229,21 +217,26 @@ public class CatalogResponseMessageHandler extends SIPRequestProcessorParent imp
|
|||||||
}
|
}
|
||||||
|
|
||||||
public SyncStatus getChannelSyncProgress(String deviceId) {
|
public SyncStatus getChannelSyncProgress(String deviceId) {
|
||||||
String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + deviceId;
|
if (catalogDataCatch.get(deviceId) == null) {
|
||||||
if (catalogDataCatch.get(key) == null) {
|
|
||||||
return null;
|
return null;
|
||||||
}else {
|
}else {
|
||||||
return catalogDataCatch.getSyncStatus(key);
|
return catalogDataCatch.getSyncStatus(deviceId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChannelSyncReady(String deviceId) {
|
public boolean isSyncRunning(String deviceId) {
|
||||||
String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + deviceId;
|
if (catalogDataCatch.get(deviceId) == null) {
|
||||||
catalogDataCatch.addReady(key);
|
return false;
|
||||||
|
}else {
|
||||||
|
return catalogDataCatch.isSyncRunning(deviceId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setChannelSyncReady(Device device, int sn) {
|
||||||
|
catalogDataCatch.addReady(device, sn);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChannelSyncEnd(String deviceId, String errorMsg) {
|
public void setChannelSyncEnd(String deviceId, String errorMsg) {
|
||||||
String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + deviceId;
|
catalogDataCatch.setChannelSyncEnd(deviceId, errorMsg);
|
||||||
catalogDataCatch.setChannelSyncEnd(key, errorMsg);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -81,7 +81,7 @@ public class ZLMRTPServerFactory {
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int createRTPServer(MediaServerItem mediaServerItem, String streamId) {
|
public int createRTPServer(MediaServerItem mediaServerItem, String streamId, int ssrc) {
|
||||||
int result = -1;
|
int result = -1;
|
||||||
// 查询此rtp server 是否已经存在
|
// 查询此rtp server 是否已经存在
|
||||||
JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaServerItem, streamId);
|
JSONObject rtpInfo = zlmresTfulUtils.getRtpInfo(mediaServerItem, streamId);
|
||||||
@ -94,6 +94,7 @@ public class ZLMRTPServerFactory {
|
|||||||
param.put("enable_tcp", 1);
|
param.put("enable_tcp", 1);
|
||||||
param.put("stream_id", streamId);
|
param.put("stream_id", streamId);
|
||||||
param.put("port", 0);
|
param.put("port", 0);
|
||||||
|
param.put("ssrc", ssrc);
|
||||||
JSONObject openRtpServerResultJson = zlmresTfulUtils.openRtpServer(mediaServerItem, param);
|
JSONObject openRtpServerResultJson = zlmresTfulUtils.openRtpServer(mediaServerItem, param);
|
||||||
|
|
||||||
if (openRtpServerResultJson != null) {
|
if (openRtpServerResultJson != null) {
|
||||||
|
@ -44,15 +44,15 @@ public interface IDeviceService {
|
|||||||
SyncStatus getChannelSyncStatus(String deviceId);
|
SyncStatus getChannelSyncStatus(String deviceId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置通道同步状态
|
* 查看是否仍在同步
|
||||||
* @param deviceId 设备ID
|
* @param deviceId 设备ID
|
||||||
|
* @return
|
||||||
*/
|
*/
|
||||||
void setChannelSyncReady(String deviceId);
|
Boolean isSyncRunning(String deviceId);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置同步结束
|
* 通道同步
|
||||||
* @param deviceId 设备ID
|
* @param device
|
||||||
* @param errorMsg 错误信息
|
|
||||||
*/
|
*/
|
||||||
void setChannelSyncEnd(String deviceId, String errorMsg);
|
void sync(Device device);
|
||||||
}
|
}
|
||||||
|
@ -44,9 +44,9 @@ public interface IMediaServerService {
|
|||||||
|
|
||||||
void updateVmServer(List<MediaServerItem> mediaServerItemList);
|
void updateVmServer(List<MediaServerItem> mediaServerItemList);
|
||||||
|
|
||||||
SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId);
|
SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck);
|
||||||
|
|
||||||
SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean isPlayback);
|
SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck, boolean isPlayback);
|
||||||
|
|
||||||
void closeRTPServer(String deviceId, String channelId, String ssrc);
|
void closeRTPServer(String deviceId, String channelId, String ssrc);
|
||||||
|
|
||||||
|
@ -41,10 +41,6 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
if (device == null || device.getSubscribeCycleForCatalog() < 0) {
|
if (device == null || device.getSubscribeCycleForCatalog() < 0) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
CatalogSubscribeTask task = (CatalogSubscribeTask)dynamicTask.get(device.getDeviceId() + "catalog");
|
|
||||||
if (task != null && task.getDialogState() != null && task.getDialogState().equals(DialogState.CONFIRMED)) { // 已存在不需要再次添加
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
logger.info("[添加目录订阅] 设备{}", device.getDeviceId());
|
logger.info("[添加目录订阅] 设备{}", device.getDeviceId());
|
||||||
// 添加目录订阅
|
// 添加目录订阅
|
||||||
CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander);
|
CatalogSubscribeTask catalogSubscribeTask = new CatalogSubscribeTask(device, sipCommander);
|
||||||
@ -71,10 +67,6 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
logger.info("[添加移动位置订阅] 设备{}", device.getDeviceId());
|
logger.info("[添加移动位置订阅] 设备{}", device.getDeviceId());
|
||||||
MobilePositionSubscribeTask task = (MobilePositionSubscribeTask)dynamicTask.get(device.getDeviceId() + "mobile_position");
|
|
||||||
if (task != null && task.getDialogState() != null && task.getDialogState().equals(DialogState.CONFIRMED)) { // 已存在不需要再次添加
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
// 添加目录订阅
|
// 添加目录订阅
|
||||||
MobilePositionSubscribeTask mobilePositionSubscribeTask = new MobilePositionSubscribeTask(device, sipCommander);
|
MobilePositionSubscribeTask mobilePositionSubscribeTask = new MobilePositionSubscribeTask(device, sipCommander);
|
||||||
// 提前开始刷新订阅
|
// 提前开始刷新订阅
|
||||||
@ -100,12 +92,21 @@ public class DeviceServiceImpl implements IDeviceService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setChannelSyncReady(String deviceId) {
|
public Boolean isSyncRunning(String deviceId) {
|
||||||
catalogResponseMessageHandler.setChannelSyncReady(deviceId);
|
return catalogResponseMessageHandler.isSyncRunning(deviceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setChannelSyncEnd(String deviceId, String errorMsg) {
|
public void sync(Device device) {
|
||||||
catalogResponseMessageHandler.setChannelSyncEnd(deviceId, errorMsg);
|
if (catalogResponseMessageHandler.isSyncRunning(device.getDeviceId())) {
|
||||||
|
logger.info("开启同步时发现同步已经存在");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int sn = (int)((Math.random()*9+1)*100000);
|
||||||
|
catalogResponseMessageHandler.setChannelSyncReady(device, sn);
|
||||||
|
sipCommander.catalogQuery(device, sn, event -> {
|
||||||
|
String errorMsg = String.format("同步通道失败,错误码: %s, %s", event.statusCode, event.msg);
|
||||||
|
catalogResponseMessageHandler.setChannelSyncEnd(device.getDeviceId(), errorMsg);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -117,12 +117,12 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId) {
|
public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck) {
|
||||||
return openRTPServer(mediaServerItem, streamId, false);
|
return openRTPServer(mediaServerItem, streamId, ssrcCheck,false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean isPlayback) {
|
public SSRCInfo openRTPServer(MediaServerItem mediaServerItem, String streamId, boolean ssrcCheck, boolean isPlayback) {
|
||||||
if (mediaServerItem == null || mediaServerItem.getId() == null) {
|
if (mediaServerItem == null || mediaServerItem.getId() == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -146,7 +146,7 @@ public class MediaServerServiceImpl implements IMediaServerService {
|
|||||||
}
|
}
|
||||||
int rtpServerPort = mediaServerItem.getRtpProxyPort();
|
int rtpServerPort = mediaServerItem.getRtpProxyPort();
|
||||||
if (mediaServerItem.isRtpEnable()) {
|
if (mediaServerItem.isRtpEnable()) {
|
||||||
rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId);
|
rtpServerPort = zlmrtpServerFactory.createRTPServer(mediaServerItem, streamId, ssrcCheck?Integer.parseInt(ssrc):0);
|
||||||
}
|
}
|
||||||
redisUtil.set(key, mediaServerItem);
|
redisUtil.set(key, mediaServerItem);
|
||||||
return new SSRCInfo(rtpServerPort, ssrc, streamId);
|
return new SSRCInfo(rtpServerPort, ssrc, streamId);
|
||||||
|
@ -188,7 +188,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
if (mediaServerItem.isRtpEnable()) {
|
if (mediaServerItem.isRtpEnable()) {
|
||||||
streamId = String.format("%s_%s", device.getDeviceId(), channelId);
|
streamId = String.format("%s_%s", device.getDeviceId(), channelId);
|
||||||
}
|
}
|
||||||
SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId);
|
SSRCInfo ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck());
|
||||||
play(mediaServerItem, ssrcInfo, device, channelId, (mediaServerItemInUse, response)->{
|
play(mediaServerItem, ssrcInfo, device, channelId, (mediaServerItemInUse, response)->{
|
||||||
if (hookEvent != null) {
|
if (hookEvent != null) {
|
||||||
hookEvent.response(mediaServerItem, response);
|
hookEvent.response(mediaServerItem, response);
|
||||||
@ -232,7 +232,7 @@ public class PlayServiceImpl implements IPlayService {
|
|||||||
streamId = String.format("%s_%s", device.getDeviceId(), channelId);
|
streamId = String.format("%s_%s", device.getDeviceId(), channelId);
|
||||||
}
|
}
|
||||||
if (ssrcInfo == null) {
|
if (ssrcInfo == null) {
|
||||||
ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId);
|
ssrcInfo = mediaServerService.openRTPServer(mediaServerItem, streamId, device.isSsrcCheck());
|
||||||
}
|
}
|
||||||
|
|
||||||
// 超时处理
|
// 超时处理
|
||||||
|
@ -420,9 +420,6 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
streamPushItemForPlatform.setPlatformId(platFormInfoArray[0]);
|
streamPushItemForPlatform.setPlatformId(platFormInfoArray[0]);
|
||||||
if (platFormInfoArray[0].equals("34020000002110000001")) {
|
|
||||||
System.out.println(111);
|
|
||||||
}
|
|
||||||
List<GbStream> gbStreamList = platformForEvent.get(platFormInfoArray[0]);
|
List<GbStream> gbStreamList = platformForEvent.get(platFormInfoArray[0]);
|
||||||
if (gbStreamList == null) {
|
if (gbStreamList == null) {
|
||||||
gbStreamList = new ArrayList<>();
|
gbStreamList = new ArrayList<>();
|
||||||
|
@ -37,6 +37,7 @@ public interface DeviceMapper {
|
|||||||
"subscribeCycleForMobilePosition," +
|
"subscribeCycleForMobilePosition," +
|
||||||
"mobilePositionSubmissionInterval," +
|
"mobilePositionSubmissionInterval," +
|
||||||
"subscribeCycleForAlarm," +
|
"subscribeCycleForAlarm," +
|
||||||
|
"ssrcCheck," +
|
||||||
"online" +
|
"online" +
|
||||||
") VALUES (" +
|
") VALUES (" +
|
||||||
"#{deviceId}," +
|
"#{deviceId}," +
|
||||||
@ -59,6 +60,7 @@ public interface DeviceMapper {
|
|||||||
"#{subscribeCycleForMobilePosition}," +
|
"#{subscribeCycleForMobilePosition}," +
|
||||||
"#{mobilePositionSubmissionInterval}," +
|
"#{mobilePositionSubmissionInterval}," +
|
||||||
"#{subscribeCycleForAlarm}," +
|
"#{subscribeCycleForAlarm}," +
|
||||||
|
"#{ssrcCheck}," +
|
||||||
"#{online}" +
|
"#{online}" +
|
||||||
")")
|
")")
|
||||||
int add(Device device);
|
int add(Device device);
|
||||||
@ -84,6 +86,7 @@ public interface DeviceMapper {
|
|||||||
"<if test=\"subscribeCycleForMobilePosition != null\">, subscribeCycleForMobilePosition=${subscribeCycleForMobilePosition}</if>" +
|
"<if test=\"subscribeCycleForMobilePosition != null\">, subscribeCycleForMobilePosition=${subscribeCycleForMobilePosition}</if>" +
|
||||||
"<if test=\"mobilePositionSubmissionInterval != null\">, mobilePositionSubmissionInterval=${mobilePositionSubmissionInterval}</if>" +
|
"<if test=\"mobilePositionSubmissionInterval != null\">, mobilePositionSubmissionInterval=${mobilePositionSubmissionInterval}</if>" +
|
||||||
"<if test=\"subscribeCycleForAlarm != null\">, subscribeCycleForAlarm=${subscribeCycleForAlarm}</if>" +
|
"<if test=\"subscribeCycleForAlarm != null\">, subscribeCycleForAlarm=${subscribeCycleForAlarm}</if>" +
|
||||||
|
"<if test=\"ssrcCheck != null\">, ssrcCheck=${ssrcCheck}</if>" +
|
||||||
"WHERE deviceId='${deviceId}'"+
|
"WHERE deviceId='${deviceId}'"+
|
||||||
" </script>"})
|
" </script>"})
|
||||||
int update(Device device);
|
int update(Device device);
|
||||||
|
@ -16,10 +16,10 @@ public interface ParentPlatformMapper {
|
|||||||
|
|
||||||
@Insert("INSERT INTO parent_platform (enable, name, serverGBId, serverGBDomain, serverIP, serverPort, deviceGBId, deviceIp, " +
|
@Insert("INSERT INTO parent_platform (enable, name, serverGBId, serverGBDomain, serverIP, serverPort, deviceGBId, deviceIp, " +
|
||||||
" devicePort, username, password, expires, keepTimeout, transport, characterSet, ptz, rtcp, " +
|
" devicePort, username, password, expires, keepTimeout, transport, characterSet, ptz, rtcp, " +
|
||||||
" status, shareAllLiveStream, catalogId) " +
|
" status, shareAllLiveStream, startOfflinePush, catalogId, administrativeDivision, catalogGroup) " +
|
||||||
" VALUES (${enable}, '${name}', '${serverGBId}', '${serverGBDomain}', '${serverIP}', ${serverPort}, '${deviceGBId}', '${deviceIp}', " +
|
" VALUES (${enable}, '${name}', '${serverGBId}', '${serverGBDomain}', '${serverIP}', ${serverPort}, '${deviceGBId}', '${deviceIp}', " +
|
||||||
" '${devicePort}', '${username}', '${password}', '${expires}', '${keepTimeout}', '${transport}', '${characterSet}', ${ptz}, ${rtcp}, " +
|
" '${devicePort}', '${username}', '${password}', '${expires}', '${keepTimeout}', '${transport}', '${characterSet}', ${ptz}, ${rtcp}, " +
|
||||||
" ${status}, ${shareAllLiveStream}, #{catalogId})")
|
" ${status}, ${shareAllLiveStream}, ${startOfflinePush}, #{catalogId}, #{administrativeDivision}, #{catalogGroup})")
|
||||||
int addParentPlatform(ParentPlatform parentPlatform);
|
int addParentPlatform(ParentPlatform parentPlatform);
|
||||||
|
|
||||||
@Update("UPDATE parent_platform " +
|
@Update("UPDATE parent_platform " +
|
||||||
@ -42,6 +42,9 @@ public interface ParentPlatformMapper {
|
|||||||
"rtcp=#{rtcp}, " +
|
"rtcp=#{rtcp}, " +
|
||||||
"status=#{status}, " +
|
"status=#{status}, " +
|
||||||
"shareAllLiveStream=#{shareAllLiveStream}, " +
|
"shareAllLiveStream=#{shareAllLiveStream}, " +
|
||||||
|
"startOfflinePush=${startOfflinePush}, " +
|
||||||
|
"catalogGroup=#{catalogGroup}, " +
|
||||||
|
"administrativeDivision=#{administrativeDivision}, " +
|
||||||
"catalogId=#{catalogId} " +
|
"catalogId=#{catalogId} " +
|
||||||
"WHERE id=#{id}")
|
"WHERE id=#{id}")
|
||||||
int updateParentPlatform(ParentPlatform parentPlatform);
|
int updateParentPlatform(ParentPlatform parentPlatform);
|
||||||
|
@ -238,12 +238,15 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean resetChannels(String deviceId, List<DeviceChannel> deviceChannelList) {
|
public boolean resetChannels(String deviceId, List<DeviceChannel> deviceChannelList) {
|
||||||
|
if (deviceChannelList == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
|
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
|
||||||
// 数据去重
|
// 数据去重
|
||||||
List<DeviceChannel> channels = new ArrayList<>();
|
List<DeviceChannel> channels = new ArrayList<>();
|
||||||
StringBuilder stringBuilder = new StringBuilder();
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
Map<String, Integer> subContMap = new HashMap<>();
|
Map<String, Integer> subContMap = new HashMap<>();
|
||||||
if (deviceChannelList.size() > 1) {
|
if (deviceChannelList != null && deviceChannelList.size() > 1) {
|
||||||
// 数据去重
|
// 数据去重
|
||||||
Set<String> gbIdSet = new HashSet<>();
|
Set<String> gbIdSet = new HashSet<>();
|
||||||
for (DeviceChannel deviceChannel : deviceChannelList) {
|
for (DeviceChannel deviceChannel : deviceChannelList) {
|
||||||
@ -300,6 +303,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
|||||||
dataSourceTransactionManager.commit(transactionStatus); //手动提交
|
dataSourceTransactionManager.commit(transactionStatus); //手动提交
|
||||||
return true;
|
return true;
|
||||||
}catch (Exception e) {
|
}catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
dataSourceTransactionManager.rollback(transactionStatus);
|
dataSourceTransactionManager.rollback(transactionStatus);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -415,10 +419,9 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
|||||||
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
|
TransactionStatus transactionStatus = dataSourceTransactionManager.getTransaction(transactionDefinition);
|
||||||
boolean result = false;
|
boolean result = false;
|
||||||
try {
|
try {
|
||||||
if (platformChannelMapper.delChannelForDeviceId(deviceId) <0 // 删除与国标平台的关联
|
platformChannelMapper.delChannelForDeviceId(deviceId);
|
||||||
|| deviceChannelMapper.cleanChannelsByDeviceId(deviceId) < 0 // 删除他的通道
|
deviceChannelMapper.cleanChannelsByDeviceId(deviceId);
|
||||||
|| deviceMapper.del(deviceId) < 0 // 移除设备信息
|
if ( deviceMapper.del(deviceId) < 0 ) {
|
||||||
) {
|
|
||||||
//事务回滚
|
//事务回滚
|
||||||
dataSourceTransactionManager.rollback(transactionStatus);
|
dataSourceTransactionManager.rollback(transactionStatus);
|
||||||
}
|
}
|
||||||
@ -517,6 +520,12 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
|||||||
@Override
|
@Override
|
||||||
public boolean updateParentPlatform(ParentPlatform parentPlatform) {
|
public boolean updateParentPlatform(ParentPlatform parentPlatform) {
|
||||||
int result = 0;
|
int result = 0;
|
||||||
|
if (parentPlatform.getCatalogGroup() == 0) {
|
||||||
|
parentPlatform.setCatalogGroup(1);
|
||||||
|
}
|
||||||
|
if (parentPlatform.getAdministrativeDivision() == null) {
|
||||||
|
parentPlatform.setAdministrativeDivision(parentPlatform.getAdministrativeDivision());
|
||||||
|
}
|
||||||
ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); // .getDeviceGBId());
|
ParentPlatformCatch parentPlatformCatch = redisCatchStorage.queryPlatformCatchInfo(parentPlatform.getServerGBId()); // .getDeviceGBId());
|
||||||
if (parentPlatform.getId() == null ) {
|
if (parentPlatform.getId() == null ) {
|
||||||
if (parentPlatform.getCatalogId() == null) {
|
if (parentPlatform.getCatalogId() == null) {
|
||||||
@ -536,6 +545,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
|||||||
parentPlatformCatch.setId(parentPlatform.getServerGBId());
|
parentPlatformCatch.setId(parentPlatform.getServerGBId());
|
||||||
redisCatchStorage.delPlatformCatchInfo(parentPlatById.getServerGBId());
|
redisCatchStorage.delPlatformCatchInfo(parentPlatById.getServerGBId());
|
||||||
}
|
}
|
||||||
|
|
||||||
result = platformMapper.updateParentPlatform(parentPlatform);
|
result = platformMapper.updateParentPlatform(parentPlatform);
|
||||||
}
|
}
|
||||||
// 更新缓存
|
// 更新缓存
|
||||||
@ -1071,7 +1081,7 @@ public class VideoManagerStorageImpl implements IVideoManagerStorage {
|
|||||||
deviceChannel.setParentId(catalog.getParentId());
|
deviceChannel.setParentId(catalog.getParentId());
|
||||||
deviceChannel.setRegisterWay(1);
|
deviceChannel.setRegisterWay(1);
|
||||||
// 行政区划应该是Domain的前八位
|
// 行政区划应该是Domain的前八位
|
||||||
deviceChannel.setCivilCode(parentPlatByServerGBId.getDeviceGBId().substring(0,6));
|
deviceChannel.setCivilCode(parentPlatByServerGBId.getAdministrativeDivision());
|
||||||
deviceChannel.setModel("live");
|
deviceChannel.setModel("live");
|
||||||
deviceChannel.setOwner("wvp-pro");
|
deviceChannel.setOwner("wvp-pro");
|
||||||
deviceChannel.setSecrecy("0");
|
deviceChannel.setSecrecy("0");
|
||||||
|
@ -164,20 +164,17 @@ public class DeviceQuery {
|
|||||||
logger.debug("设备通道信息同步API调用,deviceId:" + deviceId);
|
logger.debug("设备通道信息同步API调用,deviceId:" + deviceId);
|
||||||
}
|
}
|
||||||
Device device = storager.queryVideoDevice(deviceId);
|
Device device = storager.queryVideoDevice(deviceId);
|
||||||
SyncStatus syncStatus = deviceService.getChannelSyncStatus(deviceId);
|
boolean status = deviceService.isSyncRunning(deviceId);
|
||||||
// 已存在则返回进度
|
// 已存在则返回进度
|
||||||
if (syncStatus != null && syncStatus.getErrorMsg() == null) {
|
if (status) {
|
||||||
WVPResult<SyncStatus> wvpResult = new WVPResult<>();
|
WVPResult<SyncStatus> wvpResult = new WVPResult<>();
|
||||||
wvpResult.setCode(0);
|
wvpResult.setCode(0);
|
||||||
wvpResult.setData(syncStatus);
|
SyncStatus channelSyncStatus = deviceService.getChannelSyncStatus(deviceId);
|
||||||
|
wvpResult.setData(channelSyncStatus);
|
||||||
return wvpResult;
|
return wvpResult;
|
||||||
}
|
}
|
||||||
SyncStatus syncStatusReady = new SyncStatus();
|
deviceService.sync(device);
|
||||||
deviceService.setChannelSyncReady(deviceId);
|
|
||||||
cmder.catalogQuery(device, event -> {
|
|
||||||
String errorMsg = String.format("同步通道失败,错误码: %s, %s", event.statusCode, event.msg);
|
|
||||||
deviceService.setChannelSyncEnd(deviceId, errorMsg);
|
|
||||||
});
|
|
||||||
WVPResult<SyncStatus> wvpResult = new WVPResult<>();
|
WVPResult<SyncStatus> wvpResult = new WVPResult<>();
|
||||||
wvpResult.setCode(0);
|
wvpResult.setCode(0);
|
||||||
wvpResult.setMsg("开始同步");
|
wvpResult.setMsg("开始同步");
|
||||||
|
@ -61,23 +61,36 @@ export default {
|
|||||||
if (!this.syncFlag) {
|
if (!this.syncFlag) {
|
||||||
this.syncFlag = true;
|
this.syncFlag = true;
|
||||||
}
|
}
|
||||||
if (res.data.data == null) {
|
|
||||||
this.syncStatus = "success"
|
if (res.data.data != null) {
|
||||||
this.percentage = 100;
|
if (res.data.data.total == 0) {
|
||||||
this.msg = '同步成功';
|
if (res.data.data.errorMsg !== null ){
|
||||||
}else if (res.data.data.total == 0){
|
this.msg = res.data.data.errorMsg;
|
||||||
this.msg = `等待同步中`;
|
this.syncStatus = "exception"
|
||||||
this.timmer = setTimeout(this.getProgress, 300)
|
}else {
|
||||||
}else if (res.data.data.errorMsg !== null ){
|
this.msg = `等待同步中`;
|
||||||
this.msg = res.data.data.errorMsg;
|
this.timmer = setTimeout(this.getProgress, 300)
|
||||||
this.syncStatus = "exception"
|
}
|
||||||
}else {
|
}else {
|
||||||
this.total = res.data.data.total;
|
if (res.data.data.total == res.data.data.current) {
|
||||||
this.current = res.data.data.current;
|
this.syncStatus = "success"
|
||||||
this.percentage = Math.floor(Number(res.data.data.current)/Number(res.data.data.total)* 10000)/100;
|
this.percentage = 100;
|
||||||
this.msg = `同步中...[${res.data.data.current}/${res.data.data.total}]`;
|
this.msg = '同步成功';
|
||||||
this.timmer = setTimeout(this.getProgress, 300)
|
}else {
|
||||||
|
if (res.data.data.errorMsg !== null ){
|
||||||
|
this.msg = res.data.data.errorMsg;
|
||||||
|
this.syncStatus = "exception"
|
||||||
|
}else {
|
||||||
|
this.total = res.data.data.total;
|
||||||
|
this.current = res.data.data.current;
|
||||||
|
this.percentage = Math.floor(Number(res.data.data.current)/Number(res.data.data.total)* 10000)/100;
|
||||||
|
this.msg = `同步中...[${res.data.data.current}/${res.data.data.total}]`;
|
||||||
|
this.timmer = setTimeout(this.getProgress, 300)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}else {
|
}else {
|
||||||
if (this.syncFlag) {
|
if (this.syncFlag) {
|
||||||
this.syncStatus = "success"
|
this.syncStatus = "success"
|
||||||
|
@ -13,11 +13,24 @@
|
|||||||
<div id="shared" style="margin-top: 1rem;margin-right: 100px;">
|
<div id="shared" style="margin-top: 1rem;margin-right: 100px;">
|
||||||
<el-form ref="form" :rules="rules" :model="form" label-width="140px" >
|
<el-form ref="form" :rules="rules" :model="form" label-width="140px" >
|
||||||
<el-form-item label="节点编号" prop="id" >
|
<el-form-item label="节点编号" prop="id" >
|
||||||
<el-input v-model="form.id" :disabled="isEdit"></el-input>
|
<el-tooltip class="item" effect="dark" content="" placement="top-start">
|
||||||
|
<div slot="content">
|
||||||
|
建议的类型:
|
||||||
|
<br/>
|
||||||
|
  行政区划(可选2位/4位/6位/8位/10位数字,例如:130432,表示河北省邯郸市广平县)
|
||||||
|
<br/>
|
||||||
|
  业务分组(第11、12、13位215,例如:34020000002150000001)
|
||||||
|
<br/>
|
||||||
|
  虚拟组织(第11、12、13位216,例如:34020000002160000001)
|
||||||
|
</div>
|
||||||
|
<el-input v-model="form.id" :disabled="isEdit"></el-input>
|
||||||
|
</el-tooltip>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="节点名称" prop="name">
|
<el-form-item label="节点名称" prop="name">
|
||||||
<el-input v-model="form.name" clearable></el-input>
|
<el-input v-model="form.name" clearable></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
||||||
|
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<div style="float: right;">
|
<div style="float: right;">
|
||||||
<el-button type="primary" @click="onSubmit" >确认</el-button>
|
<el-button type="primary" @click="onSubmit" >确认</el-button>
|
||||||
|
@ -45,6 +45,9 @@
|
|||||||
<el-form-item v-if="form.subscribeCycleForMobilePosition > 0" label="移动位置报送间隔" prop="subscribeCycleForCatalog" >
|
<el-form-item v-if="form.subscribeCycleForMobilePosition > 0" label="移动位置报送间隔" prop="subscribeCycleForCatalog" >
|
||||||
<el-input v-model="form.mobilePositionSubmissionInterval" clearable ></el-input>
|
<el-input v-model="form.mobilePositionSubmissionInterval" clearable ></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="其他选项">
|
||||||
|
<el-checkbox label="SSRC校验" v-model="form.ssrcCheck" style="float: left"></el-checkbox>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<div style="float: right;">
|
<div style="float: right;">
|
||||||
<el-button type="primary" @click="onSubmit" >确认</el-button>
|
<el-button type="primary" @click="onSubmit" >确认</el-button>
|
||||||
|
@ -44,6 +44,9 @@
|
|||||||
<el-form-item label="SIP认证用户名" prop="username">
|
<el-form-item label="SIP认证用户名" prop="username">
|
||||||
<el-input v-model="platform.username"></el-input>
|
<el-input v-model="platform.username"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="行政区划" prop="administrativeDivision">
|
||||||
|
<el-input v-model="platform.administrativeDivision" clearable></el-input>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="SIP认证密码" prop="password">
|
<el-form-item label="SIP认证密码" prop="password">
|
||||||
<el-input v-model="platform.password" ></el-input>
|
<el-input v-model="platform.password" ></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
@ -63,6 +66,18 @@
|
|||||||
<el-option label="TCP" value="TCP"></el-option>
|
<el-option label="TCP" value="TCP"></el-option>
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="目录分组" prop="catalogGroup">
|
||||||
|
<el-select
|
||||||
|
v-model="platform.catalogGroup"
|
||||||
|
style="width: 100%"
|
||||||
|
placeholder="请选择目录分组"
|
||||||
|
>
|
||||||
|
<el-option label="1" value="1"></el-option>
|
||||||
|
<el-option label="2" value="2"></el-option>
|
||||||
|
<el-option label="4" value="4"></el-option>
|
||||||
|
<el-option label="8" value="8"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="字符集" prop="characterSet">
|
<el-form-item label="字符集" prop="characterSet">
|
||||||
<el-select
|
<el-select
|
||||||
v-model="platform.characterSet"
|
v-model="platform.characterSet"
|
||||||
@ -77,6 +92,7 @@
|
|||||||
<el-checkbox label="启用" v-model="platform.enable" @change="checkExpires"></el-checkbox>
|
<el-checkbox label="启用" v-model="platform.enable" @change="checkExpires"></el-checkbox>
|
||||||
<el-checkbox label="云台控制" v-model="platform.ptz"></el-checkbox>
|
<el-checkbox label="云台控制" v-model="platform.ptz"></el-checkbox>
|
||||||
<el-checkbox label="共享所有直播流" v-model="platform.shareAllLiveStream"></el-checkbox>
|
<el-checkbox label="共享所有直播流" v-model="platform.shareAllLiveStream"></el-checkbox>
|
||||||
|
<el-checkbox label="拉起离线推流" v-model="platform.startOfflinePush"></el-checkbox>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item>
|
<el-form-item>
|
||||||
<el-button type="primary" @click="onSubmit">{{
|
<el-button type="primary" @click="onSubmit">{{
|
||||||
@ -138,6 +154,9 @@ export default {
|
|||||||
transport: "UDP",
|
transport: "UDP",
|
||||||
characterSet: "GB2312",
|
characterSet: "GB2312",
|
||||||
shareAllLiveStream: false,
|
shareAllLiveStream: false,
|
||||||
|
startOfflinePush: false,
|
||||||
|
catalogGroup: 1,
|
||||||
|
administrativeDivision: null,
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
name: [{ required: true, message: "请输入平台名称", trigger: "blur" }],
|
name: [{ required: true, message: "请输入平台名称", trigger: "blur" }],
|
||||||
@ -175,6 +194,7 @@ export default {
|
|||||||
that.platform.devicePort = res.data.devicePort;
|
that.platform.devicePort = res.data.devicePort;
|
||||||
that.platform.username = res.data.username;
|
that.platform.username = res.data.username;
|
||||||
that.platform.password = res.data.password;
|
that.platform.password = res.data.password;
|
||||||
|
that.platform.administrativeDivision = res.data.username.substr(0, 6);
|
||||||
}).catch(function (error) {
|
}).catch(function (error) {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
});
|
});
|
||||||
@ -199,6 +219,9 @@ export default {
|
|||||||
this.platform.characterSet = platform.characterSet;
|
this.platform.characterSet = platform.characterSet;
|
||||||
this.platform.shareAllLiveStream = platform.shareAllLiveStream;
|
this.platform.shareAllLiveStream = platform.shareAllLiveStream;
|
||||||
this.platform.catalogId = platform.catalogId;
|
this.platform.catalogId = platform.catalogId;
|
||||||
|
this.platform.startOfflinePush = platform.startOfflinePush;
|
||||||
|
this.platform.catalogGroup = platform.catalogGroup;
|
||||||
|
this.platform.administrativeDivision = platform.administrativeDivision;
|
||||||
this.onSubmit_text = "保存";
|
this.onSubmit_text = "保存";
|
||||||
this.saveUrl = "/api/platform/save";
|
this.saveUrl = "/api/platform/save";
|
||||||
}
|
}
|
||||||
@ -213,6 +236,10 @@ export default {
|
|||||||
deviceGBIdChange: function () {
|
deviceGBIdChange: function () {
|
||||||
|
|
||||||
this.platform.username = this.platform.deviceGBId ;
|
this.platform.username = this.platform.deviceGBId ;
|
||||||
|
if (this.platform.administrativeDivision == null) {
|
||||||
|
this.platform.administrativeDivision = this.platform.deviceGBId.substr(0, 6);
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
onSubmit: function () {
|
onSubmit: function () {
|
||||||
var that = this;
|
var that = this;
|
||||||
@ -253,6 +280,7 @@ export default {
|
|||||||
rtcp: false,
|
rtcp: false,
|
||||||
name: null,
|
name: null,
|
||||||
serverGBId: null,
|
serverGBId: null,
|
||||||
|
administrativeDivision: null,
|
||||||
serverGBDomain: null,
|
serverGBDomain: null,
|
||||||
serverIP: null,
|
serverIP: null,
|
||||||
serverPort: null,
|
serverPort: null,
|
||||||
@ -266,6 +294,8 @@ export default {
|
|||||||
transport: "UDP",
|
transport: "UDP",
|
||||||
characterSet: "GB2312",
|
characterSet: "GB2312",
|
||||||
shareAllLiveStream: false,
|
shareAllLiveStream: false,
|
||||||
|
startOfflinePush: false,
|
||||||
|
catalogGroup: 1,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
deviceGBIdExit: async function (deviceGbId) {
|
deviceGBIdExit: async function (deviceGbId) {
|
||||||
|
Loading…
Reference in New Issue
Block a user