From 43becf998cc21112c104a806892e5df47ad14ce3 Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 21 Apr 2026 11:10:27 +0800 Subject: [PATCH] =?UTF-8?q?refactor(video):=20projectId=20=E4=B8=A4?= =?UTF-8?q?=E7=BA=A7=E9=9A=94=E7=A6=BB=E9=80=82=E9=85=8D=20+=20SQL=20?= =?UTF-8?q?=E8=9E=8D=E5=90=88=E5=88=B0=20video.sql?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit SQL 融合: - sql/mysql/video.sql 作为最终主脚本(26 张表),整合用户改造版表前缀 video_ 与 cherry-pick 版的框架字段(tenant_id/creator/updater/deleted/datetime) - 新增 video_ai_camera_snapshot(AI 抓拍)、video_common_gb_channel(国标通道抽象) - 删除旧的 aiot-video.sql(被 video.sql 替代) - 17 张业务表 + 6 张 AI 业务表加 project_id 列(项目级隔离) - 2 张字典表(video_ai_algorithm/video_ai_algo_template)仅租户级 - video_media_server 全局共享,无多租户字段 代码改造: - 21 个 DO 的 @TableName 从 wvp_* 改为 video_* - 16 个业务 DO 改继承 ProjectBaseDO(StreamProxy/StreamPush 通过 CommonGBChannel 自动获得),字典 DO 保留 TenantBaseDO, MediaServer 保留 BaseDO - 28 个 Mapper/Provider 的 SQL 表名全部更新为 video_* - application.yaml 新增 tenant.ignore-project-tables 配置, 列出 video_media_server/video_ai_algorithm/video_ai_algo_template 不参与项目隔离 - 编译通过(mvn compile BUILD SUCCESS) Co-Authored-By: Claude Opus 4.7 (1M context) --- sql/mysql/{aiot-video.sql => video.sql} | 1157 +++++++++-------- .../module/video/aiot/bean/AiAlert.java | 6 +- .../video/aiot/bean/AiAlgoTemplate.java | 2 +- .../module/video/aiot/bean/AiAlgorithm.java | 2 +- .../module/video/aiot/bean/AiConfigLog.java | 6 +- .../video/aiot/bean/AiConfigSnapshot.java | 6 +- .../module/video/aiot/bean/AiEdgeDevice.java | 6 +- .../viewsh/module/video/aiot/bean/AiRoi.java | 6 +- .../module/video/aiot/bean/AiRoiAlgoBind.java | 6 +- .../module/video/aiot/dao/AiAlertMapper.java | 20 +- .../video/aiot/dao/AiAlgoTemplateMapper.java | 2 +- .../video/aiot/dao/AiAlgorithmMapper.java | 2 +- .../aiot/dao/AiCameraSnapshotMapper.java | 4 +- .../video/aiot/dao/AiConfigLogMapper.java | 2 +- .../aiot/dao/AiConfigSnapshotMapper.java | 6 +- .../video/aiot/dao/AiEdgeDeviceMapper.java | 14 +- .../video/aiot/dao/AiRoiAlgoBindMapper.java | 8 +- .../module/video/aiot/dao/AiRoiMapper.java | 18 +- .../service/impl/AiConfigServiceImpl.java | 2 +- .../impl/AiRedisConfigServiceImpl.java | 2 +- .../video/gb28181/bean/CommonGBChannel.java | 6 +- .../module/video/gb28181/bean/Device.java | 6 +- .../video/gb28181/bean/DeviceAlarm.java | 6 +- .../module/video/gb28181/bean/Group.java | 6 +- .../video/gb28181/bean/MobilePosition.java | 6 +- .../module/video/gb28181/bean/Platform.java | 6 +- .../module/video/gb28181/bean/Region.java | 6 +- .../gb28181/dao/CommonGBChannelMapper.java | 64 +- .../video/gb28181/dao/DeviceAlarmMapper.java | 6 +- .../gb28181/dao/DeviceChannelMapper.java | 62 +- .../video/gb28181/dao/DeviceMapper.java | 48 +- .../dao/DeviceMobilePositionMapper.java | 8 +- .../module/video/gb28181/dao/GroupMapper.java | 114 +- .../gb28181/dao/PlatformChannelMapper.java | 108 +- .../video/gb28181/dao/PlatformMapper.java | 32 +- .../video/gb28181/dao/RegionMapper.java | 60 +- .../gb28181/dao/provider/ChannelProvider.java | 28 +- .../dao/provider/DeviceChannelProvider.java | 4 +- .../module/video/media/bean/MediaServer.java | 2 +- .../video/service/bean/CloudRecordItem.java | 6 +- .../module/video/service/bean/RecordPlan.java | 6 +- .../video/service/bean/RecordPlanItem.java | 6 +- .../dao/CloudRecordServiceMapper.java | 30 +- .../video/storager/dao/MediaServerMapper.java | 20 +- .../video/storager/dao/RecordPlanMapper.java | 18 +- .../video/streamProxy/bean/StreamProxy.java | 2 +- .../streamProxy/dao/StreamProxyMapper.java | 28 +- .../dao/provider/StreamProxyProvider.java | 4 +- .../video/streamPush/bean/StreamPush.java | 2 +- .../streamPush/dao/StreamPushMapper.java | 50 +- .../src/main/resources/application.yaml | 8 +- 51 files changed, 1067 insertions(+), 968 deletions(-) rename sql/mysql/{aiot-video.sql => video.sql} (73%) diff --git a/sql/mysql/aiot-video.sql b/sql/mysql/video.sql similarity index 73% rename from sql/mysql/aiot-video.sql rename to sql/mysql/video.sql index 5eb515a4..cf215762 100644 --- a/sql/mysql/aiot-video.sql +++ b/sql/mysql/video.sql @@ -1,28 +1,46 @@ /* - * aiot-video 模块数据库初始化脚本 - * - * 基于 WVP-Platform 2.7.4 + AIoT 扩展表 - * 适配 viewsh 框架规范: - * - 业务表:含 tenant_id, creator, create_time, updater, update_time, deleted - * - 共享表(wvp_media_server):无 tenant_id,不含 deleted - * - 唯一索引包含 deleted 字段以支持逻辑删除 - * - 时间字段统一改为 datetime 类型 - * - WVP 原 serial 改为 bigint AUTO_INCREMENT - * - 不含 wvp_user / wvp_user_role / wvp_user_api_key(由 viewsh-module-system 管理) - * - 不含 wvp_jt_terminal / wvp_jt_channel(JT1078 Phase 2 迁移) - * - * 维护者:AI Assistant - * 生成日期:2026-04-05 - */ + Viewsh AIoT Platform — viewsh-module-video 建表脚本(最终融合版) + + 融合来源: + - aiot-video.sql(框架字段标准写法:datetime、bigint、creator/updater/deleted/tenant_id) + - video.sql(业务字段:AI扩展表字段、video_ 表前缀) + + 规范: + - 业务数据表(23张):ProjectBaseDO,含 project_id + tenant_id + BaseDO 字段 + - 租户字典表(2张):TenantBaseDO,含 tenant_id + BaseDO 字段,不含 project_id + - 全局共享表(1张):BaseDO,只含 creator/create_time/updater/update_time,不含 tenant_id/deleted + - 唯一索引包含 deleted 字段支持逻辑删除后重新添加 + - 时间字段统一 datetime,WVP 原 varchar(50) 时间字段移除 + - 不含 wvp_user / wvp_user_role / wvp_user_api_key(由 viewsh-module-system 管理) + - 不含 wvp_jt_terminal / wvp_jt_channel(JT1078 Phase 2 迁移) + + 表清单(26张): + 业务数据(17张):video_device, video_device_channel, video_device_alarm, + video_device_mobile_position, video_platform, video_platform_channel, + video_platform_group, video_platform_region, video_common_gb_channel, + video_common_group, video_common_region, video_stream_proxy, video_stream_push, + video_cloud_record, video_record_plan, video_record_plan_item, video_ai_alert + AI 业务数据(6张):video_ai_edge_device, video_ai_roi, video_ai_roi_algo_bind, + video_ai_config_log, video_ai_config_snapshot, video_ai_camera_snapshot + 租户字典(2张):video_ai_algorithm, video_ai_algo_template + 全局共享(1张):video_media_server + + 维护者:AI Assistant + 生成日期:2026-04-20 +*/ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; +-- ============================================================================ +-- 一、GB/T 28181 设备与通道 +-- ============================================================================ + -- ---------------------------- --- 国标设备基础信息 +-- 国标设备基础信息(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_device`; -CREATE TABLE `wvp_device` ( +DROP TABLE IF EXISTS `video_device`; +CREATE TABLE `video_device` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `device_id` varchar(50) NOT NULL COMMENT '国标设备编号', `name` varchar(255) NULL COMMENT '设备名称', @@ -62,66 +80,16 @@ CREATE TABLE `wvp_device` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '设备ID唯一(含逻辑删除)' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='国标设备基础信息'; -- ---------------------------- --- 设备报警记录 +-- 设备通道信息(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_device_alarm`; -CREATE TABLE `wvp_device_alarm` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `device_id` varchar(50) NOT NULL COMMENT '国标设备ID', - `channel_id` varchar(50) NOT NULL COMMENT '报警关联的通道ID', - `alarm_priority` varchar(50) NULL COMMENT '报警级别', - `alarm_method` varchar(50) NULL COMMENT '报警方式(视频/语音等)', - `alarm_time` varchar(50) NULL COMMENT '报警发生时间', - `alarm_description` varchar(255) NULL COMMENT '报警描述', - `longitude` double NULL COMMENT '报警经度', - `latitude` double NULL COMMENT '报警纬度', - `alarm_type` varchar(50) NULL COMMENT '报警类型', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据入库时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_device_id` (`device_id`) COMMENT '设备ID索引' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备报警记录'; - --- ---------------------------- --- 移动位置订阅上报数据 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_device_mobile_position`; -CREATE TABLE `wvp_device_mobile_position` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `device_id` varchar(50) NOT NULL COMMENT '设备ID', - `channel_id` varchar(50) NOT NULL COMMENT '通道ID', - `device_name` varchar(255) NULL COMMENT '设备名称', - `time` varchar(50) NULL COMMENT '上报时间', - `longitude` double NULL COMMENT '经度', - `latitude` double NULL COMMENT '纬度', - `altitude` double NULL COMMENT '海拔', - `speed` double NULL COMMENT '速度', - `direction` double NULL COMMENT '方向角', - `report_source` varchar(50) NULL COMMENT '上报来源', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_device_channel` (`device_id`, `channel_id`) COMMENT '设备+通道索引' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='移动位置订阅上报数据'; - --- ---------------------------- --- 设备通道信息 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_device_channel`; -CREATE TABLE `wvp_device_channel` ( +DROP TABLE IF EXISTS `video_device_channel`; +CREATE TABLE `video_device_channel` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `device_id` varchar(50) NULL COMMENT '所属设备ID', `name` varchar(255) NULL COMMENT '通道名称', @@ -211,6 +179,7 @@ CREATE TABLE `wvp_device_channel` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_gb_device_id_deleted` (`gb_device_id`, `deleted`) COMMENT 'GB通道ID唯一(含逻辑删除)', INDEX `idx_data_type` (`data_type`), @@ -218,323 +187,63 @@ CREATE TABLE `wvp_device_channel` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备通道信息'; -- ---------------------------- --- 媒体服务器节点配置(共享表,不含 tenant_id/deleted) +-- 设备报警记录(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_media_server`; -CREATE TABLE `wvp_media_server` ( - `id` varchar(255) NOT NULL COMMENT '媒体服务器ID', - `ip` varchar(50) NULL COMMENT '服务器IP', - `hook_ip` varchar(50) NULL COMMENT 'hook回调IP', - `sdp_ip` varchar(50) NULL COMMENT 'SDP中使用的IP', - `stream_ip` varchar(50) NULL COMMENT '推流使用的IP', - `http_port` int NULL COMMENT 'HTTP端口', - `http_ssl_port` int NULL COMMENT 'HTTPS端口', - `rtmp_port` int NULL COMMENT 'RTMP端口', - `rtmp_ssl_port` int NULL COMMENT 'RTMPS端口', - `rtp_proxy_port` int NULL COMMENT 'RTP代理端口', - `rtsp_port` int NULL COMMENT 'RTSP端口', - `rtsp_ssl_port` int NULL COMMENT 'RTSPS端口', - `flv_port` int NULL COMMENT 'FLV端口', - `flv_ssl_port` int NULL COMMENT 'FLV HTTPS端口', - `mp4_port` int NULL COMMENT 'MP4点播端口', - `mp4_ssl_port` int NULL COMMENT 'MP4 HTTPS端口', - `ws_flv_port` int NULL COMMENT 'WS-FLV端口', - `ws_flv_ssl_port` int NULL COMMENT 'WS-FLV HTTPS端口', - `jtt_proxy_port` int NULL COMMENT 'JT/T代理端口', - `auto_config` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否自动配置', - `secret` varchar(50) NULL COMMENT 'ZLM校验密钥', - `type` varchar(50) NOT NULL DEFAULT 'zlm' COMMENT '节点类型', - `rtp_enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否开启RTP', - `rtp_port_range` varchar(50) NULL COMMENT 'RTP端口范围', - `send_rtp_port_range` varchar(50) NULL COMMENT '发送RTP端口范围', - `record_assist_port` int NULL COMMENT '录像辅助端口', - `default_server` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否默认节点', - `hook_alive_interval` int NULL COMMENT 'hook心跳间隔', - `record_path` varchar(255) NULL COMMENT '录像目录', - `record_day` int NOT NULL DEFAULT 7 COMMENT '录像保留天数', - `transcode_suffix` varchar(255) NULL COMMENT '转码指令后缀', - `server_id` varchar(50) NULL COMMENT '对应信令服务器ID', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', +DROP TABLE IF EXISTS `video_device_alarm`; +CREATE TABLE `video_device_alarm` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `device_id` varchar(50) NOT NULL COMMENT '国标设备ID', + `channel_id` varchar(50) NOT NULL COMMENT '报警关联的通道ID', + `alarm_priority` varchar(50) NULL COMMENT '报警级别', + `alarm_method` varchar(50) NULL COMMENT '报警方式(视频/语音等)', + `alarm_time` varchar(50) NULL COMMENT '报警发生时间', + `alarm_description` varchar(255) NULL COMMENT '报警描述', + `longitude` double NULL COMMENT '报警经度', + `latitude` double NULL COMMENT '报警纬度', + `alarm_type` varchar(50) NULL COMMENT '报警类型', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据入库时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_ip_http_port_server_id` (`ip`, `http_port`, `server_id`) COMMENT '节点IP+端口+服务器唯一' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体服务器节点配置(不含租户隔离)'; + INDEX `idx_device_id` (`device_id`) COMMENT '设备ID索引' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='设备报警记录'; -- ---------------------------- --- 上级国标平台注册信息 +-- 移动位置订阅上报数据(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_platform`; -CREATE TABLE `wvp_platform` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用该平台注册', - `name` varchar(255) NULL COMMENT '平台名称', - `server_gb_id` varchar(50) NULL COMMENT '上级平台国标编码', - `server_gb_domain` varchar(50) NULL COMMENT '上级平台域编码', - `server_ip` varchar(50) NULL COMMENT '上级平台IP', - `server_port` int NULL COMMENT '上级平台注册端口', - `device_gb_id` varchar(50) NULL COMMENT '本平台向上注册的国标编码', - `device_ip` varchar(50) NULL COMMENT '本平台信令IP', - `device_port` varchar(50) NULL COMMENT '本平台信令端口', - `username` varchar(255) NULL COMMENT '注册用户名', - `password` varchar(50) NULL COMMENT '注册密码', - `expires` varchar(50) NULL COMMENT '注册有效期', - `keep_timeout` varchar(50) NULL COMMENT '心跳超时时间', - `transport` varchar(50) NULL COMMENT '传输协议(UDP/TCP)', - `civil_code` varchar(50) NULL COMMENT '行政区划代码', - `manufacturer` varchar(255) NULL COMMENT '厂商', - `model` varchar(255) NULL COMMENT '型号', - `address` varchar(255) NULL COMMENT '地址', - `character_set` varchar(50) NULL COMMENT '字符集', - `ptz` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否支持PTZ', - `rtcp` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否开启RTCP', - `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '注册状态', - `catalog_group` int NULL COMMENT '目录分组方式', - `register_way` int NULL COMMENT '注册方式', - `secrecy` int NULL COMMENT '保密级别', - `as_message_channel` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否作为消息通道', - `catalog_with_platform` int NOT NULL DEFAULT 1 COMMENT '是否推送平台目录', - `catalog_with_group` int NOT NULL DEFAULT 1 COMMENT '是否推送分组目录', - `catalog_with_region` int NOT NULL DEFAULT 1 COMMENT '是否推送区域目录', - `auto_push_channel` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否自动推送通道', - `send_stream_ip` varchar(50) NULL COMMENT '推流时使用的IP', - `server_id` varchar(50) NULL COMMENT '对应信令服务器ID', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', +DROP TABLE IF EXISTS `video_device_mobile_position`; +CREATE TABLE `video_device_mobile_position` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `device_id` varchar(50) NOT NULL COMMENT '设备ID', + `channel_id` varchar(50) NOT NULL COMMENT '通道ID', + `device_name` varchar(255) NULL COMMENT '设备名称', + `time` varchar(50) NULL COMMENT '上报时间', + `longitude` double NULL COMMENT '经度', + `latitude` double NULL COMMENT '纬度', + `altitude` double NULL COMMENT '海拔', + `speed` double NULL COMMENT '速度', + `direction` double NULL COMMENT '方向角', + `report_source` varchar(50) NULL COMMENT '上报来源', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '入库时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_server_gb_id_deleted` (`server_gb_id`, `deleted`) COMMENT '上级平台国标编码唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='上级国标平台注册信息'; + INDEX `idx_device_channel` (`device_id`, `channel_id`) COMMENT '设备+通道索引' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='移动位置订阅上报数据'; -- ---------------------------- --- 国标平台通道映射关系 +-- 通用 GB 通道统一视图(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_platform_channel`; -CREATE TABLE `wvp_platform_channel` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `platform_id` bigint NULL COMMENT '平台ID', - `device_channel_id` bigint NULL COMMENT '本地通道表主键', - `custom_device_id` varchar(50) NULL COMMENT '自定义国标编码', - `custom_name` varchar(255) NULL COMMENT '自定义名称', - `custom_manufacturer` varchar(50) NULL COMMENT '自定义厂商', - `custom_model` varchar(50) NULL COMMENT '自定义型号', - `custom_owner` varchar(50) NULL COMMENT '自定义归属', - `custom_civil_code` varchar(50) NULL COMMENT '自定义行政区划', - `custom_block` varchar(50) NULL COMMENT '自定义区域', - `custom_address` varchar(50) NULL COMMENT '自定义地址', - `custom_parental` int NULL COMMENT '自定义父/子标识', - `custom_parent_id` varchar(50) NULL COMMENT '自定义父节点', - `custom_safety_way` int NULL COMMENT '自定义安全防范', - `custom_register_way` int NULL COMMENT '自定义注册方式', - `custom_cert_num` varchar(50) NULL COMMENT '自定义证书编号', - `custom_certifiable` int NULL COMMENT '自定义可认证标志', - `custom_err_code` int NULL COMMENT '自定义错误码', - `custom_end_time` varchar(50) NULL COMMENT '自定义截止时间', - `custom_secrecy` int NULL COMMENT '自定义保密级别', - `custom_ip_address` varchar(50) NULL COMMENT '自定义IP', - `custom_port` int NULL COMMENT '自定义端口', - `custom_password` varchar(255) NULL COMMENT '自定义密码', - `custom_status` varchar(50) NULL COMMENT '自定义状态', - `custom_longitude` double NULL COMMENT '自定义经度', - `custom_latitude` double NULL COMMENT '自定义纬度', - `custom_ptz_type` int NULL COMMENT '自定义云台类型', - `custom_position_type` int NULL COMMENT '自定义点位类型', - `custom_room_type` int NULL COMMENT '自定义房间类型', - `custom_use_type` int NULL COMMENT '自定义用途', - `custom_supply_light_type` int NULL COMMENT '自定义补光', - `custom_direction_type` int NULL COMMENT '自定义朝向', - `custom_resolution` varchar(255) NULL COMMENT '自定义分辨率', - `custom_business_group_id` varchar(255) NULL COMMENT '自定义业务分组', - `custom_download_speed` varchar(255) NULL COMMENT '自定义码流速率', - `custom_svc_space_support_mod` int NULL COMMENT '自定义空域SVC', - `custom_svc_time_support_mode` int NULL COMMENT '自定义时域SVC', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_platform_channel_deleted` (`platform_id`, `device_channel_id`, `deleted`) COMMENT '平台+通道唯一(含逻辑删除)', - UNIQUE KEY `uk_custom_device_id_deleted` (`custom_device_id`, `deleted`) COMMENT '自定义设备ID唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='国标平台通道映射关系'; - --- ---------------------------- --- 平台与分组关联 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_platform_group`; -CREATE TABLE `wvp_platform_group` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `platform_id` bigint NULL COMMENT '平台ID', - `group_id` bigint NULL COMMENT '分组ID', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_platform_group_deleted` (`platform_id`, `group_id`, `deleted`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台与分组关联'; - --- ---------------------------- --- 平台与区域关联 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_platform_region`; -CREATE TABLE `wvp_platform_region` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `platform_id` bigint NULL COMMENT '平台ID', - `region_id` bigint NULL COMMENT '区域ID', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_platform_region_deleted` (`platform_id`, `region_id`, `deleted`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台与区域关联'; - --- ---------------------------- --- 拉流代理/转推配置 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_stream_proxy`; -CREATE TABLE `wvp_stream_proxy` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `type` varchar(50) NULL COMMENT '代理类型(拉流/推流)', - `app` varchar(255) NULL COMMENT '应用名', - `stream` varchar(255) NULL COMMENT '流ID', - `src_url` varchar(255) NULL COMMENT '源地址', - `timeout` int NULL COMMENT '拉流超时时间', - `ffmpeg_cmd_key` varchar(255) NULL COMMENT 'FFmpeg命令模板键', - `rtsp_type` varchar(50) NULL COMMENT 'RTSP拉流方式', - `media_server_id` varchar(50) NULL COMMENT '指定媒体服务器ID', - `enable_audio` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用音频', - `enable_mp4` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否录制MP4', - `pulling` tinyint(1) NOT NULL DEFAULT 0 COMMENT '当前是否在拉流', - `enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用该代理', - `name` varchar(255) NULL COMMENT '代理名称', - `stream_key` varchar(255) NULL COMMENT '唯一流标识', - `server_id` varchar(50) NULL COMMENT '信令服务器ID', - `enable_disable_none_reader` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否无人观看时自动停流', - `relates_media_server_id` varchar(50) NULL COMMENT '关联的媒体服务器ID', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_app_stream_deleted` (`app`, `stream`, `deleted`) COMMENT '应用+流ID唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='拉流代理/转推配置'; - --- ---------------------------- --- 推流会话记录 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_stream_push`; -CREATE TABLE `wvp_stream_push` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `app` varchar(255) NULL COMMENT '应用名', - `stream` varchar(255) NULL COMMENT '流ID', - `media_server_id` varchar(50) NULL COMMENT '推流所在媒体服务器', - `server_id` varchar(50) NULL COMMENT '信令服务器ID', - `push_time` varchar(50) NULL COMMENT '推流开始时间', - `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '推流状态', - `pushing` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否正在推流', - `self` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否本地发起', - `start_offline_push` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否离线后自动重推', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_app_stream_deleted` (`app`, `stream`, `deleted`) COMMENT '应用+流ID唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推流会话记录'; - --- ---------------------------- --- 云端录像记录 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_cloud_record`; -CREATE TABLE `wvp_cloud_record` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `app` varchar(255) NULL COMMENT '应用名', - `stream` varchar(255) NULL COMMENT '流ID', - `call_id` varchar(255) NULL COMMENT '会话ID', - `start_time` bigint NULL COMMENT '录像开始时间', - `end_time` bigint NULL COMMENT '录像结束时间', - `media_server_id` varchar(50) NULL COMMENT '媒体服务器ID', - `server_id` varchar(50) NULL COMMENT '信令服务器ID', - `file_name` varchar(255) NULL COMMENT '文件名', - `folder` varchar(500) NULL COMMENT '目录', - `file_path` varchar(500) NULL COMMENT '完整路径', - `collect` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否收藏', - `file_size` bigint NULL COMMENT '文件大小', - `time_len` double NULL COMMENT '时长', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_app_stream` (`app`, `stream`) COMMENT '应用+流ID索引', - INDEX `idx_call_id` (`call_id`) COMMENT '会话ID索引' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='云端录像记录'; - --- ---------------------------- --- 通用分组表(行业/组织结构) --- ---------------------------- -DROP TABLE IF EXISTS `wvp_common_group`; -CREATE TABLE `wvp_common_group` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `device_id` varchar(50) NOT NULL COMMENT '分组对应的平台或设备ID', - `name` varchar(255) NOT NULL COMMENT '分组名称', - `parent_id` bigint NULL COMMENT '父级分组ID', - `parent_device_id` varchar(50) NULL COMMENT '父级分组对应的设备ID', - `business_group` varchar(50) NOT NULL COMMENT '业务分组编码', - `civil_code` varchar(50) NULL COMMENT '行政区划代码', - `alias` varchar(255) NULL COMMENT '别名', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '分组设备ID唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用分组表'; - --- ---------------------------- --- 通用行政区域表 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_common_region`; -CREATE TABLE `wvp_common_region` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `device_id` varchar(50) NOT NULL COMMENT '区域对应的平台或设备ID', - `name` varchar(255) NOT NULL COMMENT '区域名称', - `parent_id` bigint NULL COMMENT '父级区域ID', - `parent_device_id` varchar(50) NULL COMMENT '父级区域的设备ID', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '区域设备ID唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用行政区域表'; - --- ---------------------------- --- 通用 GB 通道视图表(跨来源统一) --- ---------------------------- -DROP TABLE IF EXISTS `wvp_common_gb_channel`; -CREATE TABLE `wvp_common_gb_channel` ( +DROP TABLE IF EXISTS `video_common_gb_channel`; +CREATE TABLE `video_common_gb_channel` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `gb_device_id` varchar(50) NULL COMMENT 'GB通道编号', `name` varchar(255) NULL COMMENT '通道名称', @@ -583,6 +292,7 @@ CREATE TABLE `wvp_common_gb_channel` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_gb_device_id_deleted` (`gb_device_id`, `deleted`) COMMENT 'GB通道编号唯一(含逻辑删除)', INDEX `idx_data_type` (`data_type`), @@ -590,10 +300,350 @@ CREATE TABLE `wvp_common_gb_channel` ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用 GB 通道统一视图'; -- ---------------------------- --- 录像计划基础信息 +-- 通用分组表(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_record_plan`; -CREATE TABLE `wvp_record_plan` ( +DROP TABLE IF EXISTS `video_common_group`; +CREATE TABLE `video_common_group` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `device_id` varchar(50) NOT NULL COMMENT '分组对应的平台或设备ID', + `name` varchar(255) NOT NULL COMMENT '分组名称', + `parent_id` bigint NULL COMMENT '父级分组ID', + `parent_device_id` varchar(50) NULL COMMENT '父级分组对应的设备ID', + `business_group` varchar(50) NOT NULL COMMENT '业务分组编码', + `civil_code` varchar(50) NULL COMMENT '行政区划代码', + `alias` varchar(255) NULL COMMENT '别名', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '分组设备ID唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用分组表'; + +-- ---------------------------- +-- 通用行政区域表(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_common_region`; +CREATE TABLE `video_common_region` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `device_id` varchar(50) NOT NULL COMMENT '区域对应的平台或设备ID', + `name` varchar(255) NOT NULL COMMENT '区域名称', + `parent_id` bigint NULL COMMENT '父级区域ID', + `parent_device_id` varchar(50) NULL COMMENT '父级区域的设备ID', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '区域设备ID唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用行政区域表'; + +-- ============================================================================ +-- 二、上级平台级联 +-- ============================================================================ + +-- ---------------------------- +-- 上级国标平台注册信息(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_platform`; +CREATE TABLE `video_platform` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用该平台注册', + `name` varchar(255) NULL COMMENT '平台名称', + `server_gb_id` varchar(50) NULL COMMENT '上级平台国标编码', + `server_gb_domain` varchar(50) NULL COMMENT '上级平台域编码', + `server_ip` varchar(50) NULL COMMENT '上级平台IP', + `server_port` int NULL COMMENT '上级平台注册端口', + `device_gb_id` varchar(50) NULL COMMENT '本平台向上注册的国标编码', + `device_ip` varchar(50) NULL COMMENT '本平台信令IP', + `device_port` varchar(50) NULL COMMENT '本平台信令端口', + `username` varchar(255) NULL COMMENT '注册用户名', + `password` varchar(50) NULL COMMENT '注册密码', + `expires` varchar(50) NULL COMMENT '注册有效期', + `keep_timeout` varchar(50) NULL COMMENT '心跳超时时间', + `transport` varchar(50) NULL COMMENT '传输协议(UDP/TCP)', + `civil_code` varchar(50) NULL COMMENT '行政区划代码', + `manufacturer` varchar(255) NULL COMMENT '厂商', + `model` varchar(255) NULL COMMENT '型号', + `address` varchar(255) NULL COMMENT '地址', + `character_set` varchar(50) NULL COMMENT '字符集', + `ptz` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否支持PTZ', + `rtcp` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否开启RTCP', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '注册状态', + `catalog_group` int NULL COMMENT '目录分组方式', + `register_way` int NULL COMMENT '注册方式', + `secrecy` int NULL COMMENT '保密级别', + `as_message_channel` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否作为消息通道', + `catalog_with_platform` int NOT NULL DEFAULT 1 COMMENT '是否推送平台目录', + `catalog_with_group` int NOT NULL DEFAULT 1 COMMENT '是否推送分组目录', + `catalog_with_region` int NOT NULL DEFAULT 1 COMMENT '是否推送区域目录', + `auto_push_channel` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否自动推送通道', + `send_stream_ip` varchar(50) NULL COMMENT '推流时使用的IP', + `server_id` varchar(50) NULL COMMENT '对应信令服务器ID', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_server_gb_id_deleted` (`server_gb_id`, `deleted`) COMMENT '上级平台国标编码唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='上级国标平台注册信息'; + +-- ---------------------------- +-- 国标平台通道映射关系(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_platform_channel`; +CREATE TABLE `video_platform_channel` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `platform_id` bigint NULL COMMENT '平台ID', + `device_channel_id` bigint NULL COMMENT '本地通道表主键', + `custom_device_id` varchar(50) NULL COMMENT '自定义国标编码', + `custom_name` varchar(255) NULL COMMENT '自定义名称', + `custom_manufacturer` varchar(50) NULL COMMENT '自定义厂商', + `custom_model` varchar(50) NULL COMMENT '自定义型号', + `custom_owner` varchar(50) NULL COMMENT '自定义归属', + `custom_civil_code` varchar(50) NULL COMMENT '自定义行政区划', + `custom_block` varchar(50) NULL COMMENT '自定义区域', + `custom_address` varchar(50) NULL COMMENT '自定义地址', + `custom_parental` int NULL COMMENT '自定义父/子标识', + `custom_parent_id` varchar(50) NULL COMMENT '自定义父节点', + `custom_safety_way` int NULL COMMENT '自定义安全防范', + `custom_register_way` int NULL COMMENT '自定义注册方式', + `custom_cert_num` varchar(50) NULL COMMENT '自定义证书编号', + `custom_certifiable` int NULL COMMENT '自定义可认证标志', + `custom_err_code` int NULL COMMENT '自定义错误码', + `custom_end_time` varchar(50) NULL COMMENT '自定义截止时间', + `custom_secrecy` int NULL COMMENT '自定义保密级别', + `custom_ip_address` varchar(50) NULL COMMENT '自定义IP', + `custom_port` int NULL COMMENT '自定义端口', + `custom_password` varchar(255) NULL COMMENT '自定义密码', + `custom_status` varchar(50) NULL COMMENT '自定义状态', + `custom_longitude` double NULL COMMENT '自定义经度', + `custom_latitude` double NULL COMMENT '自定义纬度', + `custom_ptz_type` int NULL COMMENT '自定义云台类型', + `custom_position_type` int NULL COMMENT '自定义点位类型', + `custom_room_type` int NULL COMMENT '自定义房间类型', + `custom_use_type` int NULL COMMENT '自定义用途', + `custom_supply_light_type` int NULL COMMENT '自定义补光', + `custom_direction_type` int NULL COMMENT '自定义朝向', + `custom_resolution` varchar(255) NULL COMMENT '自定义分辨率', + `custom_business_group_id` varchar(255) NULL COMMENT '自定义业务分组', + `custom_download_speed` varchar(255) NULL COMMENT '自定义码流速率', + `custom_svc_space_support_mod` int NULL COMMENT '自定义空域SVC', + `custom_svc_time_support_mode` int NULL COMMENT '自定义时域SVC', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_platform_channel_deleted` (`platform_id`, `device_channel_id`, `deleted`) COMMENT '平台+通道唯一(含逻辑删除)', + UNIQUE KEY `uk_custom_device_id_deleted` (`custom_device_id`, `deleted`) COMMENT '自定义设备ID唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='国标平台通道映射关系'; + +-- ---------------------------- +-- 平台与分组关联(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_platform_group`; +CREATE TABLE `video_platform_group` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `platform_id` bigint NULL COMMENT '平台ID', + `group_id` bigint NULL COMMENT '分组ID', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_platform_group_deleted` (`platform_id`, `group_id`, `deleted`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台与分组关联'; + +-- ---------------------------- +-- 平台与区域关联(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_platform_region`; +CREATE TABLE `video_platform_region` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `platform_id` bigint NULL COMMENT '平台ID', + `region_id` bigint NULL COMMENT '区域ID', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_platform_region_deleted` (`platform_id`, `region_id`, `deleted`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='平台与区域关联'; + +-- ============================================================================ +-- 三、媒体服务器(全局共享,BaseDO,无 tenant_id / project_id / deleted) +-- ============================================================================ + +DROP TABLE IF EXISTS `video_media_server`; +CREATE TABLE `video_media_server` ( + `id` varchar(255) NOT NULL COMMENT '媒体服务器ID', + `ip` varchar(50) NULL COMMENT '服务器IP', + `hook_ip` varchar(50) NULL COMMENT 'hook回调IP', + `sdp_ip` varchar(50) NULL COMMENT 'SDP中使用的IP', + `stream_ip` varchar(50) NULL COMMENT '推流使用的IP', + `http_port` int NULL COMMENT 'HTTP端口', + `http_ssl_port` int NULL COMMENT 'HTTPS端口', + `rtmp_port` int NULL COMMENT 'RTMP端口', + `rtmp_ssl_port` int NULL COMMENT 'RTMPS端口', + `rtp_proxy_port` int NULL COMMENT 'RTP代理端口', + `rtsp_port` int NULL COMMENT 'RTSP端口', + `rtsp_ssl_port` int NULL COMMENT 'RTSPS端口', + `flv_port` int NULL COMMENT 'FLV端口', + `flv_ssl_port` int NULL COMMENT 'FLV HTTPS端口', + `mp4_port` int NULL COMMENT 'MP4点播端口', + `mp4_ssl_port` int NULL COMMENT 'MP4 HTTPS端口', + `ws_flv_port` int NULL COMMENT 'WS-FLV端口', + `ws_flv_ssl_port` int NULL COMMENT 'WS-FLV HTTPS端口', + `jtt_proxy_port` int NULL COMMENT 'JT/T代理端口', + `auto_config` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否自动配置', + `secret` varchar(50) NULL COMMENT 'ZLM校验密钥', + `type` varchar(50) NOT NULL DEFAULT 'zlm' COMMENT '节点类型', + `rtp_enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否开启RTP', + `rtp_port_range` varchar(50) NULL COMMENT 'RTP端口范围', + `send_rtp_port_range` varchar(50) NULL COMMENT '发送RTP端口范围', + `record_assist_port` int NULL COMMENT '录像辅助端口', + `default_server` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否默认节点', + `hook_alive_interval` int NULL COMMENT 'hook心跳间隔', + `record_path` varchar(255) NULL COMMENT '录像目录', + `record_day` int NOT NULL DEFAULT 7 COMMENT '录像保留天数', + `transcode_suffix` varchar(255) NULL COMMENT '转码指令后缀', + `server_id` varchar(50) NULL COMMENT '对应信令服务器ID', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_ip_http_port_server_id` (`ip`, `http_port`, `server_id`) COMMENT '节点IP+端口+服务器唯一' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='媒体服务器节点配置(不含租户隔离)'; + +-- ============================================================================ +-- 四、流媒体 / 云录像 +-- ============================================================================ + +-- ---------------------------- +-- 拉流代理/转推配置(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_stream_proxy`; +CREATE TABLE `video_stream_proxy` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `type` varchar(50) NULL COMMENT '代理类型(拉流/推流)', + `app` varchar(255) NULL COMMENT '应用名', + `stream` varchar(255) NULL COMMENT '流ID', + `src_url` varchar(255) NULL COMMENT '源地址', + `timeout` int NULL COMMENT '拉流超时时间', + `ffmpeg_cmd_key` varchar(255) NULL COMMENT 'FFmpeg命令模板键', + `rtsp_type` varchar(50) NULL COMMENT 'RTSP拉流方式', + `media_server_id` varchar(50) NULL COMMENT '指定媒体服务器ID', + `enable_audio` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用音频', + `enable_mp4` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否录制MP4', + `pulling` tinyint(1) NOT NULL DEFAULT 0 COMMENT '当前是否在拉流', + `enable` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否启用该代理', + `name` varchar(255) NULL COMMENT '代理名称', + `stream_key` varchar(255) NULL COMMENT '唯一流标识', + `server_id` varchar(50) NULL COMMENT '信令服务器ID', + `enable_disable_none_reader` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否无人观看时自动停流', + `relates_media_server_id` varchar(50) NULL COMMENT '关联的媒体服务器ID', + `camera_code` varchar(64) NOT NULL DEFAULT '' COMMENT '摄像头编码', + `camera_name` varchar(100) NULL COMMENT '摄像头名称', + `area_id` bigint NULL COMMENT '所属区域ID', + `edge_device_id` varchar(64) NULL COMMENT '绑定的边缘设备ID', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_app_stream_deleted` (`app`, `stream`, `deleted`) COMMENT '应用+流ID唯一(含逻辑删除)', + UNIQUE KEY `uk_camera_code_deleted` (`camera_code`, `deleted`) COMMENT '摄像头编码唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='拉流代理/转推配置'; + +-- ---------------------------- +-- 推流会话记录(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_stream_push`; +CREATE TABLE `video_stream_push` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `app` varchar(255) NULL COMMENT '应用名', + `stream` varchar(255) NULL COMMENT '流ID', + `media_server_id` varchar(50) NULL COMMENT '推流所在媒体服务器', + `server_id` varchar(50) NULL COMMENT '信令服务器ID', + `push_time` varchar(50) NULL COMMENT '推流开始时间', + `status` tinyint(1) NOT NULL DEFAULT 0 COMMENT '推流状态', + `pushing` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否正在推流', + `self` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否本地发起', + `start_offline_push` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否离线后自动重推', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_app_stream_deleted` (`app`, `stream`, `deleted`) COMMENT '应用+流ID唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='推流会话记录'; + +-- ---------------------------- +-- 云端录像记录(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_cloud_record`; +CREATE TABLE `video_cloud_record` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `app` varchar(255) NULL COMMENT '应用名', + `stream` varchar(255) NULL COMMENT '流ID', + `call_id` varchar(255) NULL COMMENT '会话ID', + `start_time` bigint NULL COMMENT '录像开始时间', + `end_time` bigint NULL COMMENT '录像结束时间', + `media_server_id` varchar(50) NULL COMMENT '媒体服务器ID', + `server_id` varchar(50) NULL COMMENT '信令服务器ID', + `file_name` varchar(255) NULL COMMENT '文件名', + `folder` varchar(500) NULL COMMENT '目录', + `file_path` varchar(500) NULL COMMENT '完整路径', + `collect` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否收藏', + `file_size` bigint NULL COMMENT '文件大小', + `time_len` double NULL COMMENT '时长', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_app_stream` (`app`, `stream`) COMMENT '应用+流ID索引', + INDEX `idx_call_id` (`call_id`) COMMENT '会话ID索引' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='云端录像记录'; + +-- ============================================================================ +-- 五、录像计划 +-- ============================================================================ + +-- ---------------------------- +-- 录像计划基础信息(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_record_plan`; +CREATE TABLE `video_record_plan` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `snap` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否抓图计划', `name` varchar(255) NOT NULL COMMENT '计划名称', @@ -603,14 +653,15 @@ CREATE TABLE `wvp_record_plan` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='录像计划基础信息'; -- ---------------------------- --- 录像计划条目 +-- 录像计划条目(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_record_plan_item`; -CREATE TABLE `wvp_record_plan_item` ( +DROP TABLE IF EXISTS `video_record_plan_item`; +CREATE TABLE `video_record_plan_item` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `start` int NULL COMMENT '开始时间(分钟)', `stop` int NULL COMMENT '结束时间(分钟)', @@ -622,121 +673,143 @@ CREATE TABLE `wvp_record_plan_item` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_plan_id` (`plan_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='录像计划条目'; --- ============================================================ --- AIoT 智能视频分析扩展表 --- ============================================================ +-- ============================================================================ +-- 六、AI 智能视频分析 +-- ============================================================================ -- ---------------------------- --- ROI 区域配置 +-- AI 告警记录(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_roi`; -CREATE TABLE `wvp_ai_roi` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `roi_id` varchar(50) NOT NULL COMMENT 'UUID,与FastAPI端同步用', - `camera_id` varchar(50) NOT NULL COMMENT '通道国标编号', - `channel_db_id` bigint NULL COMMENT 'WVP通道表ID', - `device_id` varchar(50) NULL COMMENT '设备国标编号', - `name` varchar(100) NULL COMMENT 'ROI名称', - `roi_type` varchar(20) NOT NULL DEFAULT 'rectangle' COMMENT '形状:rectangle/polygon', - `coordinates` text NOT NULL COMMENT 'JSON归一化坐标', - `color` varchar(20) NULL DEFAULT '#FF0000' COMMENT '显示颜色', - `priority` int NOT NULL DEFAULT 0 COMMENT '优先级', - `enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '启用状态', - `extra_params` text NULL COMMENT '扩展参数JSON', - `description` varchar(500) NULL COMMENT '描述', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', +DROP TABLE IF EXISTS `video_ai_alert`; +CREATE TABLE `video_ai_alert` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `alert_id` varchar(128) NOT NULL COMMENT '告警唯一ID', + `camera_id` varchar(64) NOT NULL COMMENT '摄像头ID(通道国标编号)', + `roi_id` varchar(64) NOT NULL COMMENT 'ROI 区域ID', + `bind_id` varchar(64) NULL COMMENT '绑定ID', + `alert_type` varchar(50) NOT NULL COMMENT '告警类型(leave_post/intrusion/crowd_detection)', + `target_class` varchar(50) NULL COMMENT '目标类别', + `confidence` double NULL COMMENT '置信度', + `bbox` varchar(255) NULL COMMENT 'JSON: [x1,y1,x2,y2]', + `message` text NULL COMMENT '告警消息', + `image_path` varchar(255) NULL COMMENT '告警图片路径', + `duration_minutes` double NULL COMMENT '持续时长(分钟)', + `extra_data` text NULL COMMENT 'JSON 扩展', + `received_at` varchar(50) NOT NULL COMMENT '接收时间', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_alert_id_deleted` (`alert_id`, `deleted`) COMMENT '告警UUID唯一(含逻辑删除)', + INDEX `idx_camera_id` (`camera_id`), + INDEX `idx_alert_type` (`alert_type`), + INDEX `idx_received_at` (`received_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 告警记录'; + +-- ---------------------------- +-- AI 边缘设备状态(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_ai_edge_device`; +CREATE TABLE `video_ai_edge_device` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `device_id` varchar(64) NOT NULL COMMENT '设备唯一ID', + `status` varchar(20) NOT NULL DEFAULT 'offline' COMMENT '状态:online/offline', + `last_heartbeat` varchar(50) NULL COMMENT '最后心跳时间', + `uptime_seconds` bigint NULL COMMENT '运行时长(秒)', + `frames_processed` bigint NULL COMMENT '已处理帧数', + `alerts_generated` bigint NULL COMMENT '已生成告警数', + `stream_stats` text NULL COMMENT '流统计 JSON', + `stream_count` int NULL COMMENT '活跃视频流数量', + `config_version` varchar(64) NULL COMMENT '当前配置版本', + `updated_at` varchar(50) NULL COMMENT '更新时间', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_device_id_deleted` (`device_id`, `deleted`) COMMENT '边缘设备ID唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 边缘设备状态'; + +-- ---------------------------- +-- ROI 区域配置(ProjectBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_ai_roi`; +CREATE TABLE `video_ai_roi` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `roi_id` varchar(50) NOT NULL COMMENT 'UUID,与 FastAPI 端同步用', + `camera_id` varchar(50) NOT NULL COMMENT '通道国标编号', + `channel_db_id` int NULL COMMENT '视频通道表 ID', + `device_id` varchar(50) NULL COMMENT '设备国标编号', + `name` varchar(100) NULL COMMENT 'ROI 名称', + `roi_type` varchar(20) NOT NULL DEFAULT 'rectangle' COMMENT '形状:rectangle/polygon', + `coordinates` text NOT NULL COMMENT '归一化坐标 JSON', + `color` varchar(20) NULL DEFAULT '#FF0000' COMMENT '显示颜色', + `priority` int NOT NULL DEFAULT 0 COMMENT '优先级', + `enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '启用状态', + `extra_params` text NULL COMMENT '扩展参数 JSON', + `description` varchar(500) NULL COMMENT '描述', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_roi_id_deleted` (`roi_id`, `deleted`) COMMENT 'ROI UUID唯一(含逻辑删除)', INDEX `idx_camera_id` (`camera_id`), INDEX `idx_device_id` (`device_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ROI区域配置'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI ROI 区域配置'; -- ---------------------------- --- 算法注册表 +-- ROI-算法绑定(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_algorithm`; -CREATE TABLE `wvp_ai_algorithm` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `algo_code` varchar(100) NOT NULL COMMENT '算法编码', - `algo_name` varchar(200) NULL COMMENT '算法名称', - `target_class` varchar(50) NULL COMMENT '目标类别', - `param_schema` text NULL COMMENT '参数模板JSON', - `description` varchar(500) NULL COMMENT '描述', - `is_active` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否可用', - `sync_time` varchar(50) NULL COMMENT '最后同步时间', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_algo_code_deleted` (`algo_code`, `deleted`) COMMENT '算法编码唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='算法注册表'; - --- ---------------------------- --- 算法模板表 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_algo_template`; -CREATE TABLE `wvp_ai_algo_template` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `algo_code` varchar(100) NOT NULL COMMENT '算法编码', - `name` varchar(200) NOT NULL COMMENT '模板名称', - `params` text NULL COMMENT '预定义参数JSON', - `description` varchar(500) NULL COMMENT '描述', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', - PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_algo_code` (`algo_code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='算法模板表'; - --- ---------------------------- --- ROI-算法绑定 --- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_roi_algo_bind`; -CREATE TABLE `wvp_ai_roi_algo_bind` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `bind_id` varchar(50) NOT NULL COMMENT 'UUID,同步用', - `roi_id` varchar(50) NOT NULL COMMENT 'ROI的UUID', - `algo_code` varchar(100) NOT NULL COMMENT '算法编码', - `params` text NULL COMMENT '自定义参数JSON', - `priority` int NOT NULL DEFAULT 0 COMMENT '优先级', - `enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '启用状态', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', +DROP TABLE IF EXISTS `video_ai_roi_algo_bind`; +CREATE TABLE `video_ai_roi_algo_bind` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `bind_id` varchar(50) NOT NULL COMMENT 'UUID,同步用', + `roi_id` varchar(50) NOT NULL COMMENT 'ROI 的 UUID', + `algo_code` varchar(100) NOT NULL COMMENT '算法编码', + `params` text NULL COMMENT '自定义参数 JSON', + `priority` int NOT NULL DEFAULT 0 COMMENT '优先级', + `enabled` tinyint(1) NOT NULL DEFAULT 1 COMMENT '启用状态', + `template_id` varchar(64) NULL COMMENT '引用的模板 ID', + `param_override` text NULL COMMENT '覆盖模板的局部参数 JSON', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, UNIQUE KEY `uk_bind_id_deleted` (`bind_id`, `deleted`) COMMENT '绑定UUID唯一(含逻辑删除)', INDEX `idx_roi_id` (`roi_id`), INDEX `idx_algo_code` (`algo_code`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='ROI算法绑定'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI ROI-算法绑定'; -- ---------------------------- --- 配置变更日志 +-- 配置变更日志(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_config_log`; -CREATE TABLE `wvp_ai_config_log` ( +DROP TABLE IF EXISTS `video_ai_config_log`; +CREATE TABLE `video_ai_config_log` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `config_type` varchar(30) NOT NULL COMMENT '类型:ROI/ALGORITHM/BIND', `config_id` varchar(50) NOT NULL COMMENT '目标ID', - `old_value` text NULL COMMENT '变更前JSON', - `new_value` text NULL COMMENT '变更后JSON', + `old_value` text NULL COMMENT '变更前 JSON', + `new_value` text NULL COMMENT '变更后 JSON', `updated_by` varchar(100) NULL COMMENT '操作人', `updated_at` varchar(50) NULL COMMENT '操作时间', `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', @@ -745,75 +818,78 @@ CREATE TABLE `wvp_ai_config_log` ( `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, INDEX `idx_config_type` (`config_type`), INDEX `idx_config_id` (`config_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='配置变更日志'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 配置变更日志'; -- ---------------------------- --- 配置快照(下发前生成) +-- AI 配置版本快照(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_config_snapshot`; -CREATE TABLE `wvp_ai_config_snapshot` ( +DROP TABLE IF EXISTS `video_ai_config_snapshot`; +CREATE TABLE `video_ai_config_snapshot` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `camera_id` varchar(50) NOT NULL COMMENT '通道国标编号', - `snapshot` longtext NULL COMMENT '快照JSON(ROI+算法绑定组合)', - `version` varchar(50) NULL COMMENT '快照版本号', + `version` int NOT NULL COMMENT '自增版本号', + `scope_type` varchar(20) NOT NULL COMMENT 'CAMERA | ROI | BIND', + `scope_id` varchar(64) NOT NULL COMMENT 'camera_id / roi_id / bind_id', + `camera_id` varchar(64) NOT NULL COMMENT '所属摄像头', + `snapshot` longtext NOT NULL COMMENT '完整 JSON 快照', + `change_type` varchar(20) NOT NULL COMMENT 'CREATE | UPDATE | DELETE | ROLLBACK | PUSH', + `change_desc` varchar(255) NULL COMMENT '变更描述', + `created_by` varchar(64) NULL COMMENT '操作人', + `created_at` varchar(50) NOT NULL COMMENT '创建时间', `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, - INDEX `idx_camera_id` (`camera_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI配置快照'; + INDEX `idx_scope` (`scope_type`, `scope_id`), + INDEX `idx_camera` (`camera_id`), + INDEX `idx_version` (`scope_type`, `scope_id`, `version` DESC) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 配置版本快照'; -- ---------------------------- --- 边缘设备状态 +-- AI 摄像头截图持久化(ProjectBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_edge_device`; -CREATE TABLE `wvp_ai_edge_device` ( - `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `edge_id` varchar(100) NOT NULL COMMENT '边缘设备唯一标识', - `name` varchar(200) NULL COMMENT '设备名称', - `ip` varchar(50) NULL COMMENT '设备IP', - `status` varchar(20) NOT NULL DEFAULT 'offline' COMMENT '状态:online/offline', - `last_heartbeat` datetime NULL COMMENT '最近心跳时间', - `uptime_seconds` bigint NOT NULL DEFAULT 0 COMMENT '累计运行时长(秒)', - `frame_count` bigint NOT NULL DEFAULT 0 COMMENT '已处理帧数', - `alert_count` bigint NOT NULL DEFAULT 0 COMMENT '累计告警次数', - `extra_info` text NULL COMMENT '额外信息JSON', - `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', - `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', - `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', - `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', - `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', +DROP TABLE IF EXISTS `video_ai_camera_snapshot`; +CREATE TABLE `video_ai_camera_snapshot` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `camera_code` varchar(64) NOT NULL COMMENT '摄像头编码', + `cos_key` varchar(512) NOT NULL COMMENT 'COS 对象键(永久有效)', + `updated_at` datetime NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后更新时间', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + `project_id` bigint NOT NULL DEFAULT 0 COMMENT '项目编号', PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_edge_id_deleted` (`edge_id`, `deleted`) COMMENT '边缘设备ID唯一(含逻辑删除)' -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='边缘设备状态'; + UNIQUE KEY `uk_camera_code_deleted` (`camera_code`, `deleted`) COMMENT '摄像头编码唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 摄像头截图持久化'; + +-- ============================================================================ +-- 七、租户级字典(TenantBaseDO,无 project_id) +-- ============================================================================ -- ---------------------------- --- 告警记录 +-- AI 算法注册表(TenantBaseDO) -- ---------------------------- -DROP TABLE IF EXISTS `wvp_ai_alert`; -CREATE TABLE `wvp_ai_alert` ( +DROP TABLE IF EXISTS `video_ai_algorithm`; +CREATE TABLE `video_ai_algorithm` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', - `alert_id` varchar(50) NOT NULL COMMENT '告警UUID', - `camera_id` varchar(50) NOT NULL COMMENT '通道国标编号', - `camera_code` varchar(50) NULL COMMENT '摄像头自定义编号', - `roi_id` varchar(50) NULL COMMENT '触发告警的ROI UUID', `algo_code` varchar(100) NOT NULL COMMENT '算法编码', - `alert_type` varchar(50) NOT NULL COMMENT '告警类型', - `image_path` varchar(500) NULL COMMENT '告警图片COS路径', - `confidence` double NULL COMMENT '置信度(0-1)', - `start_time` datetime NULL COMMENT '告警开始时间', - `end_time` datetime NULL COMMENT '告警结束时间', - `duration_ms` bigint NOT NULL DEFAULT 0 COMMENT '持续时长(毫秒)', - `extra_data` text NULL COMMENT '额外数据JSON', - `resolved` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已处理', - `edge_device_id` varchar(100) NULL COMMENT '上报的边缘设备ID', + `algo_name` varchar(200) NULL COMMENT '算法名称', + `target_class` varchar(50) NULL COMMENT '目标类别', + `param_schema` text NULL COMMENT '参数模板 JSON', + `global_params` text NULL COMMENT '用户自定义的全局默认参数 JSON', + `description` varchar(500) NULL COMMENT '描述', + `is_active` tinyint(1) NOT NULL DEFAULT 1 COMMENT '是否可用', + `sync_time` varchar(50) NULL COMMENT '最后同步时间', `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', @@ -821,18 +897,37 @@ CREATE TABLE `wvp_ai_alert` ( `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', PRIMARY KEY (`id`) USING BTREE, - UNIQUE KEY `uk_alert_id_deleted` (`alert_id`, `deleted`) COMMENT '告警UUID唯一(含逻辑删除)', - INDEX `idx_camera_id` (`camera_id`), - INDEX `idx_algo_code` (`algo_code`), - INDEX `idx_start_time` (`start_time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI告警记录'; + UNIQUE KEY `uk_algo_code_deleted` (`algo_code`, `deleted`) COMMENT '算法编码唯一(含逻辑删除)' +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 算法注册表'; --- ============================================================ +-- ---------------------------- +-- AI 算法参数模板(TenantBaseDO) +-- ---------------------------- +DROP TABLE IF EXISTS `video_ai_algo_template`; +CREATE TABLE `video_ai_algo_template` ( + `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', + `template_id` varchar(64) NOT NULL COMMENT '模板唯一ID', + `template_name` varchar(100) NOT NULL COMMENT '模板名称', + `algo_code` varchar(50) NOT NULL COMMENT '关联算法编码', + `params` text NOT NULL COMMENT 'JSON 参数', + `description` varchar(255) NULL COMMENT '描述', + `creator` varchar(64) NOT NULL DEFAULT '' COMMENT '创建者', + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `updater` varchar(64) NOT NULL DEFAULT '' COMMENT '更新者', + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '是否删除', + `tenant_id` bigint NOT NULL DEFAULT 0 COMMENT '租户编号', + PRIMARY KEY (`id`) USING BTREE, + UNIQUE KEY `uk_template_id_deleted` (`template_id`, `deleted`) COMMENT '模板ID唯一(含逻辑删除)', + INDEX `idx_algo_code` (`algo_code`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='AI 算法参数模板'; + +-- ============================================================================ -- 初始数据 --- ============================================================ +-- ============================================================================ -- 预置算法(与 FastAPI 边缘端保持一致) -INSERT INTO `wvp_ai_algorithm` (`algo_code`, `algo_name`, `target_class`, `param_schema`, `description`, `is_active`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES +INSERT INTO `video_ai_algorithm` (`algo_code`, `algo_name`, `target_class`, `param_schema`, `description`, `is_active`, `creator`, `create_time`, `updater`, `update_time`, `deleted`, `tenant_id`) VALUES ('leave_post', '离岗检测', 'person', '{"confirm_on_duty_sec":{"type":"int","default":10,"min":1},"confirm_leave_sec":{"type":"int","default":30,"min":1},"leave_countdown_sec":{"type":"int","default":300,"min":0},"cooldown_sec":{"type":"int","default":600,"min":0},"working_hours":{"type":"list","default":[]}}', '检测人员是否在岗,支持工作时间段配置', 1, 'system', NOW(), 'system', NOW(), b'0', 0), diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java index c7da0673..a2c8a3be 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlert.java @@ -3,16 +3,16 @@ package com.viewsh.module.video.aiot.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_alert") +@TableName("video_ai_alert") @EqualsAndHashCode(callSuper = true) @Schema(description = "AI告警记录") -public class AiAlert extends TenantBaseDO { +public class AiAlert extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java index b80dcc99..ba8a39b8 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgoTemplate.java @@ -9,7 +9,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_algo_template") +@TableName("video_ai_algo_template") @EqualsAndHashCode(callSuper = true) @Schema(description = "算法参数模板") public class AiAlgoTemplate extends TenantBaseDO { diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java index 8bc83dcd..356bd546 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiAlgorithm.java @@ -9,7 +9,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_algorithm") +@TableName("video_ai_algorithm") @EqualsAndHashCode(callSuper = true) @Schema(description = "算法注册表") public class AiAlgorithm extends TenantBaseDO { diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java index 9f4fb480..7df3cb0e 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigLog.java @@ -3,16 +3,16 @@ package com.viewsh.module.video.aiot.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_config_log") +@TableName("video_ai_config_log") @EqualsAndHashCode(callSuper = true) @Schema(description = "配置变更日志") -public class AiConfigLog extends TenantBaseDO { +public class AiConfigLog extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java index 7546682b..c0c315fb 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiConfigSnapshot.java @@ -3,16 +3,16 @@ package com.viewsh.module.video.aiot.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_config_snapshot") +@TableName("video_ai_config_snapshot") @EqualsAndHashCode(callSuper = true) @Schema(description = "配置版本快照") -public class AiConfigSnapshot extends TenantBaseDO { +public class AiConfigSnapshot extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java index b0b84add..6a94a0e3 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiEdgeDevice.java @@ -3,16 +3,16 @@ package com.viewsh.module.video.aiot.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_edge_device") +@TableName("video_ai_edge_device") @EqualsAndHashCode(callSuper = true) @Schema(description = "边缘设备状态") -public class AiEdgeDevice extends TenantBaseDO { +public class AiEdgeDevice extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java index f22a632d..0a93dec5 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoi.java @@ -3,16 +3,16 @@ package com.viewsh.module.video.aiot.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_roi") +@TableName("video_ai_roi") @EqualsAndHashCode(callSuper = true) @Schema(description = "ROI区域配置") -public class AiRoi extends TenantBaseDO { +public class AiRoi extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java index 567c786a..8c1d0744 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/bean/AiRoiAlgoBind.java @@ -3,16 +3,16 @@ package com.viewsh.module.video.aiot.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_ai_roi_algo_bind") +@TableName("video_ai_roi_algo_bind") @EqualsAndHashCode(callSuper = true) @Schema(description = "ROI算法绑定") -public class AiRoiAlgoBind extends TenantBaseDO { +public class AiRoiAlgoBind extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "数据库自增ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java index 2e9c7765..7255d45a 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlertMapper.java @@ -15,14 +15,14 @@ import java.util.List; @Mapper public interface AiAlertMapper extends BaseMapperX { - @Select("SELECT COUNT(1) FROM wvp_ai_alert WHERE alert_id=#{alertId} AND deleted=0") + @Select("SELECT COUNT(1) FROM video_ai_alert WHERE alert_id=#{alertId} AND deleted=0") int countByAlertId(@Param("alertId") String alertId); @Select("SELECT a.*, r.name AS roi_name, " + "COALESCE(sp.name, sp.app) AS camera_name " + - "FROM wvp_ai_alert a " + - "LEFT JOIN wvp_ai_roi r ON a.roi_id = r.roi_id " + - "LEFT JOIN wvp_stream_proxy sp ON a.camera_id = sp.camera_code " + + "FROM video_ai_alert a " + + "LEFT JOIN video_ai_roi r ON a.roi_id = r.roi_id " + + "LEFT JOIN video_stream_proxy sp ON a.camera_id = sp.camera_code " + "WHERE a.alert_id=#{alertId} AND a.deleted=0") @Results({ @Result(property = "roiName", column = "roi_name"), @@ -33,9 +33,9 @@ public interface AiAlertMapper extends BaseMapperX { @Select(value = {""}) diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java index e12cd105..ed35b8ea 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiAlgorithmMapper.java @@ -39,6 +39,6 @@ public interface AiAlgorithmMapper extends BaseMapperX { .eq(AiAlgorithm::getAlgoCode, algorithm.getAlgoCode())); } - @Update("UPDATE wvp_ai_algorithm SET is_active=#{isActive}, update_time=#{updateTime} WHERE id=#{id} AND deleted=0") + @Update("UPDATE video_ai_algorithm SET is_active=#{isActive}, update_time=#{updateTime} WHERE id=#{id} AND deleted=0") int updateActive(@Param("id") Long id, @Param("isActive") Integer isActive, @Param("updateTime") String updateTime); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiCameraSnapshotMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiCameraSnapshotMapper.java index e21c3317..fb45a4d6 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiCameraSnapshotMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiCameraSnapshotMapper.java @@ -5,10 +5,10 @@ import org.apache.ibatis.annotations.*; @Mapper public interface AiCameraSnapshotMapper { - @Select("SELECT cos_key FROM wvp_ai_camera_snapshot WHERE camera_code = #{cameraCode}") + @Select("SELECT cos_key FROM video_ai_camera_snapshot WHERE camera_code = #{cameraCode}") String getCosKey(@Param("cameraCode") String cameraCode); - @Insert("INSERT INTO wvp_ai_camera_snapshot (camera_code, cos_key) " + + @Insert("INSERT INTO video_ai_camera_snapshot (camera_code, cos_key) " + "VALUES (#{cameraCode}, #{cosKey}) " + "ON DUPLICATE KEY UPDATE cos_key = #{cosKey}, updated_at = NOW()") int upsert(@Param("cameraCode") String cameraCode, @Param("cosKey") String cosKey); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java index da9abd50..8feada35 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiConfigLogMapper.java @@ -17,7 +17,7 @@ public interface AiConfigLogMapper extends BaseMapperX { } @Select(value = {""}) IPage queryPage(IPage page, @Param("status") String status); - @Select("SELECT COUNT(*) FROM wvp_ai_edge_device WHERE status=#{status} AND deleted=0") + @Select("SELECT COUNT(*) FROM video_ai_edge_device WHERE status=#{status} AND deleted=0") int countByStatus(@Param("status") String status); - @Select("SELECT COUNT(*) FROM wvp_ai_edge_device WHERE deleted=0") + @Select("SELECT COUNT(*) FROM video_ai_edge_device WHERE deleted=0") int countAll(); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java index 8b810a21..1047fbdd 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiAlgoBindMapper.java @@ -29,22 +29,22 @@ public interface AiRoiAlgoBindMapper extends BaseMapperX { return delete(AiRoiAlgoBind::getRoiId, roiId); } - @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE roi_id=#{roiId} AND deleted=0 ORDER BY priority DESC, id") + @Select("SELECT * FROM video_ai_roi_algo_bind WHERE roi_id=#{roiId} AND deleted=0 ORDER BY priority DESC, id") List queryByRoiId(@Param("roiId") String roiId); default AiRoiAlgoBind queryByBindId(String bindId) { return selectOne(AiRoiAlgoBind::getBindId, bindId); } - @Select("SELECT * FROM wvp_ai_roi_algo_bind WHERE roi_id=#{roiId} AND algo_code=#{algoCode} AND deleted=0") + @Select("SELECT * FROM video_ai_roi_algo_bind WHERE roi_id=#{roiId} AND algo_code=#{algoCode} AND deleted=0") AiRoiAlgoBind queryByRoiIdAndAlgoCode(@Param("roiId") String roiId, @Param("algoCode") String algoCode); default List queryByTemplateId(String templateId) { return selectList(AiRoiAlgoBind::getTemplateId, templateId); } - @Select("SELECT b.* FROM wvp_ai_roi_algo_bind b " + - "INNER JOIN wvp_ai_roi r ON b.roi_id = r.roi_id " + + @Select("SELECT b.* FROM video_ai_roi_algo_bind b " + + "INNER JOIN video_ai_roi r ON b.roi_id = r.roi_id " + "WHERE r.camera_id=#{cameraId} AND b.deleted=0 AND r.deleted=0 ORDER BY b.priority DESC, b.id") List queryByCameraId(@Param("cameraId") String cameraId); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java index 87b4b783..5e21d51e 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/aiot/dao/AiRoiMapper.java @@ -36,7 +36,7 @@ public interface AiRoiMapper extends BaseMapperX { } @Select(value = {""}) @@ -168,7 +168,7 @@ public interface CommonGBChannelMapper extends BaseMapperX { @Update("") int updateStatusForListById(List commonGBChannels, @Param("status") String status); @@ -178,7 +178,7 @@ public interface CommonGBChannelMapper extends BaseMapperX { @Insert(" ") int updateStatus(List commonGBChannels); @Update(value = {" ") List queryForRegionTreeByCivilCode(@Param("parentDeviceId") String parentDeviceId); @Update(value = {" "}) @@ -341,7 +341,7 @@ public interface CommonGBChannelMapper extends BaseMapperX { List queryByGroupList(List groupList); @Update(value = {" "}) void addRecordPlanForAll(@Param("planId") Long planId); @Update(value = {" "}) @@ -557,7 +557,7 @@ public interface CommonGBChannelMapper extends BaseMapperX { " coalesce( wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + " coalesce( wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce( wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode \n" + - " from wvp_device_channel wdc" + + " from video_device_channel wdc" + " where wdc.channel_type = 0 " + " " + " AND (coalesce(wdc.gb_device_id, wdc.device_id) LIKE concat('%',#{query},'%') escape '/' " + @@ -588,7 +588,7 @@ public interface CommonGBChannelMapper extends BaseMapperX { List queryAllForUnusualParent(); @Update(value = {" ") @@ -677,7 +677,7 @@ public interface CommonGBChannelMapper extends BaseMapperX { @SelectProvider(type = ChannelProvider.class, method = "queryMeetingChannelList") List queryMeetingChannelList(@Param("business") String business); - @Update("UPDATE wvp_device_channel SET map_level=null") + @Update("UPDATE video_device_channel SET map_level=null") int resetLevel(); @SelectProvider(type = ChannelProvider.class, method = "queryCameraChannelInBox") @@ -689,7 +689,7 @@ public interface CommonGBChannelMapper extends BaseMapperX { "MIN(coalesce(gb_longitude, longitude)) as minLng, " + "MAX(coalesce(gb_latitude, latitude)) as maxLat, " + "MIN(coalesce(gb_latitude, latitude)) as minLat " + - " from wvp_device_channel " + + " from video_device_channel " + " where channel_type = 0") Extent queryExtent(); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceAlarmMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceAlarmMapper.java index df2194a0..11435201 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceAlarmMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceAlarmMapper.java @@ -19,13 +19,13 @@ import java.util.List; @Repository public interface DeviceAlarmMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_device_alarm (device_id, channel_id, alarm_priority, alarm_method, alarm_time, alarm_description, longitude, latitude, alarm_type , create_time ) " + + @Insert("INSERT INTO video_device_alarm (device_id, channel_id, alarm_priority, alarm_method, alarm_time, alarm_description, longitude, latitude, alarm_type , create_time ) " + "VALUES (#{deviceId}, #{channelId}, #{alarmPriority}, #{alarmMethod}, #{alarmTime}, #{alarmDescription}, #{longitude}, #{latitude}, #{alarmType}, #{createTime})") int add(DeviceAlarm alarm); @Select( value = {" ") List queryChaneIdListByDeviceDbIds(List deviceDbIds); @@ -151,8 +151,8 @@ public interface DeviceChannelMapper extends BaseMapperX { " coalesce(dc.gb_latitude, dc.latitude) as latitude,\n" + " coalesce(dc.gb_business_group_id, dc.business_group_id) as business_group_id " + " from " + - " wvp_device_channel dc " + - " LEFT JOIN wvp_device de ON dc.data_device_id = de.id " + + " video_device_channel dc " + + " LEFT JOIN video_device de ON dc.data_device_id = de.id " + " WHERE dc.data_type = 1 " + " AND de.device_id = #{deviceId} " + " AND (dc.device_id LIKE '%${query}%' OR dc.name LIKE '%${query}%' OR dc.name LIKE '%${query}%') " + @@ -168,7 +168,7 @@ public interface DeviceChannelMapper extends BaseMapperX { " "}) List queryChannelsWithDeviceInfo( @Param("deviceId") String deviceId, @Param("parentChannelId") String parentChannelId, @Param("query") String query, @Param("hasSubChannel") Boolean hasSubChannel, @Param("online") Boolean online, @Param("channelIds") List channelIds); - @Update(value = {"UPDATE wvp_device_channel SET stream_id=#{streamId} WHERE id=#{channelId}"}) + @Update(value = {"UPDATE video_device_channel SET stream_id=#{streamId} WHERE id=#{channelId}"}) void startPlay(@Param("channelId") Long channelId, @Param("streamId") String streamId); @@ -182,9 +182,9 @@ public interface DeviceChannelMapper extends BaseMapperX { " dc.sub_count,\n" + " pgc.platform_id as platform_id,\n" + " pgc.catalog_id as catalog_id " + - " FROM wvp_device_channel dc " + - " LEFT JOIN wvp_device de ON dc.data_device_id = de.id " + - " LEFT JOIN wvp_platform_channel pgc on pgc.device_channel_id = dc.id " + + " FROM video_device_channel dc " + + " LEFT JOIN video_device de ON dc.data_device_id = de.id " + + " LEFT JOIN video_platform_channel pgc on pgc.device_channel_id = dc.id " + " WHERE dc.data_type = 1 " + " " + "AND " + @@ -194,18 +194,18 @@ public interface DeviceChannelMapper extends BaseMapperX { " AND dc.status='OFF' " + " AND dc.sub_count > 0 " + " AND dc.sub_count = 0 " + - " AND dc.id not in (select device_channel_id from wvp_platform_channel where platform_id=#{platformId} ) " + + " AND dc.id not in (select device_channel_id from video_platform_channel where platform_id=#{platformId} ) " + " AND pgc.platform_id = #{platformId} and pgc.catalog_id=#{catalogId} " + " ORDER BY COALESCE(dc.gb_device_id, dc.device_id) ASC" + " "}) List queryChannelListInAll(@Param("query") String query, @Param("online") Boolean online, @Param("hasSubChannel") Boolean hasSubChannel, @Param("platformId") String platformId, @Param("catalogId") String catalogId); - @Update(value = {"UPDATE wvp_device_channel SET status='OFF' WHERE id=#{id}"}) + @Update(value = {"UPDATE video_device_channel SET status='OFF' WHERE id=#{id}"}) void offline(@Param("id") Long id); @Insert(""}) int batchUpdateStatus(List channels); - @Select("select count(1) from wvp_device_channel where status = 'ON'") + @Select("select count(1) from video_device_channel where status = 'ON'") int getOnlineCount(); - @Select("select count(1) from wvp_device_channel") + @Select("select count(1) from video_device_channel") int getAllChannelCount(); @Update("") void updateChannelStreamIdentification(DeviceChannel channel); @Update("") void updateAllChannelStreamIdentification(@Param("streamIdentification") String streamIdentification); @Update({""}) DeviceChannel getOneForSource(@Param("id") Long id); @@ -493,29 +493,29 @@ public interface DeviceChannelMapper extends BaseMapperX { " download_speed,\n" + " svc_space_support_mod,\n" + " svc_time_support_mode\n" + - " from wvp_device_channel " + + " from video_device_channel " + " where data_type = 1 and data_device_id=#{dataDeviceId} and coalesce(gb_device_id, device_id) = #{channelId}" + " "}) DeviceChannel getOneByDeviceIdForSource(@Param("dataDeviceId") Long dataDeviceId, @Param("channelId") String channelId); - @Update(value = {"UPDATE wvp_device_channel SET stream_id=null WHERE id=#{channelId}"}) + @Update(value = {"UPDATE video_device_channel SET stream_id=null WHERE id=#{channelId}"}) void stopPlayById(@Param("channelId") Long channelId); @Update(value = {" "}) void changeAudio(@Param("channelId") Long channelId, @Param("audio") boolean audio); - @Update("UPDATE wvp_device_channel SET status=#{status} WHERE data_type=#{dataType} and data_device_id=#{dataDeviceId} AND device_id=#{deviceId}") + @Update("UPDATE video_device_channel SET status=#{status} WHERE data_type=#{dataType} and data_device_id=#{dataDeviceId} AND device_id=#{deviceId}") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") void updateStatus(DeviceChannel channel); @Update({""}) DeviceChannel getOneBySourceChannelId(@Param("dataDeviceId") Long dataDeviceId, @Param("channelId") String channelId); - @Update(value = {"UPDATE wvp_device_channel SET status = 'OFF' WHERE data_type = 1 and data_device_id=#{deviceId}"}) + @Update(value = {"UPDATE video_device_channel SET status = 'OFF' WHERE data_type = 1 and data_device_id=#{deviceId}"}) void offlineByDeviceId(@Param("deviceId") Long deviceId); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMapper.java index 08a05949..3c0e490c 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMapper.java @@ -48,11 +48,11 @@ public interface DeviceMapper extends BaseMapperX { "server_id,"+ "media_server_id," + "broadcast_push_after_ack," + - "(SELECT count(0) FROM wvp_device_channel dc WHERE dc.data_type = 1 and dc.data_device_id= de.id) as channel_count "+ - " FROM wvp_device de WHERE de.device_id = #{deviceId}") + "(SELECT count(0) FROM video_device_channel dc WHERE dc.data_type = 1 and dc.data_device_id= de.id) as channel_count "+ + " FROM video_device de WHERE de.device_id = #{deviceId}") Device getDeviceByDeviceId( @Param("deviceId") String deviceId); - @Insert("INSERT INTO wvp_device (" + + @Insert("INSERT INTO video_device (" + "device_id, " + "name, " + "manufacturer, " + @@ -123,7 +123,7 @@ public interface DeviceMapper extends BaseMapperX { int add(Device device); @Update(value = {" " @@ -226,7 +226,7 @@ public interface DeviceMapper extends BaseMapperX { "geo_coord_sys,"+ "server_id,"+ "on_line"+ - " FROM wvp_device WHERE on_line = true") + " FROM video_device WHERE on_line = true") List getOnlineDevices(); @Select("SELECT " + @@ -261,7 +261,7 @@ public interface DeviceMapper extends BaseMapperX { "geo_coord_sys,"+ "server_id,"+ "on_line"+ - " FROM wvp_device WHERE on_line = true and server_id = #{serverId}") + " FROM video_device WHERE on_line = true and server_id = #{serverId}") List getOnlineDevicesByServerId(@Param("serverId") String serverId); @Select("SELECT " + @@ -294,11 +294,11 @@ public interface DeviceMapper extends BaseMapperX { "broadcast_push_after_ack,"+ "geo_coord_sys,"+ "on_line"+ - " FROM wvp_device WHERE ip = #{host} AND port=#{port}") + " FROM video_device WHERE ip = #{host} AND port=#{port}") Device getDeviceByHostAndPort(@Param("host") String host, @Param("port") int port); @Update(value = {" "}) void updateCustom(Device device); - @Insert("INSERT INTO wvp_device (" + + @Insert("INSERT INTO video_device (" + "device_id,"+ "custom_name,"+ "password,"+ @@ -342,10 +342,10 @@ public interface DeviceMapper extends BaseMapperX { ")") void addCustomDevice(Device device); - @Select("select * FROM wvp_device") + @Select("select * FROM video_device") List getAll(); - @Select("select * FROM wvp_device where as_message_channel = true") + @Select("select * FROM video_device where as_message_channel = true") List queryDeviceWithAsMessageChannel(); @Select(" ") IPage getDeviceList(IPage page, @Param("dataType") Integer dataType, @Param("query") String query, @Param("status") Boolean status); - @Select("select * from wvp_device_channel where id = #{id}") + @Select("select * from video_device_channel where id = #{id}") DeviceChannel getRawChannel(@Param("id") Long id); - @Select("select * from wvp_device where id = #{id}") + @Select("select * from video_device where id = #{id}") Device query(@Param("id") Long id); - @Select("select wd.* from wvp_device wd left join wvp_device_channel wdc on wdc.data_type = #{dataType} and wd.id = wdc.data_device_id where wdc.id = #{channelId}") + @Select("select wd.* from video_device wd left join video_device_channel wdc on wdc.data_type = #{dataType} and wd.id = wdc.data_device_id where wdc.id = #{channelId}") Device queryByChannelId(@Param("dataType") Integer dataType, @Param("channelId") Long channelId); - @Select("select wd.* from wvp_device wd left join wvp_device_channel wdc on wdc.data_type = #{dataType} and wd.id = wdc.data_device_id where wdc.device_id = #{channelDeviceId}") + @Select("select wd.* from video_device wd left join video_device_channel wdc on wdc.data_type = #{dataType} and wd.id = wdc.data_device_id where wdc.device_id = #{channelDeviceId}") Device getDeviceBySourceChannelDeviceId(@Param("dataType") Integer dataType, @Param("channelDeviceId") String channelDeviceId); @Update(value = {" "}) void updateSubscribeCatalog(Device device); @Update(value = {" "}) void updateSubscribeMobilePosition(Device device); @Update(value = {" "}) diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMobilePositionMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMobilePositionMapper.java index 0798388f..c6922cf9 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMobilePositionMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/DeviceMobilePositionMapper.java @@ -13,12 +13,12 @@ import java.util.List; @Mapper public interface DeviceMobilePositionMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_device_mobile_position (device_id,channel_id, device_name,time,longitude,latitude,altitude,speed,direction,report_source,create_time)"+ + @Insert("INSERT INTO video_device_mobile_position (device_id,channel_id, device_name,time,longitude,latitude,altitude,speed,direction,report_source,create_time)"+ "VALUES (#{deviceId}, #{channelId}, #{deviceName}, #{time}, #{longitude}, #{latitude}, #{altitude}, #{speed}, #{direction}, #{reportSource}, #{createTime})") int insertNewPosition(MobilePosition mobilePosition); @Select(value = {" "}) List queryPositionByDeviceIdAndTime(@Param("deviceId") String deviceId, @Param("channelId") String channelId, @Param("startTime") String startTime, @Param("endTime") String endTime); - @Select("SELECT * FROM wvp_device_mobile_position WHERE device_id = #{deviceId}" + + @Select("SELECT * FROM video_device_mobile_position WHERE device_id = #{deviceId}" + " ORDER BY time DESC LIMIT 1") MobilePosition queryLatestPositionByDevice(String deviceId); @@ -37,7 +37,7 @@ public interface DeviceMobilePositionMapper extends BaseMapperX @Insert(""}) IPage query(IPage page, @Param("query") String query, @Param("parentId") String parentId, @Param("businessGroup") String businessGroup); - @Select("SELECT * from wvp_common_group WHERE parent_id = #{parentId} ") + @Select("SELECT * from video_common_group WHERE parent_id = #{parentId} ") List getChildren(@Param("parentId") Long parentId); - @Select("SELECT * from wvp_common_group WHERE id = #{id} ") + @Select("SELECT * from video_common_group WHERE id = #{id} ") Group queryOne(@Param("id") Long id); @Insert(" ") @@ -106,16 +106,16 @@ public interface GroupMapper extends BaseMapperX { " *," + " 0 as type," + " false as is_leaf" + - " from wvp_common_group " + + " from video_common_group " + " where device_id=business_group" + " AND (device_id LIKE concat('%',#{query},'%') OR name LIKE concat('%',#{query},'%')) " + " ") List queryBusinessGroupForTree(@Param("query") String query); - @Select("SELECT * from wvp_common_group WHERE device_id = #{deviceId} and business_group = #{businessGroup}") + @Select("SELECT * from video_common_group WHERE device_id = #{deviceId} and business_group = #{businessGroup}") Group queryOneByDeviceId(@Param("deviceId") String deviceId, @Param("businessGroup") String businessGroup); - @Select("SELECT * from wvp_common_group WHERE device_id = #{deviceId}") + @Select("SELECT * from video_common_group WHERE device_id = #{deviceId}") Group queryOneByOnlyDeviceId(@Param("deviceId") String deviceId); default int batchDelete(List allChildren) { @@ -124,13 +124,13 @@ public interface GroupMapper extends BaseMapperX { return deleteBatch(Group::getId, ids); } - @Select("SELECT * from wvp_common_group WHERE device_id = #{businessGroup} and business_group = #{businessGroup} ") + @Select("SELECT * from video_common_group WHERE device_id = #{businessGroup} and business_group = #{businessGroup} ") Group queryBusinessGroup(@Param("businessGroup") String businessGroup); - @Select("SELECT * from wvp_common_group WHERE business_group = #{businessGroup} ") + @Select("SELECT * from video_common_group WHERE business_group = #{businessGroup} ") List queryByBusinessGroup(@Param("businessGroup") String businessGroup); - @Select("SELECT * from wvp_common_group WHERE business_group = #{businessGroup}") + @Select("SELECT * from video_common_group WHERE business_group = #{businessGroup}") @MapKey("id") Map queryByBusinessGroupForMap(@Param("businessGroup") String businessGroup); @@ -138,13 +138,13 @@ public interface GroupMapper extends BaseMapperX { return delete(Group::getBusinessGroup, businessGroup); } - @Update(" UPDATE wvp_common_group " + + @Update(" UPDATE video_common_group " + " SET parent_device_id=#{group.deviceId}, business_group = #{group.businessGroup}" + " WHERE parent_id = #{parentId}") int updateChild(@Param("parentId") Long parentId, Group group); @Select(" ") @@ -153,7 +153,7 @@ public interface GroupMapper extends BaseMapperX { @Select(" ") @@ -162,7 +162,7 @@ public interface GroupMapper extends BaseMapperX { @Select(" ") @@ -176,16 +176,16 @@ public interface GroupMapper extends BaseMapperX { " 1 as gb_parental," + " wcg.parent_device_id as gb_parent_id," + " wcg.civil_code as gb_civil_code" + - " from wvp_common_group wcg" + - " left join wvp_platform_group wpg on wpg.group_id = wcg.id" + + " from video_common_group wcg" + + " left join video_platform_group wpg on wpg.group_id = wcg.id" + " where wpg.platform_id = #{platformId} " + " ") List queryForPlatform(@Param("platformId") Long platformId); @Select(" ") @@ -193,8 +193,8 @@ public interface GroupMapper extends BaseMapperX { @Select(" ") @@ -204,7 +204,7 @@ public interface GroupMapper extends BaseMapperX { @Select(" ", databaseId = "mysql") @Update(value = " ", databaseId = "h2") @Update( value = " ", databaseId = "postgresql") @Update( value = " ", databaseId = "mysql") @Update(value = " ", databaseId = "h2") @Update( value = " ", databaseId = "kingbase") @Update( value = " ") List queryForPlatformByGroupId(@Param("groupId") Long groupId); - @Update("UPDATE wvp_platform_group SET deleted = 1 WHERE group_id = #{groupId}") + @Update("UPDATE video_platform_group SET deleted = 1 WHERE group_id = #{groupId}") void deletePlatformGroup(@Param("groupId") Long groupId); - @Select("SELECT * from wvp_common_group WHERE alias = #{alias} ") + @Select("SELECT * from video_common_group WHERE alias = #{alias} ") CameraGroup queryGroupByAlias(@Param("alias") String alias); - @Select("SELECT * from wvp_common_group WHERE alias = #{alias} and business_group = #{businessGroup}") + @Select("SELECT * from video_common_group WHERE alias = #{alias} and business_group = #{businessGroup}") Group queryGroupByAliasAndBusinessGroup(@Param("alias") String alias, @Param("deviceId") String businessGroup); @@ -318,7 +318,7 @@ public interface GroupMapper extends BaseMapperX { " COUNT(*) AS allCount," + " SUM(CASE WHEN coalesce( wdc.gb_status, wdc.status) = 'ON' THEN 1 ELSE 0 END) AS onlineCount" + " FROM " + - " wvp_device_channel wdc " + + " video_device_channel wdc " + " where wdc.channel_type = 0 AND wdc.data_type != 2 AND (wdc.gb_ptz_type is null or ( wdc.gb_ptz_type != 98 AND wdc.gb_ptz_type != 99)) " + " AND coalesce( wdc.gb_parent_id, wdc.parent_id) in " + " #{item.deviceId}" + @@ -326,7 +326,7 @@ public interface GroupMapper extends BaseMapperX { "") List queryCountWithChild(List groupList); - @Select("SELECT * from wvp_common_group where alias is not null") + @Select("SELECT * from video_common_group where alias is not null") @MapKey("alias") Map queryGroupByAliasMap(); @@ -334,24 +334,24 @@ public interface GroupMapper extends BaseMapperX { delete(new LambdaQueryWrapperX().isNotNull(Group::getAlias)); } - @Update(value = " UPDATE wvp_common_group g1" + - " JOIN wvp_common_group g2" + + @Update(value = " UPDATE video_common_group g1" + + " JOIN video_common_group g2" + " ON g1.parent_device_id = g2.device_id" + " SET g1.parent_id = g2.id" + " WHERE g1.alias IS NOT NULL;", databaseId = "mysql") - @Update(value = " UPDATE wvp_common_group g1" + - " JOIN wvp_common_group g2" + + @Update(value = " UPDATE video_common_group g1" + + " JOIN video_common_group g2" + " ON g1.parent_device_id = g2.device_id" + " SET g1.parent_id = g2.id" + " WHERE g1.alias IS NOT NULL;", databaseId = "h2") - @Update(value = " UPDATE wvp_common_group AS g1" + + @Update(value = " UPDATE video_common_group AS g1" + " SET parent_id = g2.id" + - " FROM wvp_common_group AS g2" + + " FROM video_common_group AS g2" + " WHERE g1.parent_device_id = g2.device_id" + " AND g1.alias IS NOT NULL;", databaseId = "kingbase") - @Update(value = " UPDATE wvp_common_group AS g1" + + @Update(value = " UPDATE video_common_group AS g1" + " SET parent_id = g2.id" + - " FROM wvp_common_group AS g2" + + " FROM video_common_group AS g2" + " WHERE g1.parent_device_id = g2.device_id" + " AND g1.alias IS NOT NULL;", databaseId = "postgresql") void fixParentId(); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformChannelMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformChannelMapper.java index 9075e85f..42dfb459 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformChannelMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformChannelMapper.java @@ -16,7 +16,7 @@ public interface PlatformChannelMapper extends BaseMapperX { @Insert("") int delChannelForDeviceId(String deviceId); @Select("select d.*\n" + - "from wvp_platform_channel pgc\n" + - " left join wvp_device_channel dc on dc.id = pgc.device_channel_id\n" + - " left join wvp_device d on dc.device_id = d.device_id\n" + + "from video_platform_channel pgc\n" + + " left join video_device_channel dc on dc.id = pgc.device_channel_id\n" + + " left join video_device d on dc.device_id = d.device_id\n" + "where dc.channel_type = 0 and dc.channel_id = #{channelId} and pgc.platform_id=#{platformId}") List queryDeviceByPlatformIdAndChannelId(@Param("platformId") String platformId, @Param("channelId") String channelId); @@ -43,8 +43,8 @@ public interface PlatformChannelMapper extends BaseMapperX { " SELECT " + " wp.* " + " FROM " + - " wvp_platform wp " + - " left join wvp_platform_channel wpgc on " + + " video_platform wp " + + " left join video_platform_channel wpgc on " + " wp.id = wpgc.platform_id " + " WHERE " + " wpgc.device_channel_id = #{channelId} and wp.status = true " + @@ -54,15 +54,15 @@ public interface PlatformChannelMapper extends BaseMapperX { List queryPlatFormListForGBWithGBId(@Param("channelId") Long channelId, List platforms); @Select("select dc.channel_id, dc.device_id,dc.name,d.manufacturer,d.model,d.firmware\n" + - "from wvp_platform_channel pgc\n" + - " left join wvp_device_channel dc on dc.id = pgc.device_channel_id\n" + - " left join wvp_device d on dc.device_id = d.device_id\n" + + "from video_platform_channel pgc\n" + + " left join video_device_channel dc on dc.id = pgc.device_channel_id\n" + + " left join video_device d on dc.device_id = d.device_id\n" + "where dc.channel_type = 0 and dc.channel_id = #{channelId} and pgc.platform_id=#{platformId}") List queryDeviceInfoByPlatformIdAndChannelId(@Param("platformId") String platformId, @Param("channelId") String channelId); - @Select(" SELECT wp.* from wvp_platform_channel pgc " + - " left join wvp_device_channel dc on dc.id = pgc.device_channel_id " + - " left join wvp_platform wp on wp.id = pgc.platform_id" + + @Select(" SELECT wp.* from video_platform_channel pgc " + + " left join video_device_channel dc on dc.id = pgc.device_channel_id " + + " left join video_platform wp on wp.id = pgc.platform_id" + " WHERE dc.channel_type = 0 and dc.device_id=#{channelId}") List queryParentPlatformByChannelId(@Param("channelId") String channelId); @@ -143,8 +143,8 @@ public interface PlatformChannelMapper extends BaseMapperX { " coalesce( wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce( wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode, \n" + " wpgc.platform_id " + - " from wvp_device_channel wdc" + - " left join wvp_platform_channel wpgc on wdc.id = wpgc.device_channel_id and wpgc.platform_id = #{platformId}" + + " from video_device_channel wdc" + + " left join video_platform_channel wpgc on wdc.id = wpgc.device_channel_id and wpgc.platform_id = #{platformId}" + " where wdc.channel_type = 0 " + " " + " AND (coalesce(wdc.gb_device_id, wdc.device_id) LIKE concat('%',#{query},'%') OR wpgc.custom_device_id LIKE concat('%',#{query},'%') " + @@ -199,8 +199,8 @@ public interface PlatformChannelMapper extends BaseMapperX { " coalesce(wpgc.custom_download_speed, wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + " coalesce(wpgc.custom_svc_space_support_mod, wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce(wpgc.custom_svc_time_support_mode, wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode\n" + - " from wvp_device_channel wdc" + - " left join wvp_platform_channel wpgc on wdc.id = wpgc.device_channel_id" + + " from video_device_channel wdc" + + " left join video_platform_channel wpgc on wdc.id = wpgc.device_channel_id" + " where wdc.channel_type = 0 and wpgc.platform_id = #{platformId} and coalesce(wpgc.custom_device_id, wdc.gb_device_id, wdc.device_id) = #{channelDeviceId} order by wdc.id " ) @@ -248,8 +248,8 @@ public interface PlatformChannelMapper extends BaseMapperX { " coalesce(wpgc.custom_download_speed, wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + " coalesce(wpgc.custom_svc_space_support_mod, wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce(wpgc.custom_svc_time_support_mode, wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode\n" + - " from wvp_device_channel wdc" + - " left join wvp_platform_channel wpgc on wdc.id = wpgc.device_channel_id and wpgc.platform_id = #{platformId}" + + " from video_device_channel wdc" + + " left join video_platform_channel wpgc on wdc.id = wpgc.device_channel_id and wpgc.platform_id = #{platformId}" + " where wdc.channel_type = 0 and wpgc.platform_id is null" + " AND wdc.id in " + " #{item} " + @@ -302,8 +302,8 @@ public interface PlatformChannelMapper extends BaseMapperX { " coalesce(wpgc.custom_download_speed, wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + " coalesce(wpgc.custom_svc_space_support_mod, wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce(wpgc.custom_svc_time_support_mode, wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode\n" + - " from wvp_device_channel wdc" + - " left join wvp_platform_channel wpgc on wdc.id = wpgc.device_channel_id" + + " from video_device_channel wdc" + + " left join video_platform_channel wpgc on wdc.id = wpgc.device_channel_id" + " where wdc.channel_type = 0 and wpgc.platform_id = #{platformId}" + " AND wdc.id in " + " " + @@ -315,7 +315,7 @@ public interface PlatformChannelMapper extends BaseMapperX { List queryShare(@Param("platformId") Long platformId, List channelIds); @Update("") int removePlatformGroup(@Param("groupList") List groupList, @Param("platformId") Long platformId); - @Update("UPDATE wvp_platform_group SET deleted = 1 WHERE platform_id=#{platformId} AND group_id = #{id}") + @Update("UPDATE video_platform_group SET deleted = 1 WHERE platform_id=#{platformId} AND group_id = #{id}") void removePlatformGroupById(@Param("id") Long id, @Param("platformId") Long platformId); - @Update("UPDATE wvp_platform_region SET deleted = 1 WHERE platform_id=#{platformId} AND region_id = #{id}") + @Update("UPDATE video_platform_region SET deleted = 1 WHERE platform_id=#{platformId} AND region_id = #{id}") void removePlatformRegionById(@Param("id") Long id, @Param("platformId") Long platformId); @Select(" ") Set queryShareChildrenGroup(@Param("parentId") Long parentId, @Param("platformId") Long platformId); @Select(" ") Set queryShareChildrenRegion(@Param("parentId") String parentId, @Param("platformId") Long platformId); @Select(" ") @@ -389,8 +389,8 @@ public interface PlatformChannelMapper extends BaseMapperX { @Select(" ") @@ -400,10 +400,10 @@ public interface PlatformChannelMapper extends BaseMapperX { " SELECT " + " pp.* " + " FROM " + - " wvp_platform pp " + - " left join wvp_platform_channel pgc on " + + " video_platform pp " + + " left join video_platform_channel pgc on " + " pp.id = pgc.platform_id " + - " left join wvp_device_channel dc on " + + " left join video_device_channel dc on " + " dc.id = pgc.device_channel_id " + " WHERE " + " pgc.device_channel_id IN" + @@ -415,27 +415,27 @@ public interface PlatformChannelMapper extends BaseMapperX { " SELECT " + " pp.* " + " FROM " + - " wvp_platform pp " + - " left join wvp_platform_channel pgc on " + + " video_platform pp " + + " left join video_platform_channel pgc on " + " pp.id = pgc.platform_id " + - " left join wvp_device_channel dc on " + + " left join video_device_channel dc on " + " dc.id = pgc.device_channel_id " + " WHERE " + " pgc.device_channel_id = #{channelId}" + " ") List queryPlatFormListByChannelId(@Param("channelId") Long channelId); - @Update("UPDATE wvp_platform_channel SET deleted = 1 WHERE platform_id=#{platformId}") + @Update("UPDATE video_platform_channel SET deleted = 1 WHERE platform_id=#{platformId}") void removeChannelsByPlatformId(@Param("platformId") Long platformId); - @Update("UPDATE wvp_platform_group SET deleted = 1 WHERE platform_id=#{platformId}") + @Update("UPDATE video_platform_group SET deleted = 1 WHERE platform_id=#{platformId}") void removePlatformGroupsByPlatformId(@Param("platformId") Long platformId); - @Update("UPDATE wvp_platform_region SET deleted = 1 WHERE platform_id=#{platformId}") + @Update("UPDATE video_platform_region SET deleted = 1 WHERE platform_id=#{platformId}") void removePlatformRegionByPlatformId(@Param("platformId") Long platformId); @Update(value = {" ") CommonGBChannel queryShareChannel(@Param("platformId") Long platformId, @Param("gbId") Long gbId); @@ -525,8 +525,8 @@ public interface PlatformChannelMapper extends BaseMapperX { @Select(" ") @@ -534,8 +534,8 @@ public interface PlatformChannelMapper extends BaseMapperX { @Select(" ") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformMapper.java index a746e678..39e0280e 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/PlatformMapper.java @@ -15,7 +15,7 @@ import java.util.List; @Repository public interface PlatformMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_platform (enable, name, server_gb_id, server_gb_domain, server_ip, server_port,device_gb_id,device_ip,"+ + @Insert("INSERT INTO video_platform (enable, name, server_gb_id, server_gb_domain, server_ip, server_port,device_gb_id,device_ip,"+ " device_port,username,password,expires,keep_timeout,transport,character_set,ptz,rtcp,status,catalog_group, update_time," + " create_time, as_message_channel, send_stream_ip, auto_push_channel, catalog_with_platform,catalog_with_group,catalog_with_region, "+ " civil_code,manufacturer,model,address,register_way,secrecy,server_id) " + @@ -25,7 +25,7 @@ public interface PlatformMapper extends BaseMapperX { " #{civilCode}, #{manufacturer}, #{model}, #{address}, #{registerWay}, #{secrecy}, #{serverId})") int add(Platform parentPlatform); - @Update("UPDATE wvp_platform " + + @Update("UPDATE video_platform " + "SET update_time = #{updateTime}," + " enable=#{enable}, " + " name=#{name}," + @@ -68,46 +68,46 @@ public interface PlatformMapper extends BaseMapperX { @Select(" ") IPage queryList(IPage page, @Param("query") String query); - @Select("SELECT * FROM wvp_platform WHERE server_id=#{serverId} and enable=#{enable} ") + @Select("SELECT * FROM video_platform WHERE server_id=#{serverId} and enable=#{enable} ") List queryEnableParentPlatformListByServerId(@Param("serverId") String serverId, @Param("enable") boolean enable); - @Select("SELECT * FROM wvp_platform WHERE enable=true and as_message_channel=true") + @Select("SELECT * FROM video_platform WHERE enable=true and as_message_channel=true") List queryEnablePlatformListWithAsMessageChannel(); - @Select("SELECT * FROM wvp_platform WHERE server_gb_id=#{platformGbId}") + @Select("SELECT * FROM video_platform WHERE server_gb_id=#{platformGbId}") Platform getParentPlatByServerGBId(String platformGbId); - @Select("SELECT * FROM wvp_platform WHERE id=#{id}") + @Select("SELECT * FROM video_platform WHERE id=#{id}") Platform query(Long id); - @Update("UPDATE wvp_platform SET status=#{online}, server_id = #{serverId} WHERE id=#{id}" ) + @Update("UPDATE video_platform SET status=#{online}, server_id = #{serverId} WHERE id=#{id}" ) int updateStatus(@Param("id") Long id, @Param("online") boolean online, @Param("serverId") String serverId); - @Select("SELECT server_id FROM wvp_platform WHERE enable=true and server_id != #{serverId} group by server_id") + @Select("SELECT server_id FROM video_platform WHERE enable=true and server_id != #{serverId} group by server_id") List queryServerIdsWithEnableAndNotInServer(@Param("serverId") String serverId); - @Select("SELECT * FROM wvp_platform WHERE server_id = #{serverId}") + @Select("SELECT * FROM video_platform WHERE server_id = #{serverId}") List queryByServerId(@Param("serverId") String serverId); - @Select("SELECT * FROM wvp_platform ") + @Select("SELECT * FROM video_platform ") List queryAll(); - @Select("SELECT * FROM wvp_platform WHERE enable=true and server_id = #{serverId}") + @Select("SELECT * FROM video_platform WHERE enable=true and server_id = #{serverId}") List queryServerIdsWithEnableAndServer(@Param("serverId") String serverId); - @Update("UPDATE wvp_platform SET status=false where server_id = #{serverId}" ) + @Update("UPDATE video_platform SET status=false where server_id = #{serverId}" ) void offlineAll(@Param("serverId") String serverId); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/RegionMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/RegionMapper.java index dd3f84cc..ea370cdc 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/RegionMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/RegionMapper.java @@ -14,7 +14,7 @@ import java.util.Set; @Mapper public interface RegionMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_common_region (device_id, name, parent_id, parent_device_id, create_time, update_time) " + + @Insert("INSERT INTO video_common_region (device_id, name, parent_id, parent_device_id, create_time, update_time) " + "VALUES (#{deviceId}, #{name}, #{parentId}, #{parentDeviceId}, #{createTime}, #{updateTime})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") void add(Region region); @@ -23,33 +23,33 @@ public interface RegionMapper extends BaseMapperX { return deleteById(id); } - @Update(" UPDATE wvp_common_region " + + @Update(" UPDATE video_common_region " + " SET update_time=#{updateTime}, device_id=#{deviceId}, name=#{name}, parent_id=#{parentId}, parent_device_id=#{parentDeviceId}" + " WHERE id = #{id}") int update(Region region); @Select(value = {" "}) IPage query(IPage page, @Param("query") String query, @Param("parentId") String parentId); - @Select("SELECT * from wvp_common_region WHERE parent_id = #{parentId} ORDER BY id ") + @Select("SELECT * from video_common_region WHERE parent_id = #{parentId} ORDER BY id ") List getChildren(@Param("parentId") Long parentId); - @Select("SELECT * from wvp_common_region WHERE id = #{id} ") + @Select("SELECT * from video_common_region WHERE id = #{id} ") Region queryOne(@Param("id") Long id); @Select(" select dc.civil_code as civil_code " + - " from wvp_device_channel dc " + + " from video_device_channel dc " + " where dc.civil_code not in " + - " (select device_id from wvp_common_region)") + " (select device_id from video_common_region)") List getUninitializedCivilCode(); @Select(" ") @@ -57,7 +57,7 @@ public interface RegionMapper extends BaseMapperX { @Insert(" ") @@ -103,39 +103,39 @@ public interface RegionMapper extends BaseMapperX { " SELECT " + " wcr.device_id as gb_device_id," + " wcr.name as gb_name" + - " from wvp_common_region wcr" + - " left join wvp_platform_region wpr on wcr.id = wpr.region_id" + + " from video_common_region wcr" + + " left join video_platform_region wpr on wcr.id = wpr.region_id" + " where wpr.platform_id = #{platformId} " + " ") List queryByPlatform(@Param("platformId") Long platformId); @Update(value = " ", databaseId = "mysql") @Update(value = " ", databaseId = "h2") @Update( value = " ", databaseId = "kingbase") @Update( value = " ") void updateChild(@Param("parentId") Long parentId, @Param("parentDeviceId") String parentDeviceId); - @Select("SELECT * from wvp_common_region WHERE device_id = #{deviceId} ") + @Select("SELECT * from video_common_region WHERE device_id = #{deviceId} ") Region queryByDeviceId(@Param("deviceId") String deviceId); @Select(" ") @@ -164,7 +164,7 @@ public interface RegionMapper extends BaseMapperX { @Select(" ") @@ -182,8 +182,8 @@ public interface RegionMapper extends BaseMapperX { @Select(" ") @@ -192,7 +192,7 @@ public interface RegionMapper extends BaseMapperX { @Select(" ") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/ChannelProvider.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/ChannelProvider.java index c8398b62..15268806 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/ChannelProvider.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/ChannelProvider.java @@ -56,7 +56,7 @@ public class ChannelProvider { " coalesce(gb_download_speed, download_speed) as gb_download_speed,\n" + " coalesce(gb_svc_space_support_mod, svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce(gb_svc_time_support_mode,svc_time_support_mode) as gb_svc_time_support_mode\n" + - " from wvp_device_channel\n" + " from video_device_channel\n" ; public final static String BASE_SQL_TABLE_NAME = "select\n" + @@ -102,7 +102,7 @@ public class ChannelProvider { " coalesce(wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + " coalesce(wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce(wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode\n" + - " from wvp_device_channel wdc\n" + " from video_device_channel wdc\n" ; private final static String BASE_SQL_FOR_PLATFORM = @@ -147,8 +147,8 @@ public class ChannelProvider { " coalesce(wpgc.custom_download_speed, wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + " coalesce(wpgc.custom_svc_space_support_mod, wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce(wpgc.custom_svc_time_support_mode, wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode\n" + - " from wvp_device_channel wdc" + - " left join wvp_platform_channel wpgc on wdc.id = wpgc.device_channel_id" + " from video_device_channel wdc" + + " left join video_platform_channel wpgc on wdc.id = wpgc.device_channel_id" ; private final static String BASE_SQL_FOR_CAMERA_DEVICE = @@ -198,10 +198,10 @@ public class ChannelProvider { " coalesce(wdc.gb_download_speed, wdc.download_speed) as gb_download_speed,\n" + " coalesce(wdc.gb_svc_space_support_mod, wdc.svc_space_support_mod) as gb_svc_space_support_mod,\n" + " coalesce(wdc.gb_svc_time_support_mode, wdc.svc_time_support_mode) as gb_svc_time_support_mode\n" + - " from wvp_device_channel wdc\n" + - " left join wvp_device wd on wdc.data_type = 1 AND wd.id = wdc.data_device_id" + - " left join wvp_common_group wcg on wcg.device_id = coalesce(wdc.gb_parent_id, wdc.parent_id)" + - " left join wvp_common_group wcg2 on wcg2.device_id = wcg.business_group" + " from video_device_channel wdc\n" + + " left join video_device wd on wdc.data_type = 1 AND wd.id = wdc.data_device_id" + + " left join video_common_group wcg on wcg.device_id = coalesce(wdc.gb_parent_id, wdc.parent_id)" + + " left join video_common_group wcg2 on wcg2.device_id = wcg.business_group" ; public String queryByDeviceId(Map params ){ @@ -500,7 +500,7 @@ public class ChannelProvider { public String queryListByCivilCodeForUnusual(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_TABLE_NAME); - sqlBuild.append(" left join (select wcr.device_id from wvp_common_region wcr) temp on temp.device_id = coalesce(wdc.gb_civil_code, wdc.civil_code)" + + sqlBuild.append(" left join (select wcr.device_id from video_common_region wcr) temp on temp.device_id = coalesce(wdc.gb_civil_code, wdc.civil_code)" + " where coalesce(wdc.gb_civil_code, wdc.civil_code) is not null and temp.device_id is null "); sqlBuild.append(" AND wdc.channel_type = 0 "); if (params.get("query") != null) { @@ -523,7 +523,7 @@ public class ChannelProvider { public String queryListByParentForUnusual(Map params ){ StringBuilder sqlBuild = new StringBuilder(); sqlBuild.append(BASE_SQL_TABLE_NAME); - sqlBuild.append(" left join (select wcg.device_id from wvp_common_group wcg) temp on temp.device_id = coalesce(wdc.gb_parent_id, wdc.parent_id)" + + sqlBuild.append(" left join (select wcg.device_id from video_common_group wcg) temp on temp.device_id = coalesce(wdc.gb_parent_id, wdc.parent_id)" + " where coalesce(wdc.gb_parent_id, wdc.parent_id) is not null and temp.device_id is null "); sqlBuild.append(" AND wdc.channel_type = 0 "); if (params.get("query") != null) { @@ -578,8 +578,8 @@ public class ChannelProvider { public String queryAllForUnusualCivilCode(Map params ){ StringBuilder sqlBuild = new StringBuilder(); - sqlBuild.append("select wdc.id from wvp_device_channel wdc "); - sqlBuild.append(" left join (select wcr.device_id from wvp_common_region wcr) temp on temp.device_id = coalesce(wdc.gb_civil_code, wdc.civil_code)" + + sqlBuild.append("select wdc.id from video_device_channel wdc "); + sqlBuild.append(" left join (select wcr.device_id from video_common_region wcr) temp on temp.device_id = coalesce(wdc.gb_civil_code, wdc.civil_code)" + " where coalesce(wdc.gb_civil_code, wdc.civil_code) is not null and temp.device_id is null "); sqlBuild.append(" AND wdc.channel_type = 0 "); return sqlBuild.toString(); @@ -587,8 +587,8 @@ public class ChannelProvider { public String queryAllForUnusualParent(Map params ){ StringBuilder sqlBuild = new StringBuilder(); - sqlBuild.append("select wdc.id from wvp_device_channel wdc "); - sqlBuild.append(" left join (select wcg.device_id from wvp_common_group wcg) temp on temp.device_id = coalesce(wdc.gb_parent_id, wdc.parent_id)" + + sqlBuild.append("select wdc.id from video_device_channel wdc "); + sqlBuild.append(" left join (select wcg.device_id from video_common_group wcg) temp on temp.device_id = coalesce(wdc.gb_parent_id, wdc.parent_id)" + " where coalesce(wdc.gb_parent_id, wdc.parent_id) is not null and temp.device_id is null "); sqlBuild.append(" AND wdc.channel_type = 0 "); return sqlBuild.toString(); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/DeviceChannelProvider.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/DeviceChannelProvider.java index 79981820..b19a4e6c 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/DeviceChannelProvider.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/gb28181/dao/provider/DeviceChannelProvider.java @@ -57,8 +57,8 @@ public class DeviceChannelProvider { " coalesce(dc.gb_svc_space_support_mod, dc.svc_space_support_mod) as svc_space_support_mod,\n" + " coalesce(dc.gb_svc_time_support_mode,dc.svc_time_support_mode) as svc_time_support_mode\n" + " from " + - " wvp_device_channel dc " + - " left join wvp_device d on d.id = dc.data_device_id " + " video_device_channel dc " + + " left join video_device d on d.id = dc.data_device_id " ; } public String queryChannels(Map params ){ diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/media/bean/MediaServer.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/media/bean/MediaServer.java index 065fa062..91e7bc08 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/media/bean/MediaServer.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/media/bean/MediaServer.java @@ -12,7 +12,7 @@ import org.springframework.util.ObjectUtils; @Schema(description = "流媒体服务信息") @Data -@TableName("wvp_media_server") +@TableName("video_media_server") @EqualsAndHashCode(callSuper = true) public class MediaServer extends BaseDO { diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/CloudRecordItem.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/CloudRecordItem.java index 6cd4526c..bfa5bac5 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/CloudRecordItem.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/CloudRecordItem.java @@ -3,7 +3,7 @@ package com.viewsh.module.video.service.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import com.viewsh.module.video.media.event.media.MediaRecordMp4Event; import com.viewsh.module.video.media.event.media.MediaRecordProcessEvent; import com.viewsh.module.video.utils.MediaServerUtils; @@ -16,9 +16,9 @@ import java.util.Map; * 云端录像数据 */ @Data -@TableName("wvp_cloud_record") +@TableName("video_cloud_record") @EqualsAndHashCode(callSuper = true) -public class CloudRecordItem extends TenantBaseDO { +public class CloudRecordItem extends ProjectBaseDO { /** * 主键 */ diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlan.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlan.java index fe68b834..040e31bf 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlan.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlan.java @@ -4,7 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @@ -12,10 +12,10 @@ import lombok.EqualsAndHashCode; import java.util.List; @Data -@TableName("wvp_record_plan") +@TableName("video_record_plan") @EqualsAndHashCode(callSuper = true) @Schema(description = "录制计划") -public class RecordPlan extends TenantBaseDO { +public class RecordPlan extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "计划数据库ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlanItem.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlanItem.java index a7093254..e0021a03 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlanItem.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/service/bean/RecordPlanItem.java @@ -3,16 +3,16 @@ package com.viewsh.module.video.service.bean; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; -import com.viewsh.framework.tenant.core.db.TenantBaseDO; +import com.viewsh.framework.tenant.core.db.ProjectBaseDO; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; @Data -@TableName("wvp_record_plan_item") +@TableName("video_record_plan_item") @EqualsAndHashCode(callSuper = true) @Schema(description = "录制计划项") -public class RecordPlanItem extends TenantBaseDO { +public class RecordPlanItem extends ProjectBaseDO { @TableId(type = IdType.AUTO) @Schema(description = "计划项数据库ID") diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/CloudRecordServiceMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/CloudRecordServiceMapper.java index 82e513f1..0115785a 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/CloudRecordServiceMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/CloudRecordServiceMapper.java @@ -14,7 +14,7 @@ import java.util.List; public interface CloudRecordServiceMapper extends BaseMapperX { @Insert(" ") int updateCollectList(@Param("collect") boolean collect, List cloudRecordItemList); @Update(" ") void deleteByFileList(@Param("filePathList") List filePathList, @Param("mediaServerId") String mediaServerId); @@ -124,13 +124,13 @@ public interface CloudRecordServiceMapper extends BaseMapperX { @Select(" ") List queryRecordListForDelete(@Param("endTimeStamp")Long endTimeStamp, String mediaServerId); @Update(" ") int changeCollectById(@Param("collect") boolean collect, @Param("recordId") Long recordId); @@ -142,33 +142,33 @@ public interface CloudRecordServiceMapper extends BaseMapperX { @Select(" ") List getListByCallId(@Param("callId") String callId); @Select(" ") CloudRecordItem queryOne(@Param("id") Long id); @Select(" ") CloudRecordItem getListByFileName(@Param("app") String app, @Param("stream") String stream, @Param("fileName") String fileName); @Update(" ") void updateTimeLen(@Param("id") Long id, @Param("time") Long time, @Param("endTime") long endTime); @Select(" ") List queryRecordByIds(Collection ids); @Select(" "}) int updateByHostAndPort(MediaServer mediaServerItem); - @Select("SELECT * FROM wvp_media_server WHERE id=#{id}") + @Select("SELECT * FROM video_media_server WHERE id=#{id}") MediaServer queryOne(@Param("id") String id); - @Select("SELECT * FROM wvp_media_server WHERE id=#{id} and server_id = #{serverId}") + @Select("SELECT * FROM video_media_server WHERE id=#{id} and server_id = #{serverId}") MediaServer queryOneWithServerId(@Param("id") String id, @Param("serverId") String serverId); - @Select("SELECT * FROM wvp_media_server where server_id = #{serverId}") + @Select("SELECT * FROM video_media_server where server_id = #{serverId}") List queryAll(@Param("serverId") String serverId); - @Select("SELECT * FROM wvp_media_server where default_server=false AND server_id = #{serverId}") + @Select("SELECT * FROM video_media_server where default_server=false AND server_id = #{serverId}") List queryAllWithOutDefault(@Param("serverId") String serverId); default void delOne(String id, String serverId) { @@ -154,13 +154,13 @@ public interface MediaServerMapper extends BaseMapperX { .eq(MediaServer::getServerId, serverId)); } - @Select("SELECT * FROM wvp_media_server WHERE ip=#{host} and http_port=#{port} and server_id = #{serverId}") + @Select("SELECT * FROM video_media_server WHERE ip=#{host} and http_port=#{port} and server_id = #{serverId}") MediaServer queryOneByHostAndPort(@Param("host") String host, @Param("port") int port, @Param("serverId") String serverId); - @Select("SELECT * FROM wvp_media_server WHERE default_server=true and server_id = #{serverId}") + @Select("SELECT * FROM video_media_server WHERE default_server=true and server_id = #{serverId}") MediaServer queryDefault(@Param("serverId") String serverId); - @Select("SELECT * FROM wvp_media_server WHERE record_assist_port > 0 and server_id = #{serverId}") + @Select("SELECT * FROM video_media_server WHERE record_assist_port > 0 and server_id = #{serverId}") List queryAllWithAssistPort(@Param("serverId") String serverId); default void deleteDefault(String serverId) { diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/RecordPlanMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/RecordPlanMapper.java index e61c0121..1ff12dd7 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/RecordPlanMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/storager/dao/RecordPlanMapper.java @@ -12,7 +12,7 @@ import java.util.List; public interface RecordPlanMapper extends BaseMapperX { @Insert(" ") void batchAddItem(@Param("planId") Long planId, List planItemList); - @Select("select * from wvp_record_plan where id = #{planId}") + @Select("select * from video_record_plan where id = #{planId}") RecordPlan get(@Param("planId") Long planId); @Select(" ") IPage query(IPage page, @Param("query") String query); - @Update("UPDATE wvp_record_plan SET name=#{name}, snap=#{snap} WHERE id=#{id}") + @Update("UPDATE video_record_plan SET name=#{name}, snap=#{snap} WHERE id=#{id}") void update(RecordPlan plan); default void delete(Long planId) { deleteById(planId); } - @Select("select * from wvp_record_plan_item where plan_id = #{planId}") + @Select("select * from video_record_plan_item where plan_id = #{planId}") List getItemList(@Param("planId") Long planId); - @Update("UPDATE wvp_record_plan_item SET deleted = 1 WHERE plan_id = #{planId}") + @Update("UPDATE video_record_plan_item SET deleted = 1 WHERE plan_id = #{planId}") void cleanItems(@Param("planId") Long planId); @Select(" ") List queryRecordIng(@Param("week") int week, @Param("index") int index); diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/bean/StreamProxy.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/bean/StreamProxy.java index 57041f0f..f9fc493b 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/bean/StreamProxy.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/bean/StreamProxy.java @@ -14,7 +14,7 @@ import org.springframework.util.ObjectUtils; * @author lin */ @Data -@TableName("wvp_stream_proxy") +@TableName("video_stream_proxy") @Schema(description = "拉流代理的信息") @EqualsAndHashCode(callSuper = true) public class StreamProxy extends CommonGBChannel { diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/StreamProxyMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/StreamProxyMapper.java index 63557f01..665d3a4b 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/StreamProxyMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/StreamProxyMapper.java @@ -14,7 +14,7 @@ import java.util.List; @Repository public interface StreamProxyMapper extends BaseMapperX { - @Insert("INSERT INTO wvp_stream_proxy (type, app, stream,relates_media_server_id, src_url, " + + @Insert("INSERT INTO video_stream_proxy (type, app, stream,relates_media_server_id, src_url, " + "timeout, ffmpeg_cmd_key, rtsp_type, enable_audio, enable_mp4, enable, pulling, " + "enable_disable_none_reader, server_id, camera_code, camera_name, area_id, edge_device_id) VALUES" + "(#{type}, #{app}, #{stream}, #{relatesMediaServerId}, #{srcUrl}, " + @@ -23,7 +23,7 @@ public interface StreamProxyMapper extends BaseMapperX { @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int add(StreamProxy streamProxyDto); - @Update("UPDATE wvp_stream_proxy " + + @Update("UPDATE video_stream_proxy " + "SET type=#{type}, " + "app=#{app}," + "stream=#{stream}," + @@ -59,10 +59,10 @@ public interface StreamProxyMapper extends BaseMapperX { List selectForPushingInMediaServer(@Param("mediaServerId") String mediaServerId, @Param("enable") boolean enable); - @Select("select count(1) from wvp_stream_proxy") + @Select("select count(1) from video_stream_proxy") int getAllCount(); - @Select("select count(1) from wvp_stream_proxy where pulling = true") + @Select("select count(1) from video_stream_proxy where pulling = true") int getOnline(); default int delete(Long id) { @@ -75,12 +75,12 @@ public interface StreamProxyMapper extends BaseMapperX { deleteBatch(StreamProxy::getId, ids); } - @Update("UPDATE wvp_stream_proxy " + + @Update("UPDATE video_stream_proxy " + "SET pulling=true " + "WHERE id=#{id}") int online(@Param("id") Long id); - @Update("UPDATE wvp_stream_proxy " + + @Update("UPDATE video_stream_proxy " + "SET pulling=false " + "WHERE id=#{id}") int offline(@Param("id") Long id); @@ -88,13 +88,13 @@ public interface StreamProxyMapper extends BaseMapperX { @SelectProvider(type = StreamProxyProvider.class, method = "select") StreamProxy select(@Param("id") Long id); - @Update("UPDATE wvp_stream_proxy " + + @Update("UPDATE video_stream_proxy " + " SET pulling=false, media_server_id = null," + " stream_key = null " + " WHERE id=#{id}") void removeStream(@Param("id") Long id); - @Update("UPDATE wvp_stream_proxy " + + @Update("UPDATE video_stream_proxy " + " SET pulling=#{pulling}, media_server_id = #{mediaServerId}, " + " stream_key = #{streamKey} " + " WHERE id=#{id}") @@ -105,36 +105,36 @@ public interface StreamProxyMapper extends BaseMapperX { * @param cameraCode 摄像头全局唯一编码 * @return StreamProxy 对象,不存在返回 null */ - @Select("SELECT * FROM wvp_stream_proxy WHERE camera_code = #{cameraCode}") + @Select("SELECT * FROM video_stream_proxy WHERE camera_code = #{cameraCode}") StreamProxy selectByCameraCode(@Param("cameraCode") String cameraCode); /** * 查询 camera_code 为 NULL 或空的记录(需要回填) */ - @Select("SELECT * FROM wvp_stream_proxy WHERE camera_code IS NULL OR camera_code = ''") + @Select("SELECT * FROM video_stream_proxy WHERE camera_code IS NULL OR camera_code = ''") List selectWithNullCameraCode(); /** * 更新指定记录的 camera_code */ - @Update("UPDATE wvp_stream_proxy SET camera_code = #{cameraCode} WHERE id = #{id}") + @Update("UPDATE video_stream_proxy SET camera_code = #{cameraCode} WHERE id = #{id}") int updateCameraCode(@Param("id") Long id, @Param("cameraCode") String cameraCode); /** * 查询指定前缀的最大 camera_code(用于生成新编码的序号) */ - @Select("SELECT MAX(camera_code) FROM wvp_stream_proxy WHERE camera_code LIKE CONCAT(#{prefix}, '%')") + @Select("SELECT MAX(camera_code) FROM video_stream_proxy WHERE camera_code LIKE CONCAT(#{prefix}, '%')") String selectMaxCameraCodeByPrefix(@Param("prefix") String prefix); /** * 查询所有摄像头简要信息(用于前端下拉选择) */ - @Select("SELECT camera_code, camera_name FROM wvp_stream_proxy WHERE enable = 1 ORDER BY camera_name") + @Select("SELECT camera_code, camera_name FROM video_stream_proxy WHERE enable = 1 ORDER BY camera_name") List selectAllCameraOptions(); /** * 根据 camera_code 查询关联的边缘设备 ID */ - @Select("SELECT edge_device_id FROM wvp_stream_proxy WHERE camera_code = #{cameraCode}") + @Select("SELECT edge_device_id FROM video_stream_proxy WHERE camera_code = #{cameraCode}") String selectEdgeDeviceIdByCameraCode(@Param("cameraCode") String cameraCode); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/provider/StreamProxyProvider.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/provider/StreamProxyProvider.java index 72127ea5..3ebd35f0 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/provider/StreamProxyProvider.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamProxy/dao/provider/StreamProxyProvider.java @@ -13,8 +13,8 @@ public class StreamProxyProvider { " st.id as data_device_id, " + " wdc.*, " + " wdc.id as gb_id" + - " FROM wvp_stream_proxy st " + - " LEFT join wvp_device_channel wdc " + + " FROM video_stream_proxy st " + + " LEFT join video_device_channel wdc " + " on wdc.data_type = 3 and st.id = wdc.data_device_id "; } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/bean/StreamPush.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/bean/StreamPush.java index 45777ab1..737d90e8 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/bean/StreamPush.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/bean/StreamPush.java @@ -16,7 +16,7 @@ import org.springframework.util.ObjectUtils; @Data -@TableName("wvp_stream_push") +@TableName("video_stream_push") @Schema(description = "推流信息") @EqualsAndHashCode(callSuper = true) @NoArgsConstructor diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/dao/StreamPushMapper.java b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/dao/StreamPushMapper.java index ac105287..23dea8a0 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/dao/StreamPushMapper.java +++ b/viewsh-module-video/viewsh-module-video-server/src/main/java/com/viewsh/module/video/streamPush/dao/StreamPushMapper.java @@ -19,14 +19,14 @@ public interface StreamPushMapper extends BaseMapperX { Integer dataType = ChannelDataType.GB28181; - @Insert("INSERT INTO wvp_stream_push (app, stream, media_server_id, server_id, push_time, pushing, start_offline_push) VALUES" + + @Insert("INSERT INTO video_stream_push (app, stream, media_server_id, server_id, push_time, pushing, start_offline_push) VALUES" + "(#{app}, #{stream}, #{mediaServerId} , #{serverId} , #{pushTime}, #{pushing}, #{startOfflinePush})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") int add(StreamPush streamPushItem); @Update(value = {" "}) List selectAllList(@Param("query") String query, @Param("pushing") Boolean pushing, @Param("mediaServerId") String mediaServerId); - @Select("SELECT st.*, st.id as data_device_id, wdc.*, wdc.id as gb_id FROM wvp_stream_push st LEFT join wvp_device_channel wdc on wdc.data_type = 2 and st.id = wdc.data_device_id WHERE st.app=#{app} AND st.stream=#{stream}") + @Select("SELECT st.*, st.id as data_device_id, wdc.*, wdc.id as gb_id FROM video_stream_push st LEFT join video_device_channel wdc on wdc.data_type = 2 and st.id = wdc.data_device_id WHERE st.app=#{app} AND st.stream=#{stream}") StreamPush selectByAppAndStream(@Param("app") String app, @Param("stream") String stream); @Insert(""}) int getAllPushing(Boolean usePushingAsStatus); @MapKey("uniqueKey") @Select("SELECT CONCAT(wsp.app, wsp.stream) as unique_key, wsp.*, wdc.* , " + " wdc.id as gb_id " + - " from wvp_stream_push wsp " + - " LEFT join wvp_device_channel wdc on wdc.data_type = 2 and wsp.id = wdc.data_device_id") + " from video_stream_push wsp " + + " LEFT join video_device_channel wdc on wdc.data_type = 2 and wsp.id = wdc.data_device_id") Map getAllAppAndStreamMap(); @MapKey("gbDeviceId") @Select("SELECT wdc.gb_device_id, wsp.id as data_device_id, wsp.*, wsp.* , wdc.id as gb_id " + - " from wvp_stream_push wsp " + - " LEFT join wvp_device_channel wdc on wdc.data_type = 2 and wsp.id = wdc.data_device_id") + " from video_stream_push wsp " + + " LEFT join video_device_channel wdc on wdc.data_type = 2 and wsp.id = wdc.data_device_id") Map getAllGBId(); - @Select("SELECT st.*, st.id as data_device_id, wdc.*, wdc.id as gb_id FROM wvp_stream_push st LEFT join wvp_device_channel wdc on wdc.data_type = 2 and st.id = wdc.data_device_id WHERE st.id=#{id}") + @Select("SELECT st.*, st.id as data_device_id, wdc.*, wdc.id as gb_id FROM video_stream_push st LEFT join video_device_channel wdc on wdc.data_type = 2 and st.id = wdc.data_device_id WHERE st.id=#{id}") StreamPush queryOne(@Param("id") Long id); @Select(""}) int batchUpdate(List streamPushItemForUpdate); - @Update(" UPDATE wvp_stream_push SET deleted = 1" + + @Update(" UPDATE video_stream_push SET deleted = 1" + " WHERE server_id = #{serverId}" + " AND NOT EXISTS (" + " SELECT 1 " + - " FROM wvp_device_channel wdc " + + " FROM video_device_channel wdc " + " WHERE wdc.data_type = 2 " + - " AND wvp_stream_push.id = wdc.data_device_id" + + " AND video_stream_push.id = wdc.data_device_id" + " )") void deleteWithoutGBId(@Param("serverId") String serverId); } diff --git a/viewsh-module-video/viewsh-module-video-server/src/main/resources/application.yaml b/viewsh-module-video/viewsh-module-video-server/src/main/resources/application.yaml index ea942563..876be774 100644 --- a/viewsh-module-video/viewsh-module-video-server/src/main/resources/application.yaml +++ b/viewsh-module-video/viewsh-module-video-server/src/main/resources/application.yaml @@ -118,8 +118,12 @@ viewsh: version: ${viewsh.info.version} tenant: # 多租户相关配置项 enable: true - ignore-tables: - - wvp_media_server + ignore-tables: # 不进行租户过滤的表(全局共享表) + - video_media_server + ignore-project-tables: # 不进行项目隔离的表(租户级字典表 + 全局共享表) + - video_media_server + - video_ai_algorithm + - video_ai_algo_template --- #################### WVP GB28181 相关配置 ####################