From a7f9cbd8efaaf4bebe714b2d768bc23f82411865 Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Mon, 26 May 2025 09:53:58 +0800
Subject: [PATCH 01/10] =?UTF-8?q?=20=E7=89=88=E6=9C=AC=E5=8F=B7=E6=8F=90?=
=?UTF-8?q?=E5=8D=87?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 2 +-
src/main/resources/application.yml | 2 +-
数据库/2.7.4/初始化-mysql-2.7.4.sql | 466 +++++++++++++++++
.../2.7.4/初始化-postgresql-kingbase-2.7.4.sql | 467 ++++++++++++++++++
4 files changed, 935 insertions(+), 2 deletions(-)
create mode 100644 数据库/2.7.4/初始化-mysql-2.7.4.sql
create mode 100644 数据库/2.7.4/初始化-postgresql-kingbase-2.7.4.sql
diff --git a/pom.xml b/pom.xml
index dc929b5d2..2ba98012b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -11,7 +11,7 @@
com.genersoft
wvp-pro
- 2.7.3
+ 2.7.4
web video platform
国标28181视频平台
${project.packaging}
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 2164909c6..98f1ff2e0 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -2,4 +2,4 @@ spring:
application:
name: wvp
profiles:
- active: 273
+ active: 274
diff --git a/数据库/2.7.4/初始化-mysql-2.7.4.sql b/数据库/2.7.4/初始化-mysql-2.7.4.sql
new file mode 100644
index 000000000..3d25e5927
--- /dev/null
+++ b/数据库/2.7.4/初始化-mysql-2.7.4.sql
@@ -0,0 +1,466 @@
+/*建表*/
+drop table IF EXISTS wvp_device;
+create table IF NOT EXISTS wvp_device
+(
+ id serial primary key,
+ device_id character varying(50) not null,
+ name character varying(255),
+ manufacturer character varying(255),
+ model character varying(255),
+ firmware character varying(255),
+ transport character varying(50),
+ stream_mode character varying(50),
+ on_line bool default false,
+ register_time character varying(50),
+ keepalive_time character varying(50),
+ ip character varying(50),
+ create_time character varying(50),
+ update_time character varying(50),
+ port integer,
+ expires integer,
+ subscribe_cycle_for_catalog integer DEFAULT 0,
+ subscribe_cycle_for_mobile_position integer DEFAULT 0,
+ mobile_position_submission_interval integer DEFAULT 5,
+ subscribe_cycle_for_alarm integer DEFAULT 0,
+ host_address character varying(50),
+ charset character varying(50),
+ ssrc_check bool default false,
+ geo_coord_sys character varying(50),
+ media_server_id character varying(50) default 'auto',
+ custom_name character varying(255),
+ sdp_ip character varying(50),
+ local_ip character varying(50),
+ password character varying(255),
+ as_message_channel bool default false,
+ heart_beat_interval integer,
+ heart_beat_count integer,
+ position_capability integer,
+ broadcast_push_after_ack bool default false,
+ server_id character varying(50),
+ constraint uk_device_device unique (device_id)
+);
+
+drop table IF EXISTS wvp_device_alarm;
+create table IF NOT EXISTS wvp_device_alarm
+(
+ id serial primary key,
+ device_id character varying(50) not null,
+ channel_id character varying(50) not null,
+ alarm_priority character varying(50),
+ alarm_method character varying(50),
+ alarm_time character varying(50),
+ alarm_description character varying(255),
+ longitude double precision,
+ latitude double precision,
+ alarm_type character varying(50),
+ create_time character varying(50) not null
+);
+
+drop table IF EXISTS wvp_device_mobile_position;
+create table IF NOT EXISTS wvp_device_mobile_position
+(
+ id serial primary key,
+ device_id character varying(50) not null,
+ channel_id character varying(50) not null,
+ device_name character varying(255),
+ time character varying(50),
+ longitude double precision,
+ latitude double precision,
+ altitude double precision,
+ speed double precision,
+ direction double precision,
+ report_source character varying(50),
+ create_time character varying(50)
+);
+
+drop table IF EXISTS wvp_device_channel;
+create table IF NOT EXISTS wvp_device_channel
+(
+ id serial primary key,
+ device_id character varying(50),
+ name character varying(255),
+ manufacturer character varying(50),
+ model character varying(50),
+ owner character varying(50),
+ civil_code character varying(50),
+ block character varying(50),
+ address character varying(50),
+ parental integer,
+ parent_id character varying(50),
+ safety_way integer,
+ register_way integer,
+ cert_num character varying(50),
+ certifiable integer,
+ err_code integer,
+ end_time character varying(50),
+ secrecy integer,
+ ip_address character varying(50),
+ port integer,
+ password character varying(255),
+ status character varying(50),
+ longitude double precision,
+ latitude double precision,
+ ptz_type integer,
+ position_type integer,
+ room_type integer,
+ use_type integer,
+ supply_light_type integer,
+ direction_type integer,
+ resolution character varying(255),
+ business_group_id character varying(255),
+ download_speed character varying(255),
+ svc_space_support_mod integer,
+ svc_time_support_mode integer,
+ create_time character varying(50) not null,
+ update_time character varying(50) not null,
+ sub_count integer,
+ stream_id character varying(255),
+ has_audio bool default false,
+ gps_time character varying(50),
+ stream_identification character varying(50),
+ channel_type int default 0 not null,
+ gb_device_id character varying(50),
+ gb_name character varying(255),
+ gb_manufacturer character varying(255),
+ gb_model character varying(255),
+ gb_owner character varying(255),
+ gb_civil_code character varying(255),
+ gb_block character varying(255),
+ gb_address character varying(255),
+ gb_parental integer,
+ gb_parent_id character varying(255),
+ gb_safety_way integer,
+ gb_register_way integer,
+ gb_cert_num character varying(50),
+ gb_certifiable integer,
+ gb_err_code integer,
+ gb_end_time character varying(50),
+ gb_secrecy integer,
+ gb_ip_address character varying(50),
+ gb_port integer,
+ gb_password character varying(50),
+ gb_status character varying(50),
+ gb_longitude double,
+ gb_latitude double,
+ gb_business_group_id character varying(50),
+ gb_ptz_type integer,
+ gb_position_type integer,
+ gb_room_type integer,
+ gb_use_type integer,
+ gb_supply_light_type integer,
+ gb_direction_type integer,
+ gb_resolution character varying(255),
+ gb_download_speed character varying(255),
+ gb_svc_space_support_mod integer,
+ gb_svc_time_support_mode integer,
+ record_plan_id integer,
+ data_type integer not null,
+ data_device_id integer not null,
+ gps_speed double precision,
+ gps_altitude double precision,
+ gps_direction double precision,
+ index (data_type),
+ index (data_device_id),
+ constraint uk_wvp_unique_channel unique (gb_device_id)
+);
+
+drop table IF EXISTS wvp_media_server;
+create table IF NOT EXISTS wvp_media_server
+(
+ id character varying(255) primary key,
+ ip character varying(50),
+ hook_ip character varying(50),
+ sdp_ip character varying(50),
+ stream_ip character varying(50),
+ http_port integer,
+ http_ssl_port integer,
+ rtmp_port integer,
+ rtmp_ssl_port integer,
+ rtp_proxy_port integer,
+ rtsp_port integer,
+ rtsp_ssl_port integer,
+ flv_port integer,
+ flv_ssl_port integer,
+ ws_flv_port integer,
+ ws_flv_ssl_port integer,
+ auto_config bool default false,
+ secret character varying(50),
+ type character varying(50) default 'zlm',
+ rtp_enable bool default false,
+ rtp_port_range character varying(50),
+ send_rtp_port_range character varying(50),
+ record_assist_port integer,
+ default_server bool default false,
+ create_time character varying(50),
+ update_time character varying(50),
+ hook_alive_interval integer,
+ record_path character varying(255),
+ record_day integer default 7,
+ transcode_suffix character varying(255),
+ server_id character varying(50),
+ constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
+);
+
+drop table IF EXISTS wvp_platform;
+create table IF NOT EXISTS wvp_platform
+(
+ id serial primary key,
+ enable bool default false,
+ name character varying(255),
+ server_gb_id character varying(50),
+ server_gb_domain character varying(50),
+ server_ip character varying(50),
+ server_port integer,
+ device_gb_id character varying(50),
+ device_ip character varying(50),
+ device_port character varying(50),
+ username character varying(255),
+ password character varying(50),
+ expires character varying(50),
+ keep_timeout character varying(50),
+ transport character varying(50),
+ civil_code character varying(50),
+ manufacturer character varying(255),
+ model character varying(255),
+ address character varying(255),
+ character_set character varying(50),
+ ptz bool default false,
+ rtcp bool default false,
+ status bool default false,
+ catalog_group integer,
+ register_way integer,
+ secrecy integer,
+ create_time character varying(50),
+ update_time character varying(50),
+ as_message_channel bool default false,
+ catalog_with_platform integer default 1,
+ catalog_with_group integer default 1,
+ catalog_with_region integer default 1,
+ auto_push_channel bool default true,
+ send_stream_ip character varying(50),
+ server_id character varying(50),
+ constraint uk_platform_unique_server_gb_id unique (server_gb_id)
+);
+
+drop table IF EXISTS wvp_platform_channel;
+create table IF NOT EXISTS wvp_platform_channel
+(
+ id serial primary key,
+ platform_id integer,
+ device_channel_id integer,
+ custom_device_id character varying(50),
+ custom_name character varying(255),
+ custom_manufacturer character varying(50),
+ custom_model character varying(50),
+ custom_owner character varying(50),
+ custom_civil_code character varying(50),
+ custom_block character varying(50),
+ custom_address character varying(50),
+ custom_parental integer,
+ custom_parent_id character varying(50),
+ custom_safety_way integer,
+ custom_register_way integer,
+ custom_cert_num character varying(50),
+ custom_certifiable integer,
+ custom_err_code integer,
+ custom_end_time character varying(50),
+ custom_secrecy integer,
+ custom_ip_address character varying(50),
+ custom_port integer,
+ custom_password character varying(255),
+ custom_status character varying(50),
+ custom_longitude double precision,
+ custom_latitude double precision,
+ custom_ptz_type integer,
+ custom_position_type integer,
+ custom_room_type integer,
+ custom_use_type integer,
+ custom_supply_light_type integer,
+ custom_direction_type integer,
+ custom_resolution character varying(255),
+ custom_business_group_id character varying(255),
+ custom_download_speed character varying(255),
+ custom_svc_space_support_mod integer,
+ custom_svc_time_support_mode integer,
+ constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, device_channel_id),
+ constraint uk_platform_gb_channel_device_id unique (custom_device_id)
+);
+
+drop table IF EXISTS wvp_platform_group;
+create table IF NOT EXISTS wvp_platform_group
+(
+ id serial primary key,
+ platform_id integer,
+ group_id integer,
+ constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
+);
+
+drop table IF EXISTS wvp_platform_region;
+create table IF NOT EXISTS wvp_platform_region
+(
+ id serial primary key,
+ platform_id integer,
+ region_id integer,
+ constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
+);
+
+drop table IF EXISTS wvp_stream_proxy;
+create table IF NOT EXISTS wvp_stream_proxy
+(
+ id serial primary key,
+ type character varying(50),
+ app character varying(255),
+ stream character varying(255),
+ src_url character varying(255),
+ timeout integer,
+ ffmpeg_cmd_key character varying(255),
+ rtsp_type character varying(50),
+ media_server_id character varying(50),
+ enable_audio bool default false,
+ enable_mp4 bool default false,
+ pulling bool default false,
+ enable bool default false,
+ enable_remove_none_reader bool default false,
+ create_time character varying(50),
+ name character varying(255),
+ update_time character varying(50),
+ stream_key character varying(255),
+ server_id character varying(50),
+ enable_disable_none_reader bool default false,
+ relates_media_server_id character varying(50),
+ constraint uk_stream_proxy_app_stream unique (app, stream)
+);
+
+drop table IF EXISTS wvp_stream_push;
+create table IF NOT EXISTS wvp_stream_push
+(
+ id serial primary key,
+ app character varying(255),
+ stream character varying(255),
+ create_time character varying(50),
+ media_server_id character varying(50),
+ server_id character varying(50),
+ push_time character varying(50),
+ status bool default false,
+ update_time character varying(50),
+ pushing bool default false,
+ self bool default false,
+ start_offline_push bool default true,
+ constraint uk_stream_push_app_stream unique (app, stream)
+);
+
+drop table IF EXISTS wvp_cloud_record;
+create table IF NOT EXISTS wvp_cloud_record
+(
+ id serial primary key,
+ app character varying(255),
+ stream character varying(255),
+ call_id character varying(255),
+ start_time bigint,
+ end_time bigint,
+ media_server_id character varying(50),
+ server_id character varying(50),
+ file_name character varying(255),
+ folder character varying(500),
+ file_path character varying(500),
+ collect bool default false,
+ file_size bigint,
+ time_len double precision
+);
+
+drop table IF EXISTS wvp_user;
+create table IF NOT EXISTS wvp_user
+(
+ id serial primary key,
+ username character varying(255),
+ password character varying(255),
+ role_id integer,
+ create_time character varying(50),
+ update_time character varying(50),
+ push_key character varying(50),
+ constraint uk_user_username unique (username)
+);
+
+drop table IF EXISTS wvp_user_role;
+create table IF NOT EXISTS wvp_user_role
+(
+ id serial primary key,
+ name character varying(50),
+ authority character varying(50),
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
+
+drop table IF EXISTS wvp_user_api_key;
+create table IF NOT EXISTS wvp_user_api_key
+(
+ id serial primary key,
+ user_id bigint,
+ app character varying(255),
+ api_key text,
+ expired_at bigint,
+ remark character varying(255),
+ enable bool default true,
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
+
+/*初始数据*/
+INSERT INTO wvp_user
+VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 1, '2021-04-13 14:14:57', '2021-04-13 14:14:57',
+ '3e80d1762a324d5b0ff636e0bd16f1e3');
+INSERT INTO wvp_user_role
+VALUES (1, 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57');
+
+drop table IF EXISTS wvp_common_group;
+create table IF NOT EXISTS wvp_common_group
+(
+ id serial primary key,
+ device_id varchar(50) NOT NULL,
+ name varchar(255) NOT NULL,
+ parent_id int,
+ parent_device_id varchar(50) DEFAULT NULL,
+ business_group varchar(50) NOT NULL,
+ create_time varchar(50) NOT NULL,
+ update_time varchar(50) NOT NULL,
+ civil_code varchar(50) default null,
+ constraint uk_common_group_device_platform unique (device_id)
+);
+
+drop table IF EXISTS wvp_common_region;
+create table IF NOT EXISTS wvp_common_region
+(
+ id serial primary key,
+ device_id varchar(50) NOT NULL,
+ name varchar(255) NOT NULL,
+ parent_id int,
+ parent_device_id varchar(50) DEFAULT NULL,
+ create_time varchar(50) NOT NULL,
+ update_time varchar(50) NOT NULL,
+ constraint uk_common_region_device_id unique (device_id)
+);
+
+drop table IF EXISTS wvp_record_plan;
+create table IF NOT EXISTS wvp_record_plan
+(
+ id serial primary key,
+ snap bool default false,
+ name varchar(255) NOT NULL,
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
+drop table IF EXISTS wvp_record_plan_item;
+create table IF NOT EXISTS wvp_record_plan_item
+(
+ id serial primary key,
+ start int,
+ stop int,
+ week_day int,
+ plan_id int,
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
diff --git a/数据库/2.7.4/初始化-postgresql-kingbase-2.7.4.sql b/数据库/2.7.4/初始化-postgresql-kingbase-2.7.4.sql
new file mode 100644
index 000000000..524fdbeff
--- /dev/null
+++ b/数据库/2.7.4/初始化-postgresql-kingbase-2.7.4.sql
@@ -0,0 +1,467 @@
+/*建表*/
+drop table IF EXISTS wvp_device;
+create table IF NOT EXISTS wvp_device
+(
+ id serial primary key,
+ device_id character varying(50) not null,
+ name character varying(255),
+ manufacturer character varying(255),
+ model character varying(255),
+ firmware character varying(255),
+ transport character varying(50),
+ stream_mode character varying(50),
+ on_line bool default false,
+ register_time character varying(50),
+ keepalive_time character varying(50),
+ ip character varying(50),
+ create_time character varying(50),
+ update_time character varying(50),
+ port integer,
+ expires integer,
+ subscribe_cycle_for_catalog integer DEFAULT 0,
+ subscribe_cycle_for_mobile_position integer DEFAULT 0,
+ mobile_position_submission_interval integer DEFAULT 5,
+ subscribe_cycle_for_alarm integer DEFAULT 0,
+ host_address character varying(50),
+ charset character varying(50),
+ ssrc_check bool default false,
+ geo_coord_sys character varying(50),
+ media_server_id character varying(50) default 'auto',
+ custom_name character varying(255),
+ sdp_ip character varying(50),
+ local_ip character varying(50),
+ password character varying(255),
+ as_message_channel bool default false,
+ heart_beat_interval integer,
+ heart_beat_count integer,
+ position_capability integer,
+ broadcast_push_after_ack bool default false,
+ server_id character varying(50),
+ constraint uk_device_device unique (device_id)
+);
+
+drop table IF EXISTS wvp_device_alarm;
+create table IF NOT EXISTS wvp_device_alarm
+(
+ id serial primary key,
+ device_id character varying(50) not null,
+ channel_id character varying(50) not null,
+ alarm_priority character varying(50),
+ alarm_method character varying(50),
+ alarm_time character varying(50),
+ alarm_description character varying(255),
+ longitude double precision,
+ latitude double precision,
+ alarm_type character varying(50),
+ create_time character varying(50) not null
+);
+
+drop table IF EXISTS wvp_device_mobile_position;
+create table IF NOT EXISTS wvp_device_mobile_position
+(
+ id serial primary key,
+ device_id character varying(50) not null,
+ channel_id character varying(50) not null,
+ device_name character varying(255),
+ time character varying(50),
+ longitude double precision,
+ latitude double precision,
+ altitude double precision,
+ speed double precision,
+ direction double precision,
+ report_source character varying(50),
+ create_time character varying(50)
+);
+
+drop table IF EXISTS wvp_device_channel;
+create table IF NOT EXISTS wvp_device_channel
+(
+ id serial primary key,
+ device_id character varying(50),
+ name character varying(255),
+ manufacturer character varying(50),
+ model character varying(50),
+ owner character varying(50),
+ civil_code character varying(50),
+ block character varying(50),
+ address character varying(50),
+ parental integer,
+ parent_id character varying(50),
+ safety_way integer,
+ register_way integer,
+ cert_num character varying(50),
+ certifiable integer,
+ err_code integer,
+ end_time character varying(50),
+ secrecy integer,
+ ip_address character varying(50),
+ port integer,
+ password character varying(255),
+ status character varying(50),
+ longitude double precision,
+ latitude double precision,
+ ptz_type integer,
+ position_type integer,
+ room_type integer,
+ use_type integer,
+ supply_light_type integer,
+ direction_type integer,
+ resolution character varying(255),
+ business_group_id character varying(255),
+ download_speed character varying(255),
+ svc_space_support_mod integer,
+ svc_time_support_mode integer,
+ create_time character varying(50) not null,
+ update_time character varying(50) not null,
+ sub_count integer,
+ stream_id character varying(255),
+ has_audio bool default false,
+ gps_time character varying(50),
+ stream_identification character varying(50),
+ channel_type int default 0 not null,
+ gb_device_id character varying(50),
+ gb_name character varying(255),
+ gb_manufacturer character varying(255),
+ gb_model character varying(255),
+ gb_owner character varying(255),
+ gb_civil_code character varying(255),
+ gb_block character varying(255),
+ gb_address character varying(255),
+ gb_parental integer,
+ gb_parent_id character varying(255),
+ gb_safety_way integer,
+ gb_register_way integer,
+ gb_cert_num character varying(50),
+ gb_certifiable integer,
+ gb_err_code integer,
+ gb_end_time character varying(50),
+ gb_secrecy integer,
+ gb_ip_address character varying(50),
+ gb_port integer,
+ gb_password character varying(50),
+ gb_status character varying(50),
+ gb_longitude double precision,
+ gb_latitude double precision,
+ gb_business_group_id character varying(50),
+ gb_ptz_type integer,
+ gb_position_type integer,
+ gb_room_type integer,
+ gb_use_type integer,
+ gb_supply_light_type integer,
+ gb_direction_type integer,
+ gb_resolution character varying(255),
+ gb_download_speed character varying(255),
+ gb_svc_space_support_mod integer,
+ gb_svc_time_support_mode integer,
+ record_plan_id integer,
+ data_type integer not null,
+ data_device_id integer not null,
+ gps_speed double precision,
+ gps_altitude double precision,
+ gps_direction double precision,
+ constraint uk_wvp_unique_channel unique (gb_device_id)
+);
+
+CREATE INDEX idx_data_type ON wvp_device_channel (data_type);
+CREATE INDEX idx_data_device_id ON wvp_device_channel (data_device_id);
+
+drop table IF EXISTS wvp_media_server;
+create table IF NOT EXISTS wvp_media_server
+(
+ id character varying(255) primary key,
+ ip character varying(50),
+ hook_ip character varying(50),
+ sdp_ip character varying(50),
+ stream_ip character varying(50),
+ http_port integer,
+ http_ssl_port integer,
+ rtmp_port integer,
+ rtmp_ssl_port integer,
+ rtp_proxy_port integer,
+ rtsp_port integer,
+ rtsp_ssl_port integer,
+ flv_port integer,
+ flv_ssl_port integer,
+ ws_flv_port integer,
+ ws_flv_ssl_port integer,
+ auto_config bool default false,
+ secret character varying(50),
+ type character varying(50) default 'zlm',
+ rtp_enable bool default false,
+ rtp_port_range character varying(50),
+ send_rtp_port_range character varying(50),
+ record_assist_port integer,
+ default_server bool default false,
+ create_time character varying(50),
+ update_time character varying(50),
+ hook_alive_interval integer,
+ record_path character varying(255),
+ record_day integer default 7,
+ transcode_suffix character varying(255),
+ server_id character varying(50),
+ constraint uk_media_server_unique_ip_http_port unique (ip, http_port, server_id)
+);
+
+drop table IF EXISTS wvp_platform;
+create table IF NOT EXISTS wvp_platform
+(
+ id serial primary key,
+ enable bool default false,
+ name character varying(255),
+ server_gb_id character varying(50),
+ server_gb_domain character varying(50),
+ server_ip character varying(50),
+ server_port integer,
+ device_gb_id character varying(50),
+ device_ip character varying(50),
+ device_port character varying(50),
+ username character varying(255),
+ password character varying(50),
+ expires character varying(50),
+ keep_timeout character varying(50),
+ transport character varying(50),
+ civil_code character varying(50),
+ manufacturer character varying(255),
+ model character varying(255),
+ address character varying(255),
+ character_set character varying(50),
+ ptz bool default false,
+ rtcp bool default false,
+ status bool default false,
+ catalog_group integer,
+ register_way integer,
+ secrecy integer,
+ create_time character varying(50),
+ update_time character varying(50),
+ as_message_channel bool default false,
+ catalog_with_platform integer default 1,
+ catalog_with_group integer default 1,
+ catalog_with_region integer default 1,
+ auto_push_channel bool default true,
+ send_stream_ip character varying(50),
+ server_id character varying(50),
+ constraint uk_platform_unique_server_gb_id unique (server_gb_id)
+);
+
+drop table IF EXISTS wvp_platform_channel;
+create table IF NOT EXISTS wvp_platform_channel
+(
+ id serial primary key,
+ platform_id integer,
+ device_channel_id integer,
+ custom_device_id character varying(50),
+ custom_name character varying(255),
+ custom_manufacturer character varying(50),
+ custom_model character varying(50),
+ custom_owner character varying(50),
+ custom_civil_code character varying(50),
+ custom_block character varying(50),
+ custom_address character varying(50),
+ custom_parental integer,
+ custom_parent_id character varying(50),
+ custom_safety_way integer,
+ custom_register_way integer,
+ custom_cert_num character varying(50),
+ custom_certifiable integer,
+ custom_err_code integer,
+ custom_end_time character varying(50),
+ custom_secrecy integer,
+ custom_ip_address character varying(50),
+ custom_port integer,
+ custom_password character varying(255),
+ custom_status character varying(50),
+ custom_longitude double precision,
+ custom_latitude double precision,
+ custom_ptz_type integer,
+ custom_position_type integer,
+ custom_room_type integer,
+ custom_use_type integer,
+ custom_supply_light_type integer,
+ custom_direction_type integer,
+ custom_resolution character varying(255),
+ custom_business_group_id character varying(255),
+ custom_download_speed character varying(255),
+ custom_svc_space_support_mod integer,
+ custom_svc_time_support_mode integer,
+ constraint uk_platform_gb_channel_platform_id_catalog_id_device_channel_id unique (platform_id, device_channel_id),
+ constraint uk_platform_gb_channel_device_id unique (custom_device_id)
+);
+
+drop table IF EXISTS wvp_platform_group;
+create table IF NOT EXISTS wvp_platform_group
+(
+ id serial primary key,
+ platform_id integer,
+ group_id integer,
+ constraint uk_wvp_platform_group_platform_id_group_id unique (platform_id, group_id)
+);
+
+drop table IF EXISTS wvp_platform_region;
+create table IF NOT EXISTS wvp_platform_region
+(
+ id serial primary key,
+ platform_id integer,
+ region_id integer,
+ constraint uk_wvp_platform_region_platform_id_group_id unique (platform_id, region_id)
+);
+
+drop table IF EXISTS wvp_stream_proxy;
+create table IF NOT EXISTS wvp_stream_proxy
+(
+ id serial primary key,
+ type character varying(50),
+ app character varying(255),
+ stream character varying(255),
+ src_url character varying(255),
+ timeout integer,
+ ffmpeg_cmd_key character varying(255),
+ rtsp_type character varying(50),
+ media_server_id character varying(50),
+ enable_audio bool default false,
+ enable_mp4 bool default false,
+ pulling bool default false,
+ enable bool default false,
+ enable_remove_none_reader bool default false,
+ create_time character varying(50),
+ name character varying(255),
+ update_time character varying(50),
+ stream_key character varying(255),
+ server_id character varying(50),
+ enable_disable_none_reader bool default false,
+ relates_media_server_id character varying(50),
+ constraint uk_stream_proxy_app_stream unique (app, stream)
+);
+
+drop table IF EXISTS wvp_stream_push;
+create table IF NOT EXISTS wvp_stream_push
+(
+ id serial primary key,
+ app character varying(255),
+ stream character varying(255),
+ create_time character varying(50),
+ media_server_id character varying(50),
+ server_id character varying(50),
+ push_time character varying(50),
+ status bool default false,
+ update_time character varying(50),
+ pushing bool default false,
+ self bool default false,
+ start_offline_push bool default true,
+ constraint uk_stream_push_app_stream unique (app, stream)
+);
+
+drop table IF EXISTS wvp_cloud_record;
+create table IF NOT EXISTS wvp_cloud_record
+(
+ id serial primary key,
+ app character varying(255),
+ stream character varying(255),
+ call_id character varying(255),
+ start_time int8,
+ end_time int8,
+ media_server_id character varying(50),
+ server_id character varying(50),
+ file_name character varying(255),
+ folder character varying(500),
+ file_path character varying(500),
+ collect bool default false,
+ file_size int8,
+ time_len double precision
+);
+
+drop table IF EXISTS wvp_user;
+create table IF NOT EXISTS wvp_user
+(
+ id serial primary key,
+ username character varying(255),
+ password character varying(255),
+ role_id integer,
+ create_time character varying(50),
+ update_time character varying(50),
+ push_key character varying(50),
+ constraint uk_user_username unique (username)
+);
+
+drop table IF EXISTS wvp_user_role;
+create table IF NOT EXISTS wvp_user_role
+(
+ id serial primary key,
+ name character varying(50),
+ authority character varying(50),
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
+
+drop table IF EXISTS wvp_user_api_key;
+create table IF NOT EXISTS wvp_user_api_key
+(
+ id serial primary key,
+ user_id int8,
+ app character varying(255),
+ api_key text,
+ expired_at int8,
+ remark character varying(255),
+ enable bool default true,
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
+
+/*初始数据*/
+INSERT INTO wvp_user
+VALUES (1, 'admin', '21232f297a57a5a743894a0e4a801fc3', 1, '2021-04-13 14:14:57', '2021-04-13 14:14:57',
+ '3e80d1762a324d5b0ff636e0bd16f1e3');
+INSERT INTO wvp_user_role
+VALUES (1, 'admin', '0', '2021-04-13 14:14:57', '2021-04-13 14:14:57');
+
+drop table IF EXISTS wvp_common_group;
+create table IF NOT EXISTS wvp_common_group
+(
+ id serial primary key,
+ device_id varchar(50) NOT NULL,
+ name varchar(255) NOT NULL,
+ parent_id int,
+ parent_device_id varchar(50) DEFAULT NULL,
+ business_group varchar(50) NOT NULL,
+ create_time varchar(50) NOT NULL,
+ update_time varchar(50) NOT NULL,
+ civil_code varchar(50) default null,
+ constraint uk_common_group_device_platform unique (device_id)
+);
+
+drop table IF EXISTS wvp_common_region;
+create table IF NOT EXISTS wvp_common_region
+(
+ id serial primary key,
+ device_id varchar(50) NOT NULL,
+ name varchar(255) NOT NULL,
+ parent_id int,
+ parent_device_id varchar(50) DEFAULT NULL,
+ create_time varchar(50) NOT NULL,
+ update_time varchar(50) NOT NULL,
+ constraint uk_common_region_device_id unique (device_id)
+);
+
+drop table IF EXISTS wvp_record_plan;
+create table IF NOT EXISTS wvp_record_plan
+(
+ id serial primary key,
+ snap bool default false,
+ name varchar(255) NOT NULL,
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
+drop table IF EXISTS wvp_record_plan_item;
+create table IF NOT EXISTS wvp_record_plan_item
+(
+ id serial primary key,
+ "start" int,
+ stop int,
+ week_day int,
+ plan_id int,
+ create_time character varying(50),
+ update_time character varying(50)
+);
+
From 9da6e874fb0c2e241925902e0d868af8547b0745 Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Mon, 26 May 2025 09:54:33 +0800
Subject: [PATCH 02/10] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=B6=E9=97=B4?=
=?UTF-8?q?=E6=88=B3=E5=8F=91=E9=80=81=E9=94=99=E8=AF=AF=E5=AF=BC=E8=87=B4?=
=?UTF-8?q?seek=E5=A4=B1=E8=B4=A5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
index 7a766eb56..9808cf65e 100755
--- a/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
+++ b/src/main/java/com/genersoft/iot/vmp/media/zlm/ZLMRESTfulUtils.java
@@ -12,6 +12,7 @@ import org.springframework.stereotype.Component;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.math.BigDecimal;
import java.net.ConnectException;
import java.net.SocketTimeoutException;
import java.util.HashMap;
@@ -442,8 +443,10 @@ public class ZLMRESTfulUtils {
param.put("vhost", "__defaultVhost__");
param.put("app", app);
param.put("stream", stream);
- param.put("stamp", stamp);
+ BigDecimal bigDecimal = new BigDecimal(stamp);
+ param.put("stamp", bigDecimal);
param.put("schema", schema);
+ System.out.println(bigDecimal);
return sendPost(mediaServer, "seekRecordStamp",param, null);
}
}
From b1ff1ef54c311c0308f7897e7d9e818da59b28fc Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Mon, 26 May 2025 10:16:52 +0800
Subject: [PATCH 03/10] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=A2=E9=98=85?=
=?UTF-8?q?=E6=97=A5=E5=BF=97?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../event/request/impl/SubscribeRequestProcessor.java | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
index f59091ccd..e2793d5f2 100755
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/impl/SubscribeRequestProcessor.java
@@ -70,6 +70,7 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
return;
}
String cmd = XmlUtil.getText(rootElement, "CmdType");
+ log.info("[收到订阅请求] 类型: {}", cmd);
if (CmdType.MOBILE_POSITION.equals(cmd)) {
processNotifyMobilePosition(request, rootElement);
// } else if (CmdType.ALARM.equals(cmd)) {
@@ -157,12 +158,14 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
private void processNotifyCatalogList(SIPRequest request, Element rootElement) throws SipException {
if (request == null) {
+ log.info("[处理目录订阅] 发现request为NUll。已忽略");
return;
}
String platformId = SipUtils.getUserIdFromFromHeader(request);
String deviceId = XmlUtil.getText(rootElement, "DeviceID");
Platform platform = platformService.queryPlatformByServerGBId(platformId);
if (platform == null){
+ log.info("[处理目录订阅] 未找到平台 {}。已忽略", platformId);
return;
}
@@ -186,12 +189,6 @@ public class SubscribeRequestProcessor extends SIPRequestProcessorParent impleme
SubscribeInfo subscribeInfo = SubscribeInfo.getInstance(response, platformId, expires,
(EventHeader)request.getHeader(EventHeader.NAME));
- if (subscribeInfo.getExpires() > 0) {
- subscribeHolder.putCatalogSubscribe(platformId, subscribeInfo);
- }else if (subscribeInfo.getExpires() == 0) {
- subscribeHolder.removeCatalogSubscribe(platformId);
- }
-
if (subscribeInfo.getExpires() == 0) {
subscribeHolder.removeCatalogSubscribe(platformId);
}else {
From cb2ade744ec0fe54a25e660b2d532ba207c16f5f Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Mon, 26 May 2025 11:02:21 +0800
Subject: [PATCH 04/10] =?UTF-8?q?=E6=9B=B4=E6=96=B0README?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/README.md b/README.md
index e44a673c7..1bd09a39b 100644
--- a/README.md
+++ b/README.md
@@ -132,6 +132,7 @@ https://gitee.com/pan648540858/wvp-GB28181-pro.git
- [X] 支持ONVIF协议,设备检索,支持点播,云台控制,国标级联点播,自动点播等。
- [X] 支持部标1078+808协议,支持点播,云台控制,录像回放,位置上报,自动点播等。
- [X] 支持国标28181-2022协议,支持巡航轨迹查询,PTZ精准控制,存储卡格式化,设备软件升级,OSD配置,h265+aac,支持辅码流,录像倒放等。
+- [X] 支持国网B接口协议。支持注册,获取资源,预览等
# 授权协议
From dd9c64d7a8db1e11b77b08a3ab5f96cc9808c3b1 Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Mon, 26 May 2025 18:04:02 +0800
Subject: [PATCH 05/10] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E4=BF=9D=E6=8C=81=E4=BB=BB=E5=8A=A1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 10 ++---
.../iot/vmp/common/DeviceStatusCallback.java | 7 +++
.../task/deviceStatus/DeviceStatusTask.java | 43 +++++++++++++++++++
.../deviceStatus/DeviceStatusTaskInfo.java | 17 ++++++++
4 files changed, 72 insertions(+), 5 deletions(-)
create mode 100644 src/main/java/com/genersoft/iot/vmp/common/DeviceStatusCallback.java
create mode 100644 src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTask.java
create mode 100644 src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskInfo.java
diff --git a/README.md b/README.md
index 1bd09a39b..6e2348b26 100644
--- a/README.md
+++ b/README.md
@@ -16,11 +16,11 @@ WEB VIDEO PLATFORM是一个基于GB28181-2016标准实现的开箱即用的网
前端页面基于vue-admin-template构建 [https://github.com/PanJiaChen/vue-admin-template?tab=readme-ov-file](https://github.com/PanJiaChen/vue-admin-template?tab=readme-ov-file)
# 应用场景:
-支持浏览器无插件播放摄像头视频。
-支持国标设备(摄像机、平台、NVR等)设备接入
-支持rtsp, rtmp,直播设备设备接入,充分利旧。
-支持国标级联。多平台级联。跨网视频预览。
-支持跨网网闸平台互联。
+- 支持浏览器无插件播放摄像头视频。
+- 支持国标设备(摄像机、平台、NVR等)设备接入
+- 支持rtsp, rtmp,直播设备设备接入,充分利旧。
+- 支持国标级联。多平台级联。跨网视频预览。
+- 支持跨网网闸平台互联。
# 文档
diff --git a/src/main/java/com/genersoft/iot/vmp/common/DeviceStatusCallback.java b/src/main/java/com/genersoft/iot/vmp/common/DeviceStatusCallback.java
new file mode 100644
index 000000000..9ee9b9edb
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/common/DeviceStatusCallback.java
@@ -0,0 +1,7 @@
+package com.genersoft.iot.vmp.common;
+
+import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
+
+public interface DeviceStatusCallback {
+ public void run(String deviceId, SipTransactionInfo transactionInfo);
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTask.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTask.java
new file mode 100644
index 000000000..f08150899
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTask.java
@@ -0,0 +1,43 @@
+package com.genersoft.iot.vmp.gb28181.task.deviceStatus;
+
+import com.genersoft.iot.vmp.common.DeviceStatusCallback;
+import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
+import lombok.Data;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.concurrent.Delayed;
+import java.util.concurrent.TimeUnit;
+
+@Data
+public abstract class DeviceStatusTask implements Delayed {
+
+ private String deviceId;
+
+ private DeviceStatusCallback callback;
+
+ private SipTransactionInfo transactionInfo;
+
+ /**
+ * 超时时间(单位: 毫秒)
+ */
+ private long delayTime;
+
+ public abstract void expired();
+
+ @Override
+ public long getDelay(@NotNull TimeUnit unit) {
+ return unit.convert(delayTime - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
+ }
+
+ @Override
+ public int compareTo(@NotNull Delayed o) {
+ return (int) (this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS));
+ }
+
+ public DeviceStatusTaskInfo getInfo(){
+ DeviceStatusTaskInfo taskInfo = new DeviceStatusTaskInfo();
+ taskInfo.setTransactionInfo(transactionInfo);
+ taskInfo.setDeviceId(deviceId);
+ return taskInfo;
+ }
+}
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskInfo.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskInfo.java
new file mode 100644
index 000000000..2e6380436
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskInfo.java
@@ -0,0 +1,17 @@
+package com.genersoft.iot.vmp.gb28181.task.deviceStatus;
+
+import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
+import lombok.Data;
+
+@Data
+public class DeviceStatusTaskInfo{
+
+ private String deviceId;
+
+ private SipTransactionInfo transactionInfo;
+
+ /**
+ * 过期时间
+ */
+ private long expireTime;
+}
From 3ad5d4336879c2f82420944b91cf2152ce306ee2 Mon Sep 17 00:00:00 2001
From: lin <648540858@qq.com>
Date: Tue, 27 May 2025 18:24:07 +0800
Subject: [PATCH 06/10] =?UTF-8?q?=E4=B8=B4=E6=97=B6=E6=8F=90=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../deviceStatus/DeviceStatusTaskRunner.java | 137 ++++++++++++++++++
1 file changed, 137 insertions(+)
create mode 100644 src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskRunner.java
diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskRunner.java b/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskRunner.java
new file mode 100644
index 000000000..604383a58
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/task/deviceStatus/DeviceStatusTaskRunner.java
@@ -0,0 +1,137 @@
+package com.genersoft.iot.vmp.gb28181.task.deviceStatus;
+
+import com.genersoft.iot.vmp.conf.UserSetting;
+import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
+import com.genersoft.iot.vmp.gb28181.task.deviceSubscribe.SubscribeTask;
+import com.genersoft.iot.vmp.gb28181.task.deviceSubscribe.SubscribeTaskInfo;
+import com.genersoft.iot.vmp.utils.redis.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.DelayQueue;
+import java.util.concurrent.TimeUnit;
+
+@Slf4j
+@Component
+public class DeviceStatusTaskRunner {
+
+ private final Map subscribes = new ConcurrentHashMap<>();
+
+ private final DelayQueue delayQueue = new DelayQueue<>();
+
+ @Autowired
+ private RedisTemplate