648540858
3 years ago
70 changed files with 2811 additions and 14551 deletions
@ -0,0 +1,539 @@ |
|||||
|
-- MySQL dump 10.13 Distrib 8.0.27, for Linux (x86_64) |
||||
|
-- |
||||
|
-- Host: localhost Database: wvp |
||||
|
-- ------------------------------------------------------ |
||||
|
-- Server version 8.0.27-0ubuntu0.20.04.1 |
||||
|
|
||||
|
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; |
||||
|
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; |
||||
|
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; |
||||
|
/*!50503 SET NAMES utf8mb4 */; |
||||
|
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; |
||||
|
/*!40103 SET TIME_ZONE='+00:00' */; |
||||
|
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; |
||||
|
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; |
||||
|
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; |
||||
|
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `device` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `device`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `device` ( |
||||
|
`deviceId` varchar(50) NOT NULL, |
||||
|
`name` varchar(255) DEFAULT NULL, |
||||
|
`manufacturer` varchar(255) DEFAULT NULL, |
||||
|
`model` varchar(255) DEFAULT NULL, |
||||
|
`firmware` varchar(255) DEFAULT NULL, |
||||
|
`transport` varchar(50) DEFAULT NULL, |
||||
|
`streamMode` varchar(50) DEFAULT NULL, |
||||
|
`online` varchar(50) DEFAULT NULL, |
||||
|
`registerTime` varchar(50) DEFAULT NULL, |
||||
|
`keepaliveTime` varchar(50) DEFAULT NULL, |
||||
|
`ip` varchar(50) NOT NULL, |
||||
|
`createTime` varchar(50) NOT NULL, |
||||
|
`updateTime` varchar(50) NOT NULL, |
||||
|
`port` int NOT NULL, |
||||
|
`expires` int NOT NULL, |
||||
|
`subscribeCycleForCatalog` int NOT NULL, |
||||
|
`hostAddress` varchar(50) NOT NULL, |
||||
|
`charset` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`deviceId`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `device` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `device` WRITE; |
||||
|
/*!40000 ALTER TABLE `device` DISABLE KEYS */; |
||||
|
INSERT INTO `device` VALUES ('34020000001320000005','IPC-HFW4433M-I2','Dahua','IPC-HFW4433M-I2','2.622.0000000.31.R,2017-12-14','UDP','UDP','1','2022-01-05 15:08:26','2022-01-05 15:15:26','192.168.1.100','2022-01-05 15:08:26','2022-01-05 15:15:26',5060,3600,0,'192.168.1.100:5060','gb2312'),('34020000002000000005','DH-NVR5864-I','Dahua','DH-NVR5864-I','4.001.0000000.3,2020-10-22','UDP','UDP','1','2022-01-05 14:07:36','2022-01-05 15:15:25','192.168.1.19','2022-01-05 15:08:25','2022-01-05 15:15:25',5060,3600,0,'192.168.1.19:5060','gb2312'),('44010000001110008008',NULL,'Mercury','MIPC368(P)W-4','1.0.1 Build 210304 Rel.60784n','UDP','UDP','1','2022-01-05 15:08:35','2022-01-05 15:14:35','192.168.1.17','2022-01-05 15:08:35','2022-01-05 15:14:35',5060,36000,0,'192.168.1.17:5060','gb2312'); |
||||
|
/*!40000 ALTER TABLE `device` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `device_alarm` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `device_alarm`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `device_alarm` ( |
||||
|
`id` int NOT NULL AUTO_INCREMENT, |
||||
|
`deviceId` varchar(50) NOT NULL, |
||||
|
`channelId` varchar(50) NOT NULL, |
||||
|
`alarmPriority` varchar(50) NOT NULL, |
||||
|
`alarmMethod` varchar(50) DEFAULT NULL, |
||||
|
`alarmTime` varchar(50) NOT NULL, |
||||
|
`alarmDescription` varchar(255) DEFAULT NULL, |
||||
|
`longitude` double DEFAULT NULL, |
||||
|
`latitude` double DEFAULT NULL, |
||||
|
`alarmType` varchar(50) DEFAULT NULL, |
||||
|
PRIMARY KEY (`id`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `device_alarm` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `device_alarm` WRITE; |
||||
|
/*!40000 ALTER TABLE `device_alarm` DISABLE KEYS */; |
||||
|
/*!40000 ALTER TABLE `device_alarm` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `device_channel` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `device_channel`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `device_channel` ( |
||||
|
`channelId` varchar(50) NOT NULL, |
||||
|
`name` varchar(255) DEFAULT NULL, |
||||
|
`manufacture` varchar(50) DEFAULT NULL, |
||||
|
`model` varchar(50) DEFAULT NULL, |
||||
|
`owner` varchar(50) DEFAULT NULL, |
||||
|
`civilCode` varchar(50) DEFAULT NULL, |
||||
|
`block` varchar(50) DEFAULT NULL, |
||||
|
`address` varchar(50) DEFAULT NULL, |
||||
|
`parentId` varchar(50) DEFAULT NULL, |
||||
|
`safetyWay` int DEFAULT NULL, |
||||
|
`registerWay` int DEFAULT NULL, |
||||
|
`certNum` varchar(50) DEFAULT NULL, |
||||
|
`certifiable` int DEFAULT NULL, |
||||
|
`errCode` int DEFAULT NULL, |
||||
|
`endTime` varchar(50) DEFAULT NULL, |
||||
|
`secrecy` varchar(50) DEFAULT NULL, |
||||
|
`ipAddress` varchar(50) DEFAULT NULL, |
||||
|
`port` int DEFAULT NULL, |
||||
|
`password` varchar(255) DEFAULT NULL, |
||||
|
`PTZType` int DEFAULT NULL, |
||||
|
`status` int DEFAULT NULL, |
||||
|
`longitude` double DEFAULT NULL, |
||||
|
`latitude` double DEFAULT NULL, |
||||
|
`streamId` varchar(50) DEFAULT NULL, |
||||
|
`deviceId` varchar(50) NOT NULL, |
||||
|
`parental` varchar(50) DEFAULT NULL, |
||||
|
`hasAudio` bit(1) DEFAULT NULL, |
||||
|
`createTime` varchar(50) NOT NULL, |
||||
|
`updateTime` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`channelId`,`deviceId`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `device_channel` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `device_channel` WRITE; |
||||
|
/*!40000 ALTER TABLE `device_channel` DISABLE KEYS */; |
||||
|
INSERT INTO `device_channel` VALUES ('34020000001310000001','IPC','Dahua','IPC-HFW4433M-I2','0','340200','','axy','34020000001320000005',0,1,'',0,0,NULL,'0','',0,'',0,1,0,0,'','34020000001320000005','0',NULL,'2022-01-05 15:11:21','2022-01-05 15:11:21'),('34020000001310000001','通道1','Dahua','DH-NVR5864-I','0','340200','','axy','34020000002000000005',0,1,'',0,0,NULL,'0','192.168.1.17',37777,'',0,1,0,0,'','34020000002000000005','0',NULL,'2022-01-05 15:11:25','2022-01-05 15:11:25'),('34020000001310000065','GB_Chn_065','Dahua','DH-NVR5864-I','0','340200','','axy','34020000002000000005',0,1,'',0,0,NULL,'0','',0,'',0,1,0,0,'','34020000002000000005','0',NULL,'2022-01-05 15:11:25','2022-01-05 15:11:25'),('34020000001320000001','IPCamera 01','Mercury','MIPC368(P)W-4','Owner','CivilCode','','Address','',0,1,'',0,0,NULL,'0','',0,'',0,1,0,0,'','44010000001110008008','0',NULL,'2022-01-05 15:11:26','2022-01-05 15:11:26'); |
||||
|
/*!40000 ALTER TABLE `device_channel` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `device_mobile_position` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `device_mobile_position`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `device_mobile_position` ( |
||||
|
`deviceId` varchar(50) NOT NULL, |
||||
|
`channelId` varchar(50) NOT NULL, |
||||
|
`deviceName` varchar(255) DEFAULT NULL, |
||||
|
`time` varchar(50) NOT NULL, |
||||
|
`longitude` double NOT NULL, |
||||
|
`latitude` double NOT NULL, |
||||
|
`altitude` double DEFAULT NULL, |
||||
|
`speed` double DEFAULT NULL, |
||||
|
`direction` double DEFAULT NULL, |
||||
|
`reportSource` varchar(50) DEFAULT NULL, |
||||
|
`geodeticSystem` varchar(50) DEFAULT NULL, |
||||
|
`cnLng` varchar(50) DEFAULT NULL, |
||||
|
`cnLat` varchar(50) DEFAULT NULL, |
||||
|
PRIMARY KEY (`deviceId`,`time`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `device_mobile_position` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `device_mobile_position` WRITE; |
||||
|
/*!40000 ALTER TABLE `device_mobile_position` DISABLE KEYS */; |
||||
|
/*!40000 ALTER TABLE `device_mobile_position` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `gb_stream` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `gb_stream`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `gb_stream` ( |
||||
|
`app` varchar(255) NOT NULL, |
||||
|
`stream` varchar(255) NOT NULL, |
||||
|
`gbId` varchar(50) NOT NULL, |
||||
|
`name` varchar(255) DEFAULT NULL, |
||||
|
`longitude` double DEFAULT NULL, |
||||
|
`latitude` double DEFAULT NULL, |
||||
|
`streamType` varchar(50) DEFAULT NULL, |
||||
|
`mediaServerId` varchar(50) DEFAULT NULL, |
||||
|
`status` int DEFAULT NULL, |
||||
|
PRIMARY KEY (`app`,`stream`,`gbId`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `gb_stream` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `gb_stream` WRITE; |
||||
|
/*!40000 ALTER TABLE `gb_stream` DISABLE KEYS */; |
||||
|
INSERT INTO `gb_stream` VALUES ('1000','10000001_52869999','77777777777777777777','shoulei1111',0,0,'push','XR1LEpKlfQtSg9Z1',1); |
||||
|
/*!40000 ALTER TABLE `gb_stream` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `log` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `log`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `log` ( |
||||
|
`id` int NOT NULL AUTO_INCREMENT, |
||||
|
`name` varchar(50) NOT NULL, |
||||
|
`type` varchar(50) NOT NULL, |
||||
|
`uri` varchar(200) NOT NULL, |
||||
|
`address` varchar(50) NOT NULL, |
||||
|
`result` varchar(50) NOT NULL, |
||||
|
`timing` bigint NOT NULL, |
||||
|
`username` varchar(50) NOT NULL, |
||||
|
`createTime` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`id`) |
||||
|
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `log` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `log` WRITE; |
||||
|
/*!40000 ALTER TABLE `log` DISABLE KEYS */; |
||||
|
INSERT INTO `log` VALUES (1,'登录','GET','/api/user/login','127.0.0.1','200 OK',245,'admin','2022-01-05 15:09:06'),(2,'添加上级平台','POST','/api/platform/save','127.0.0.1','200 OK',88,'admin','2022-01-05 15:09:24'),(3,'[设备查询] 同步设备通道','POST','/api/device/query/devices/34020000001320000005/sync','127.0.0.1','200 OK',17,'admin','2022-01-05 15:11:21'),(4,'[设备查询] 同步设备通道','POST','/api/device/query/devices/34020000002000000005/sync','127.0.0.1','200 OK',4,'admin','2022-01-05 15:11:25'),(5,'[设备查询] 同步设备通道','POST','/api/device/query/devices/44010000001110008008/sync','127.0.0.1','200 OK',4,'admin','2022-01-05 15:11:26'),(6,'向上级平台添加国标通道','POST','/api/platform/update_channel_for_gb','127.0.0.1','200 OK',52,'admin','2022-01-05 15:11:32'),(7,'从上级平台移除国标通道','DELETE','/api/platform/del_channel_for_gb','127.0.0.1','200 OK',35,'admin','2022-01-05 15:11:34'),(8,'向上级平台添加国标通道','POST','/api/platform/update_channel_for_gb','127.0.0.1','200 OK',39,'admin','2022-01-05 15:11:35'),(9,'从上级平台移除国标通道','DELETE','/api/platform/del_channel_for_gb','127.0.0.1','200 OK',46,'admin','2022-01-05 15:14:00'),(10,'向上级平台添加国标通道','POST','/api/platform/update_channel_for_gb','127.0.0.1','200 OK',59,'admin','2022-01-05 15:14:01'),(11,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',12,'admin','2022-01-05 15:14:16'),(12,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',8,'admin','2022-01-05 15:14:17'),(13,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',6,'admin','2022-01-05 15:14:19'),(14,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',8,'admin','2022-01-05 15:14:19'),(15,'移除通道与国标的关联','DELETE','/api/gbStream/del','127.0.0.1','200 OK',11,'admin','2022-01-05 15:14:21'),(16,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',42,'admin','2022-01-05 15:14:24'),(17,'移除通道与国标的关联','DELETE','/api/gbStream/del','127.0.0.1','200 OK',43,'admin','2022-01-05 15:14:25'),(18,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',9,'admin','2022-01-05 15:14:27'),(19,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',9,'admin','2022-01-05 15:14:37'),(20,'添加通道与国标的关联','POST','/api/gbStream/add','127.0.0.1','200 OK',10,'admin','2022-01-05 15:14:38'); |
||||
|
/*!40000 ALTER TABLE `log` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `media_server` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `media_server`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `media_server` ( |
||||
|
`id` varchar(255) NOT NULL, |
||||
|
`ip` varchar(50) NOT NULL, |
||||
|
`hookIp` varchar(50) NOT NULL, |
||||
|
`sdpIp` varchar(50) NOT NULL, |
||||
|
`streamIp` varchar(50) NOT NULL, |
||||
|
`httpPort` int NOT NULL, |
||||
|
`httpSSlPort` int NOT NULL, |
||||
|
`rtmpPort` int NOT NULL, |
||||
|
`rtmpSSlPort` int NOT NULL, |
||||
|
`rtpProxyPort` int NOT NULL, |
||||
|
`rtspPort` int NOT NULL, |
||||
|
`rtspSSLPort` int NOT NULL, |
||||
|
`autoConfig` int NOT NULL, |
||||
|
`secret` varchar(50) NOT NULL, |
||||
|
`streamNoneReaderDelayMS` int NOT NULL, |
||||
|
`rtpEnable` int NOT NULL, |
||||
|
`rtpPortRange` varchar(50) NOT NULL, |
||||
|
`sendRtpPortRange` varchar(50) NOT NULL, |
||||
|
`recordAssistPort` int NOT NULL, |
||||
|
`defaultServer` int NOT NULL, |
||||
|
`createTime` varchar(50) NOT NULL, |
||||
|
`updateTime` varchar(50) NOT NULL, |
||||
|
`hookAliveInterval` int NOT NULL, |
||||
|
PRIMARY KEY (`id`), |
||||
|
UNIQUE KEY `media_server_i` (`ip`,`httpPort`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `media_server` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `media_server` WRITE; |
||||
|
/*!40000 ALTER TABLE `media_server` DISABLE KEYS */; |
||||
|
INSERT INTO `media_server` VALUES ('XR1LEpKlfQtSg9Z1','192.168.1.3','127.0.0.1','192.168.1.3','192.168.1.3',6080,0,10935,0,10000,10554,0,1,'035c73f7-bb6b-4889-a715-d9eb2d1925cc',100000,1,'30000,30500','30000,30500',18081,1,'2022-01-05 15:08:27','2022-01-05 15:08:27',10); |
||||
|
/*!40000 ALTER TABLE `media_server` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `parent_platform` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `parent_platform`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `parent_platform` ( |
||||
|
`id` int NOT NULL AUTO_INCREMENT, |
||||
|
`enable` int DEFAULT NULL, |
||||
|
`name` varchar(255) DEFAULT NULL, |
||||
|
`serverGBId` varchar(50) NOT NULL, |
||||
|
`serverGBDomain` varchar(50) DEFAULT NULL, |
||||
|
`serverIP` varchar(50) DEFAULT NULL, |
||||
|
`serverPort` int DEFAULT NULL, |
||||
|
`deviceGBId` varchar(50) NOT NULL, |
||||
|
`deviceIp` varchar(50) DEFAULT NULL, |
||||
|
`devicePort` varchar(50) DEFAULT NULL, |
||||
|
`username` varchar(255) DEFAULT NULL, |
||||
|
`password` varchar(50) DEFAULT NULL, |
||||
|
`expires` varchar(50) DEFAULT NULL, |
||||
|
`keepTimeout` varchar(50) DEFAULT NULL, |
||||
|
`transport` varchar(50) DEFAULT NULL, |
||||
|
`characterSet` varchar(50) DEFAULT NULL, |
||||
|
`catalogId` varchar(50) NOT NULL, |
||||
|
`ptz` int DEFAULT NULL, |
||||
|
`rtcp` int DEFAULT NULL, |
||||
|
`status` bit(1) DEFAULT NULL, |
||||
|
`shareAllLiveStream` int DEFAULT NULL, |
||||
|
PRIMARY KEY (`id`,`serverGBId`) |
||||
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `parent_platform` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `parent_platform` WRITE; |
||||
|
/*!40000 ALTER TABLE `parent_platform` DISABLE KEYS */; |
||||
|
INSERT INTO `parent_platform` VALUES (1,1,'1112','1111111111111','1111111111','11.11.11.11',111111,'34020000002110000015','192.168.1.3','5060','34020000002110000015','12345678','300','60','UDP','GB2312','1111111111111',1,0,_binary '\0',1); |
||||
|
/*!40000 ALTER TABLE `parent_platform` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `platform_catalog` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `platform_catalog`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `platform_catalog` ( |
||||
|
`id` varchar(50) NOT NULL, |
||||
|
`platformId` varchar(50) NOT NULL, |
||||
|
`name` varchar(255) NOT NULL, |
||||
|
`parentId` varchar(50) DEFAULT NULL, |
||||
|
PRIMARY KEY (`id`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `platform_catalog` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `platform_catalog` WRITE; |
||||
|
/*!40000 ALTER TABLE `platform_catalog` DISABLE KEYS */; |
||||
|
INSERT INTO `platform_catalog` VALUES ('1111111111','1111111111111','11122','1111111111111'); |
||||
|
/*!40000 ALTER TABLE `platform_catalog` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `platform_gb_channel` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `platform_gb_channel`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `platform_gb_channel` ( |
||||
|
`channelId` varchar(50) NOT NULL, |
||||
|
`deviceId` varchar(50) NOT NULL, |
||||
|
`platformId` varchar(50) NOT NULL, |
||||
|
`deviceAndChannelId` varchar(50) NOT NULL, |
||||
|
`catalogId` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`deviceAndChannelId`,`platformId`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `platform_gb_channel` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `platform_gb_channel` WRITE; |
||||
|
/*!40000 ALTER TABLE `platform_gb_channel` DISABLE KEYS */; |
||||
|
INSERT INTO `platform_gb_channel` VALUES ('34020000001310000001','34020000001320000005','1111111111111','34020000001320000005_34020000001310000001','1111111111'),('34020000001310000001','34020000002000000005','1111111111111','34020000002000000005_34020000001310000001','1111111111'),('34020000001310000065','34020000002000000005','1111111111111','34020000002000000005_34020000001310000065','1111111111'),('34020000001320000001','44010000001110008008','1111111111111','44010000001110008008_34020000001320000001','1111111111'); |
||||
|
/*!40000 ALTER TABLE `platform_gb_channel` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `platform_gb_stream` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `platform_gb_stream`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `platform_gb_stream` ( |
||||
|
`platformId` varchar(50) NOT NULL, |
||||
|
`app` varchar(255) NOT NULL, |
||||
|
`stream` varchar(255) NOT NULL, |
||||
|
`catalogId` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`platformId`,`app`,`stream`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `platform_gb_stream` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `platform_gb_stream` WRITE; |
||||
|
/*!40000 ALTER TABLE `platform_gb_stream` DISABLE KEYS */; |
||||
|
INSERT INTO `platform_gb_stream` VALUES ('1111111111111','1000','10000001_52869999','1111111111'); |
||||
|
/*!40000 ALTER TABLE `platform_gb_stream` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `role` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `role`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `role` ( |
||||
|
`id` int NOT NULL AUTO_INCREMENT, |
||||
|
`name` text NOT NULL, |
||||
|
`authority` text NOT NULL, |
||||
|
`createTime` varchar(50) NOT NULL, |
||||
|
`updateTime` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`id`) |
||||
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `role` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `role` WRITE; |
||||
|
/*!40000 ALTER TABLE `role` DISABLE KEYS */; |
||||
|
INSERT INTO `role` VALUES (1,'admin','0','2021-04-13 14:14:57','2021-04-13 14:14:57'); |
||||
|
/*!40000 ALTER TABLE `role` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `stream_proxy` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `stream_proxy`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `stream_proxy` ( |
||||
|
`type` varchar(50) NOT NULL, |
||||
|
`app` varchar(255) NOT NULL, |
||||
|
`stream` varchar(255) NOT NULL, |
||||
|
`url` varchar(255) DEFAULT NULL, |
||||
|
`src_url` varchar(255) DEFAULT NULL, |
||||
|
`dst_url` varchar(255) DEFAULT NULL, |
||||
|
`timeout_ms` int DEFAULT NULL, |
||||
|
`ffmpeg_cmd_key` varchar(255) DEFAULT NULL, |
||||
|
`rtp_type` varchar(50) DEFAULT NULL, |
||||
|
`mediaServerId` varchar(50) DEFAULT NULL, |
||||
|
`enable_hls` bit(1) DEFAULT NULL, |
||||
|
`enable_mp4` bit(1) DEFAULT NULL, |
||||
|
`enable` bit(1) NOT NULL, |
||||
|
`enable_remove_none_reader` bit(1) NOT NULL, |
||||
|
`createTime` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`app`,`stream`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `stream_proxy` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `stream_proxy` WRITE; |
||||
|
/*!40000 ALTER TABLE `stream_proxy` DISABLE KEYS */; |
||||
|
/*!40000 ALTER TABLE `stream_proxy` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `stream_push` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `stream_push`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `stream_push` ( |
||||
|
`app` varchar(255) NOT NULL, |
||||
|
`stream` varchar(255) NOT NULL, |
||||
|
`totalReaderCount` varchar(50) DEFAULT NULL, |
||||
|
`originType` int DEFAULT NULL, |
||||
|
`originTypeStr` varchar(50) DEFAULT NULL, |
||||
|
`createStamp` int DEFAULT NULL, |
||||
|
`aliveSecond` int DEFAULT NULL, |
||||
|
`mediaServerId` varchar(50) DEFAULT NULL, |
||||
|
PRIMARY KEY (`app`,`stream`) |
||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `stream_push` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `stream_push` WRITE; |
||||
|
/*!40000 ALTER TABLE `stream_push` DISABLE KEYS */; |
||||
|
INSERT INTO `stream_push` VALUES ('1000','10000001_52869999','0',2,'rtsp_push',1641366850,0,'XR1LEpKlfQtSg9Z1'); |
||||
|
/*!40000 ALTER TABLE `stream_push` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Table structure for table `user` |
||||
|
-- |
||||
|
|
||||
|
DROP TABLE IF EXISTS `user`; |
||||
|
/*!40101 SET @saved_cs_client = @@character_set_client */; |
||||
|
/*!50503 SET character_set_client = utf8mb4 */; |
||||
|
CREATE TABLE `user` ( |
||||
|
`id` int NOT NULL AUTO_INCREMENT, |
||||
|
`username` varchar(255) NOT NULL, |
||||
|
`password` varchar(255) NOT NULL, |
||||
|
`roleId` int NOT NULL, |
||||
|
`createTime` varchar(50) NOT NULL, |
||||
|
`updateTime` varchar(50) NOT NULL, |
||||
|
PRIMARY KEY (`id`), |
||||
|
UNIQUE KEY `user_username_uindex` (`username`) |
||||
|
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; |
||||
|
/*!40101 SET character_set_client = @saved_cs_client */; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping data for table `user` |
||||
|
-- |
||||
|
|
||||
|
LOCK TABLES `user` WRITE; |
||||
|
/*!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'); |
||||
|
/*!40000 ALTER TABLE `user` ENABLE KEYS */; |
||||
|
UNLOCK TABLES; |
||||
|
|
||||
|
-- |
||||
|
-- Dumping routines for database 'wvp' |
||||
|
-- |
||||
|
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; |
||||
|
|
||||
|
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; |
||||
|
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; |
||||
|
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; |
||||
|
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; |
||||
|
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; |
||||
|
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
||||
|
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; |
||||
|
|
||||
|
-- Dump completed on 2022-01-05 15:15:35 |
@ -0,0 +1,41 @@ |
|||||
|
package com.genersoft.iot.vmp.conf; |
||||
|
|
||||
|
import org.springframework.data.redis.connection.RedisConnection; |
||||
|
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener; |
||||
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer; |
||||
|
import org.springframework.util.StringUtils; |
||||
|
|
||||
|
import java.util.Properties; |
||||
|
|
||||
|
public class RedisKeyExpirationEventMessageListener extends KeyExpirationEventMessageListener { |
||||
|
|
||||
|
private UserSetup userSetup; |
||||
|
private RedisMessageListenerContainer listenerContainer; |
||||
|
private String keyspaceNotificationsConfigParameter = "EA"; |
||||
|
|
||||
|
public RedisKeyExpirationEventMessageListener(RedisMessageListenerContainer listenerContainer, UserSetup userSetup) { |
||||
|
super(listenerContainer); |
||||
|
this.listenerContainer = listenerContainer; |
||||
|
this.userSetup = userSetup; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void init() { |
||||
|
if (!userSetup.getRedisConfig()) { |
||||
|
// 配置springboot默认Config为空,即不让应用去修改redis的默认配置,因为Redis服务出于安全会禁用CONFIG命令给远程用户使用
|
||||
|
setKeyspaceNotificationsConfigParameter(""); |
||||
|
}else { |
||||
|
|
||||
|
RedisConnection connection = this.listenerContainer.getConnectionFactory().getConnection(); |
||||
|
Properties config = connection.getConfig("notify-keyspace-events"); |
||||
|
try { |
||||
|
if (!config.getProperty("notify-keyspace-events").equals(keyspaceNotificationsConfigParameter)) { |
||||
|
connection.setConfig("notify-keyspace-events", keyspaceNotificationsConfigParameter); |
||||
|
} |
||||
|
} finally { |
||||
|
connection.close(); |
||||
|
} |
||||
|
} |
||||
|
super.init(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,8 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.bean; |
||||
|
|
||||
|
public class CmdType { |
||||
|
|
||||
|
public static final String CATALOG = "Catalog"; |
||||
|
public static final String ALARM = "Alarm"; |
||||
|
public static final String MOBILE_POSITION = "MobilePosition"; |
||||
|
} |
@ -0,0 +1,21 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.bean; |
||||
|
|
||||
|
import javax.sip.Dialog; |
||||
|
import java.util.EventObject; |
||||
|
|
||||
|
public class DeviceNotFoundEvent extends EventObject { |
||||
|
/** |
||||
|
* Constructs a prototypical Event. |
||||
|
* |
||||
|
* @param dialog |
||||
|
* @throws IllegalArgumentException if source is null. |
||||
|
*/ |
||||
|
public DeviceNotFoundEvent(Dialog dialog) { |
||||
|
super(dialog); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public Dialog getDialog() { |
||||
|
return (Dialog)super.getSource(); |
||||
|
} |
||||
|
} |
@ -0,0 +1,71 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.bean; |
||||
|
|
||||
|
public class PlatformCatalog { |
||||
|
private String id; |
||||
|
private String name; |
||||
|
private String platformId; |
||||
|
private String parentId; |
||||
|
private int childrenCount; // 子节点数
|
||||
|
private int type; // 0 目录, 1 国标通道, 2 直播流
|
||||
|
|
||||
|
public String getId() { |
||||
|
return id; |
||||
|
} |
||||
|
|
||||
|
public void setId(String id) { |
||||
|
this.id = id; |
||||
|
} |
||||
|
|
||||
|
public String getName() { |
||||
|
return name; |
||||
|
} |
||||
|
|
||||
|
public void setName(String name) { |
||||
|
this.name = name; |
||||
|
} |
||||
|
|
||||
|
public String getPlatformId() { |
||||
|
return platformId; |
||||
|
} |
||||
|
|
||||
|
public void setPlatformId(String platformId) { |
||||
|
this.platformId = platformId; |
||||
|
} |
||||
|
|
||||
|
public String getParentId() { |
||||
|
return parentId; |
||||
|
} |
||||
|
|
||||
|
public void setParentId(String parentId) { |
||||
|
this.parentId = parentId; |
||||
|
} |
||||
|
|
||||
|
public int getChildrenCount() { |
||||
|
return childrenCount; |
||||
|
} |
||||
|
|
||||
|
public void setChildrenCount(int childrenCount) { |
||||
|
this.childrenCount = childrenCount; |
||||
|
} |
||||
|
|
||||
|
public int getType() { |
||||
|
return type; |
||||
|
} |
||||
|
|
||||
|
public void setType(int type) { |
||||
|
this.type = type; |
||||
|
} |
||||
|
|
||||
|
public void setTypeForCatalog() { |
||||
|
this.type = 0; |
||||
|
} |
||||
|
|
||||
|
public void setTypeForGb() { |
||||
|
this.type = 1; |
||||
|
} |
||||
|
|
||||
|
public void setTypeForStream() { |
||||
|
this.type = 2; |
||||
|
} |
||||
|
|
||||
|
} |
@ -0,0 +1,78 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.bean; |
||||
|
|
||||
|
import javax.sip.RequestEvent; |
||||
|
import javax.sip.header.*; |
||||
|
import javax.sip.message.Request; |
||||
|
|
||||
|
public class SubscribeInfo { |
||||
|
|
||||
|
public SubscribeInfo() { |
||||
|
} |
||||
|
|
||||
|
public SubscribeInfo(RequestEvent evt, String id) { |
||||
|
this.id = id; |
||||
|
Request request = evt.getRequest(); |
||||
|
CallIdHeader callIdHeader = (CallIdHeader)request.getHeader(CallIdHeader.NAME); |
||||
|
this.callId = callIdHeader.getCallId(); |
||||
|
FromHeader fromHeader = (FromHeader)request.getHeader(FromHeader.NAME); |
||||
|
this.fromTag = fromHeader.getTag(); |
||||
|
ExpiresHeader expiresHeader = (ExpiresHeader)request.getHeader(ExpiresHeader.NAME); |
||||
|
this.expires = expiresHeader.getExpires(); |
||||
|
this.event = (EventHeader)request.getHeader(EventHeader.NAME); |
||||
|
} |
||||
|
|
||||
|
private String id; |
||||
|
private int expires; |
||||
|
private String callId; |
||||
|
private EventHeader event; |
||||
|
private String fromTag; |
||||
|
private String toTag; |
||||
|
|
||||
|
public String getId() { |
||||
|
return id; |
||||
|
} |
||||
|
|
||||
|
public int getExpires() { |
||||
|
return expires; |
||||
|
} |
||||
|
|
||||
|
public String getCallId() { |
||||
|
return callId; |
||||
|
} |
||||
|
|
||||
|
public EventHeader getEvent() { |
||||
|
return event; |
||||
|
} |
||||
|
|
||||
|
public String getFromTag() { |
||||
|
return fromTag; |
||||
|
} |
||||
|
|
||||
|
public void setToTag(String toTag) { |
||||
|
this.toTag = toTag; |
||||
|
} |
||||
|
|
||||
|
public String getToTag() { |
||||
|
return toTag; |
||||
|
} |
||||
|
|
||||
|
public void setId(String id) { |
||||
|
this.id = id; |
||||
|
} |
||||
|
|
||||
|
public void setExpires(int expires) { |
||||
|
this.expires = expires; |
||||
|
} |
||||
|
|
||||
|
public void setCallId(String callId) { |
||||
|
this.callId = callId; |
||||
|
} |
||||
|
|
||||
|
public void setEvent(EventHeader event) { |
||||
|
this.event = event; |
||||
|
} |
||||
|
|
||||
|
public void setFromTag(String fromTag) { |
||||
|
this.fromTag = fromTag; |
||||
|
} |
||||
|
} |
@ -0,0 +1,52 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.event.subscribe; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.common.VideoManagerConstants; |
||||
|
import com.genersoft.iot.vmp.conf.DynamicTask; |
||||
|
import com.genersoft.iot.vmp.conf.RedisKeyExpirationEventMessageListener; |
||||
|
import com.genersoft.iot.vmp.conf.UserSetup; |
||||
|
import com.genersoft.iot.vmp.gb28181.event.EventPublisher; |
||||
|
import org.checkerframework.checker.units.qual.A; |
||||
|
import org.slf4j.Logger; |
||||
|
import org.slf4j.LoggerFactory; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.data.redis.connection.Message; |
||||
|
import org.springframework.data.redis.listener.RedisMessageListenerContainer; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
/** |
||||
|
* 平台订阅到期事件 |
||||
|
*/ |
||||
|
@Component |
||||
|
public class SubscribeListenerForPlatform extends RedisKeyExpirationEventMessageListener { |
||||
|
|
||||
|
private Logger logger = LoggerFactory.getLogger(SubscribeListenerForPlatform.class); |
||||
|
|
||||
|
@Autowired |
||||
|
private UserSetup userSetup; |
||||
|
|
||||
|
@Autowired |
||||
|
private DynamicTask dynamicTask; |
||||
|
|
||||
|
public SubscribeListenerForPlatform(RedisMessageListenerContainer listenerContainer, UserSetup userSetup) { |
||||
|
super(listenerContainer, userSetup); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 监听失效的key |
||||
|
* @param message |
||||
|
* @param pattern |
||||
|
*/ |
||||
|
@Override |
||||
|
public void onMessage(Message message, byte[] pattern) { |
||||
|
// 获取失效的key
|
||||
|
String expiredKey = message.toString(); |
||||
|
logger.debug(expiredKey); |
||||
|
// 订阅到期
|
||||
|
String PLATFORM_KEEPLIVEKEY_PREFIX = VideoManagerConstants.SIP_SUBSCRIBE_PREFIX + userSetup.getServerId() + "_"; |
||||
|
if (expiredKey.startsWith(PLATFORM_KEEPLIVEKEY_PREFIX)) { |
||||
|
// 取消定时任务
|
||||
|
dynamicTask.stopCron(expiredKey); |
||||
|
} |
||||
|
} |
||||
|
} |
@ -0,0 +1,70 @@ |
|||||
|
package com.genersoft.iot.vmp.gb28181.task; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.ParentPlatform; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.SubscribeInfo; |
||||
|
import com.genersoft.iot.vmp.gb28181.transmit.cmd.ISIPCommanderForPlatform; |
||||
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; |
||||
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
||||
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
||||
|
|
||||
|
import java.text.SimpleDateFormat; |
||||
|
import java.util.List; |
||||
|
|
||||
|
public class GPSSubscribeTask implements Runnable{ |
||||
|
|
||||
|
private IRedisCatchStorage redisCatchStorage; |
||||
|
private IVideoManagerStorager storager; |
||||
|
private ISIPCommanderForPlatform sipCommanderForPlatform; |
||||
|
private String platformId; |
||||
|
private String sn; |
||||
|
private String key; |
||||
|
|
||||
|
private final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); |
||||
|
|
||||
|
public GPSSubscribeTask(IRedisCatchStorage redisCatchStorage, ISIPCommanderForPlatform sipCommanderForPlatform, IVideoManagerStorager storager, String platformId, String sn, String key) { |
||||
|
this.redisCatchStorage = redisCatchStorage; |
||||
|
this.storager = storager; |
||||
|
this.platformId = platformId; |
||||
|
this.sn = sn; |
||||
|
this.key = key; |
||||
|
this.sipCommanderForPlatform = sipCommanderForPlatform; |
||||
|
} |
||||
|
|
||||
|
@Override |
||||
|
public void run() { |
||||
|
|
||||
|
SubscribeInfo subscribe = redisCatchStorage.getSubscribe(key); |
||||
|
if (subscribe != null) { |
||||
|
System.out.println("发送GPS消息"); |
||||
|
ParentPlatform parentPlatform = storager.queryParentPlatByServerGBId(platformId); |
||||
|
if (parentPlatform == null || parentPlatform.isStatus()) { |
||||
|
// TODO 暂时只处理视频流的回复,后续增加对国标设备的支持
|
||||
|
List<GbStream> gbStreams = storager.queryGbStreamListInPlatform(platformId); |
||||
|
if (gbStreams.size() > 0) { |
||||
|
for (GbStream gbStream : gbStreams) { |
||||
|
String gbId = gbStream.getGbId(); |
||||
|
GPSMsgInfo gpsMsgInfo = redisCatchStorage.getGpsMsgInfo(gbId); |
||||
|
if (gbStream.isStatus()) { |
||||
|
if (gpsMsgInfo != null) { |
||||
|
// 发送GPS消息
|
||||
|
sipCommanderForPlatform.sendMobilePosition(parentPlatform, gpsMsgInfo, subscribe); |
||||
|
}else { |
||||
|
// 没有在redis找到新的消息就使用数据库的消息
|
||||
|
gpsMsgInfo = new GPSMsgInfo(); |
||||
|
gpsMsgInfo.setId(gbId); |
||||
|
gpsMsgInfo.setLat(gbStream.getLongitude()); |
||||
|
gpsMsgInfo.setLng(gbStream.getLongitude()); |
||||
|
// 发送GPS消息
|
||||
|
sipCommanderForPlatform.sendMobilePosition(parentPlatform, gpsMsgInfo, subscribe); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,39 @@ |
|||||
|
package com.genersoft.iot.vmp.service; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; |
||||
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
||||
|
import com.genersoft.iot.vmp.storager.IVideoManagerStorager; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.scheduling.annotation.Scheduled; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* 定时查找redis中的GPS推送消息,并保存到对应的流中 |
||||
|
*/ |
||||
|
@Component |
||||
|
public class StreamGPSSubscribeTask { |
||||
|
|
||||
|
@Autowired |
||||
|
private IRedisCatchStorage redisCatchStorage; |
||||
|
|
||||
|
@Autowired |
||||
|
private IVideoManagerStorager storager; |
||||
|
|
||||
|
|
||||
|
|
||||
|
@Scheduled(fixedRate = 30 * 1000) //每30秒执行一次
|
||||
|
public void execute(){ |
||||
|
List<GPSMsgInfo> gpsMsgInfo = redisCatchStorage.getAllGpsMsgInfo(); |
||||
|
if (gpsMsgInfo.size() > 0) { |
||||
|
storager.updateStreamGPS(gpsMsgInfo); |
||||
|
for (GPSMsgInfo msgInfo : gpsMsgInfo) { |
||||
|
msgInfo.setStored(true); |
||||
|
redisCatchStorage.updateGpsMsgInfo(msgInfo); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
} |
||||
|
} |
@ -0,0 +1,106 @@ |
|||||
|
package com.genersoft.iot.vmp.service.bean; |
||||
|
|
||||
|
public class GPSMsgInfo { |
||||
|
|
||||
|
/** |
||||
|
* |
||||
|
*/ |
||||
|
private String id; |
||||
|
|
||||
|
/** |
||||
|
* 经度 (必选) |
||||
|
*/ |
||||
|
private double lng; |
||||
|
|
||||
|
/** |
||||
|
* 纬度 (必选) |
||||
|
*/ |
||||
|
private double lat; |
||||
|
|
||||
|
/** |
||||
|
* 速度,单位:km/h (可选) |
||||
|
*/ |
||||
|
private double speed; |
||||
|
|
||||
|
/** |
||||
|
* 产生通知时间, 时间格式: 2020-01-14T14:32:12 |
||||
|
*/ |
||||
|
private String time; |
||||
|
|
||||
|
/** |
||||
|
* 方向,取值为当前摄像头方向与正北方的顺时针夹角,取值范围0°~360°,单位:(°)(可选) |
||||
|
*/ |
||||
|
private String direction; |
||||
|
|
||||
|
/** |
||||
|
* 海拔高度,单位:m(可选) |
||||
|
*/ |
||||
|
private String altitude; |
||||
|
|
||||
|
private boolean stored; |
||||
|
|
||||
|
|
||||
|
public String getId() { |
||||
|
return id; |
||||
|
} |
||||
|
|
||||
|
public void setId(String id) { |
||||
|
this.id = id; |
||||
|
} |
||||
|
|
||||
|
public double getLng() { |
||||
|
return lng; |
||||
|
} |
||||
|
|
||||
|
public void setLng(double lng) { |
||||
|
this.lng = lng; |
||||
|
} |
||||
|
|
||||
|
public double getLat() { |
||||
|
return lat; |
||||
|
} |
||||
|
|
||||
|
public void setLat(double lat) { |
||||
|
this.lat = lat; |
||||
|
} |
||||
|
|
||||
|
public double getSpeed() { |
||||
|
return speed; |
||||
|
} |
||||
|
|
||||
|
public void setSpeed(double speed) { |
||||
|
this.speed = speed; |
||||
|
} |
||||
|
|
||||
|
public String getTime() { |
||||
|
return time; |
||||
|
} |
||||
|
|
||||
|
public void setTime(String time) { |
||||
|
this.time = time; |
||||
|
} |
||||
|
|
||||
|
public String getDirection() { |
||||
|
return direction; |
||||
|
} |
||||
|
|
||||
|
public void setDirection(String direction) { |
||||
|
this.direction = direction; |
||||
|
} |
||||
|
|
||||
|
public String getAltitude() { |
||||
|
return altitude; |
||||
|
} |
||||
|
|
||||
|
public void setAltitude(String altitude) { |
||||
|
this.altitude = altitude; |
||||
|
} |
||||
|
|
||||
|
public boolean isStored() { |
||||
|
return stored; |
||||
|
} |
||||
|
|
||||
|
public void setStored(boolean stored) { |
||||
|
this.stored = stored; |
||||
|
} |
||||
|
} |
@ -0,0 +1,22 @@ |
|||||
|
package com.genersoft.iot.vmp.service.impl; |
||||
|
|
||||
|
import com.alibaba.fastjson.JSON; |
||||
|
import com.genersoft.iot.vmp.service.bean.GPSMsgInfo; |
||||
|
import com.genersoft.iot.vmp.storager.IRedisCatchStorage; |
||||
|
import org.springframework.beans.factory.annotation.Autowired; |
||||
|
import org.springframework.data.redis.connection.Message; |
||||
|
import org.springframework.data.redis.connection.MessageListener; |
||||
|
import org.springframework.stereotype.Component; |
||||
|
|
||||
|
@Component |
||||
|
public class RedisGPSMsgListener implements MessageListener { |
||||
|
|
||||
|
@Autowired |
||||
|
private IRedisCatchStorage redisCatchStorage; |
||||
|
|
||||
|
@Override |
||||
|
public void onMessage(Message message, byte[] bytes) { |
||||
|
GPSMsgInfo gpsMsgInfo = JSON.parseObject(message.getBody(), GPSMsgInfo.class); |
||||
|
redisCatchStorage.updateGpsMsgInfo(gpsMsgInfo); |
||||
|
} |
||||
|
} |
@ -0,0 +1,42 @@ |
|||||
|
package com.genersoft.iot.vmp.storager.dao; |
||||
|
|
||||
|
import com.genersoft.iot.vmp.gb28181.bean.GbStream; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.PlatformCatalog; |
||||
|
import com.genersoft.iot.vmp.gb28181.bean.PlatformGbStream; |
||||
|
import com.genersoft.iot.vmp.media.zlm.dto.StreamProxyItem; |
||||
|
import org.apache.ibatis.annotations.*; |
||||
|
import org.springframework.stereotype.Repository; |
||||
|
|
||||
|
import java.util.List; |
||||
|
|
||||
|
|
||||
|
@Mapper |
||||
|
@Repository |
||||
|
public interface PlatformCatalogMapper { |
||||
|
|
||||
|
@Insert("INSERT INTO platform_catalog (id, name, platformId, parentId) VALUES" + |
||||
|
"(#{id}, #{name}, #{platformId}, #{parentId})") |
||||
|
int add(PlatformCatalog platformCatalog); |
||||
|
|
||||
|
@Delete("DELETE FROM platform_catalog WHERE id=#{id}") |
||||
|
int del(String id); |
||||
|
|
||||
|
@Delete("DELETE FROM platform_catalog WHERE platformId=#{platformId}") |
||||
|
int delByPlatformId(String platformId); |
||||
|
|
||||
|
@Select("SELECT *, (SELECT COUNT(1) from platform_catalog where parentId = pc.id AND platformId=#{platformId}) as childrenCount FROM platform_catalog pc WHERE parentId=#{parentId} AND platformId=#{platformId}") |
||||
|
List<PlatformCatalog> selectByParentId(String platformId, String parentId); |
||||
|
|
||||
|
@Select("SELECT *, (SELECT COUNT(1) from platform_catalog where parentId = pc.id) as childrenCount FROM platform_catalog pc WHERE pc.id=#{id}") |
||||
|
PlatformCatalog select(String id); |
||||
|
|
||||
|
@Update(value = {" <script>" + |
||||
|
"UPDATE platform_catalog " + |
||||
|
"SET name=#{name}" + |
||||
|
"WHERE id=#{id}"+ |
||||
|
"</script>"}) |
||||
|
int update(PlatformCatalog platformCatalog); |
||||
|
|
||||
|
@Select("SELECT *, (SELECT COUNT(1) from platform_catalog where parentId = pc.id) as childrenCount FROM platform_catalog pc WHERE pc.platformId=#{platformId}") |
||||
|
List<PlatformCatalog> selectByPlatForm(String platformId); |
||||
|
} |
Binary file not shown.
File diff suppressed because it is too large
@ -0,0 +1,101 @@ |
|||||
|
<template> |
||||
|
<div id="catalogEdit" v-loading="isLoging"> |
||||
|
<el-dialog |
||||
|
title="节点编辑" |
||||
|
width="40%" |
||||
|
top="2rem" |
||||
|
:append-to-body="true" |
||||
|
:close-on-click-modal="false" |
||||
|
:visible.sync="showDialog" |
||||
|
:destroy-on-close="true" |
||||
|
@close="close()" |
||||
|
> |
||||
|
<div id="shared" style="margin-top: 1rem;margin-right: 100px;"> |
||||
|
<el-form ref="form" :rules="rules" :model="form" label-width="140px" > |
||||
|
<el-form-item label="节点编号" prop="id" > |
||||
|
<el-input v-model="form.id" :disabled="isEdit"></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item label="节点名称" prop="name"> |
||||
|
<el-input v-model="form.name" clearable></el-input> |
||||
|
</el-form-item> |
||||
|
<el-form-item> |
||||
|
<div style="float: right;"> |
||||
|
<el-button type="primary" @click="onSubmit" >确认</el-button> |
||||
|
<el-button @click="close">取消</el-button> |
||||
|
</div> |
||||
|
|
||||
|
</el-form-item> |
||||
|
</el-form> |
||||
|
</div> |
||||
|
</el-dialog> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
export default { |
||||
|
name: "catalogEdit", |
||||
|
computed: {}, |
||||
|
props: ['platformId'], |
||||
|
created() {}, |
||||
|
data() { |
||||
|
return { |
||||
|
submitCallback: null, |
||||
|
showDialog: false, |
||||
|
isLoging: false, |
||||
|
isEdit: false, |
||||
|
form: { |
||||
|
id: null, |
||||
|
name: null, |
||||
|
platformId: null, |
||||
|
parentId: null, |
||||
|
}, |
||||
|
rules: { |
||||
|
name: [{ required: true, message: "请输入名称", trigger: "blur" }], |
||||
|
id: [{ required: true, message: "请输入id", trigger: "blur" }] |
||||
|
}, |
||||
|
}; |
||||
|
}, |
||||
|
methods: { |
||||
|
openDialog: function (isEdit, id, name, parentId, callback) { |
||||
|
console.log("parentId: " + parentId) |
||||
|
this.isEdit = isEdit; |
||||
|
this.form.id = id; |
||||
|
this.form.name = name; |
||||
|
this.form.platformId = this.platformId; |
||||
|
this.form.parentId = parentId; |
||||
|
this.showDialog = true; |
||||
|
this.submitCallback = callback; |
||||
|
}, |
||||
|
onSubmit: function () { |
||||
|
console.log("onSubmit"); |
||||
|
console.log(this.form); |
||||
|
this.$axios({ |
||||
|
method:"post", |
||||
|
url:`/api/platform/catalog/${!this.isEdit? "add":"edit"}`, |
||||
|
data: this.form |
||||
|
}) |
||||
|
.then((res)=> { |
||||
|
if (res.data.code === 0) { |
||||
|
console.log("添加/修改成功") |
||||
|
if (this.submitCallback)this.submitCallback() |
||||
|
}else { |
||||
|
this.$message({ |
||||
|
showClose: true, |
||||
|
message: res.data.msg, |
||||
|
type: "error", |
||||
|
}); |
||||
|
} |
||||
|
this.close(); |
||||
|
}) |
||||
|
.catch((error)=> { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
}, |
||||
|
close: function () { |
||||
|
this.showDialog = false; |
||||
|
this.$refs.form.resetFields(); |
||||
|
}, |
||||
|
}, |
||||
|
}; |
||||
|
</script> |
@ -0,0 +1,311 @@ |
|||||
|
<template> |
||||
|
<div id="chooseChannelForCatalog" > |
||||
|
<div style="background-color: #FFFFFF; margin-bottom: 1rem; position: relative; padding: 0.5rem; text-align: left;font-size: 14px;"> |
||||
|
<el-tree class="el-scrollbar" |
||||
|
ref="tree" |
||||
|
id="catalogTree" |
||||
|
empty-text="未知节点" |
||||
|
node-key="id" |
||||
|
default-expand-all |
||||
|
:highlight-current="true" |
||||
|
:expand-on-click-node="false" |
||||
|
:props="props" |
||||
|
:load="loadNode" |
||||
|
@node-contextmenu="contextmenuEventHandler" |
||||
|
lazy> |
||||
|
<span class="custom-tree-node" slot-scope="{ node, data }" style="width: 100%"> |
||||
|
<el-radio v-if="node.data.type === 0" style="margin-right: 0" v-model="chooseId" :label="node.data.id">{{''}}</el-radio> |
||||
|
<span v-if="node.data.type === 0 && node.level === 1" class="el-icon-s-home"></span> |
||||
|
<span v-if="node.data.type === 0 && node.level > 1" class="el-icon-folder-opened"></span> |
||||
|
<span v-if="node.data.type === 1" class="iconfont icon-shexiangtou"></span> |
||||
|
<span v-if="node.data.type === 2" class="iconfont icon-zhibo"></span> |
||||
|
<span style="padding-left: 1px">{{ node.label }}</span> |
||||
|
<span> |
||||
|
<i style="margin-left: 5rem; color: #9d9d9d; padding-right: 20px" v-if="node.data.id === defaultCatalogId">默认</i> |
||||
|
</span> |
||||
|
</span> |
||||
|
</el-tree> |
||||
|
</div> |
||||
|
<catalogEdit ref="catalogEdit" :platformId="platformId"></catalogEdit> |
||||
|
</div> |
||||
|
</template> |
||||
|
|
||||
|
|
||||
|
<script> |
||||
|
|
||||
|
import catalogEdit from './catalogEdit.vue' |
||||
|
export default { |
||||
|
name: 'chooseChannelForCatalog', |
||||
|
props: ['platformId', 'platformName', 'defaultCatalogId', 'catalogIdChange'], |
||||
|
created() { |
||||
|
this.initData(); |
||||
|
setTimeout(()=>{ |
||||
|
if (this.catalogIdChange)this.catalogIdChange(this.defaultCatalogId); |
||||
|
}, 100) |
||||
|
|
||||
|
}, |
||||
|
components: { |
||||
|
catalogEdit, |
||||
|
}, |
||||
|
data() { |
||||
|
return { |
||||
|
props: { |
||||
|
label: 'name', |
||||
|
children: 'children', |
||||
|
isLeaf: 'leaf' |
||||
|
}, |
||||
|
chooseNode: null, |
||||
|
chooseId: this.defaultCatalogId, |
||||
|
catalogTree: null, |
||||
|
contextmenuShow: false |
||||
|
|
||||
|
}; |
||||
|
}, |
||||
|
watch:{ |
||||
|
platformId(newData, oldData){ |
||||
|
console.log(newData) |
||||
|
this.initData() |
||||
|
}, |
||||
|
chooseId(newData, oldData){ |
||||
|
console.log("发送: " + newData) |
||||
|
if (this.catalogIdChange)this.catalogIdChange(newData); |
||||
|
}, |
||||
|
}, |
||||
|
methods: { |
||||
|
initData: function () { |
||||
|
this.getCatalog(); |
||||
|
}, |
||||
|
|
||||
|
getCatalog: function(parentId, callback) { |
||||
|
let that = this; |
||||
|
this.$axios({ |
||||
|
method:"get", |
||||
|
url:`/api/platform/catalog`, |
||||
|
params: { |
||||
|
platformId: that.platformId, |
||||
|
parentId: parentId |
||||
|
} |
||||
|
}) |
||||
|
.then((res)=> { |
||||
|
if (res.data.code === 0) { |
||||
|
if (typeof(callback) === 'function') { |
||||
|
callback(res.data.data) |
||||
|
} |
||||
|
// |
||||
|
|
||||
|
// if (typeof (this.$refs.tree.setCurrentKey) == "undefined") { |
||||
|
// this.$refs.tree.setCurrentKey(this.defaultCatalogId) |
||||
|
// let data = this.$refs.tree.getCurrentNode() |
||||
|
// if (data != null && data.id === this.defaultCatalogId) { |
||||
|
// this.currentCatalogChange(data, this.$refs.tree.getNode(data.id)) |
||||
|
// } |
||||
|
// } |
||||
|
|
||||
|
} |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
addCatalog: function (parentId, node){ |
||||
|
let that = this; |
||||
|
// 打开添加弹窗 |
||||
|
that.$refs.catalogEdit.openDialog(false, null, null, parentId, ()=>{ |
||||
|
node.loaded = false |
||||
|
node.expand(); |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
refreshCatalog: function (node){ |
||||
|
node.loaded = false |
||||
|
node.expand(); |
||||
|
}, |
||||
|
refreshCatalogById: function (id, nodeIds) { |
||||
|
if (id) { |
||||
|
console.log("refreshCatalogById: " + id) |
||||
|
let node = this.$refs.tree.getNode(id); |
||||
|
console.log(node) |
||||
|
this.refreshCatalog(node); |
||||
|
} |
||||
|
if (nodeIds !== null) { |
||||
|
let refreshNode = {} |
||||
|
for (let i = 0; i < nodeIds.length; i++) { |
||||
|
let node = this.$refs.tree.getNode(nodeIds[i]); |
||||
|
refreshNode[node.parent.data.id] = node.parent |
||||
|
} |
||||
|
if (Object.values(refreshNode).length > 0) { |
||||
|
for (let j = 0; j < Object.values(refreshNode).length; j++) { |
||||
|
this.refreshCatalog(Object.values(refreshNode)[j]); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
}, |
||||
|
editCatalog: function (data, node){ |
||||
|
let that = this; |
||||
|
// 打开添加弹窗 |
||||
|
that.$refs.catalogEdit.openDialog(true, data.id, data.name, data.parentId, (data)=>{ |
||||
|
node.parent.loaded = false |
||||
|
node.parent.expand(); |
||||
|
}); |
||||
|
|
||||
|
}, |
||||
|
removeCatalog: function (id, node){ |
||||
|
this.$axios({ |
||||
|
method:"delete", |
||||
|
url:`/api/platform/catalog/del`, |
||||
|
params: { |
||||
|
id: id, |
||||
|
} |
||||
|
}) |
||||
|
.then((res) => { |
||||
|
if (res.data.code === 0) { |
||||
|
console.log("移除成功") |
||||
|
node.parent.loaded = false |
||||
|
node.parent.expand(); |
||||
|
} |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
}, |
||||
|
setDefaultCatalog: function (id){ |
||||
|
this.$axios({ |
||||
|
method:"post", |
||||
|
url:`/api/platform/catalog/default/update`, |
||||
|
params: { |
||||
|
platformId: this.platformId, |
||||
|
catalogId: id, |
||||
|
} |
||||
|
}) |
||||
|
.then((res)=> { |
||||
|
if (res.data.code === 0) { |
||||
|
this.defaultCatalogId = id; |
||||
|
} |
||||
|
}) |
||||
|
.catch(function (error) { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
}, |
||||
|
loadNode: function(node, resolve){ |
||||
|
if (node.level === 0) { |
||||
|
resolve([{ |
||||
|
name: this.platformName, |
||||
|
id: this.platformId, |
||||
|
type: 0 |
||||
|
}]); |
||||
|
} |
||||
|
if (node.level >= 1){ |
||||
|
this.getCatalog(node.data.id, resolve) |
||||
|
} |
||||
|
}, |
||||
|
contextmenuEventHandler: function (event,data,node,element){ |
||||
|
if (node.data.type !== 0) { |
||||
|
data.parentId = node.parent.data.id; |
||||
|
this.$contextmenu({ |
||||
|
items: [ |
||||
|
{ |
||||
|
label: "移除通道", |
||||
|
icon: "el-icon-delete", |
||||
|
disabled: false, |
||||
|
onClick: () => { |
||||
|
this.$axios({ |
||||
|
method:"delete", |
||||
|
url:"/api/platform/catalog/relation/del", |
||||
|
data: data |
||||
|
}).then((res)=>{ |
||||
|
console.log("移除成功") |
||||
|
node.parent.loaded = false |
||||
|
node.parent.expand(); |
||||
|
}).catch(function (error) { |
||||
|
console.log(error); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
|
], |
||||
|
event, // 鼠标事件信息 |
||||
|
customClass: "custom-class", // 自定义菜单 class |
||||
|
zIndex: 3000, // 菜单样式 z-index |
||||
|
}); |
||||
|
}else { |
||||
|
this.$contextmenu({ |
||||
|
items: [ |
||||
|
{ |
||||
|
label: "刷新节点", |
||||
|
icon: "el-icon-refresh", |
||||
|
disabled: false, |
||||
|
onClick: () => { |
||||
|
this.refreshCatalog(node); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "新建节点", |
||||
|
icon: "el-icon-plus", |
||||
|
disabled: false, |
||||
|
onClick: () => { |
||||
|
this.addCatalog(data.id, node); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "修改节点", |
||||
|
icon: "el-icon-edit", |
||||
|
disabled: node.level === 1, |
||||
|
onClick: () => { |
||||
|
this.editCatalog(data, node); |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "删除节点", |
||||
|
icon: "el-icon-delete", |
||||
|
disabled: node.level === 1, |
||||
|
divided: true, |
||||
|
onClick: () => { |
||||
|
this.removeCatalog(data.id, node) |
||||
|
} |
||||
|
}, |
||||
|
{ |
||||
|
label: "设为默认", |
||||
|
icon: "el-icon-folder-checked", |
||||
|
disabled: node.data.id === this.defaultCatalogId, |
||||
|
onClick: () => { |
||||
|
this.setDefaultCatalog(data.id) |
||||
|
}, |
||||
|
}, |
||||
|
// { |
||||
|
// label: "导出", |
||||
|
// icon: "el-icon-download", |
||||
|
// disabled: false, |
||||
|
// children: [ |
||||
|
// { |
||||
|
// label: "导出到文件", |
||||
|
// onClick: () => { |
||||
|
// |
||||
|
// }, |
||||
|
// }, |
||||
|
// { |
||||
|
// label: "导出到其他平台", |
||||
|
// onClick: () => { |
||||
|
// |
||||
|
// }, |
||||
|
// } |
||||
|
// ] |
||||
|
// }, |
||||
|
|
||||
|
], |
||||
|
event, // 鼠标事件信息 |
||||
|
customClass: "custom-class", // 自定义菜单 class |
||||
|
zIndex: 3000, // 菜单样式 z-index |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
return false; |
||||
|
}, |
||||
|
} |
||||
|
}; |
||||
|
</script> |
||||
|
|
||||
|
<style> |
||||
|
#catalogTree{ |
||||
|
display: inline-block; |
||||
|
} |
||||
|
</style> |
Binary file not shown.
Loading…
Reference in new issue