补充设备告警与休眠设置后端能力

This commit is contained in:
stu2not
2026-05-07 16:05:31 +08:00
parent cfa6a77134
commit f825c60176
10 changed files with 489 additions and 31 deletions

View File

@@ -367,6 +367,20 @@ CREATE TABLE IF NOT EXISTS `device_settings` (
REFERENCES `device_auth` (`device_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- Device alarm events are reported by the device side through MQTT msg_id=010.
CREATE TABLE IF NOT EXISTS `device_alarm_events` (
`alarm_id` BIGINT NOT NULL AUTO_INCREMENT,
`device_id` VARCHAR(64) NOT NULL,
`owner_user_id` BIGINT NULL,
`child_id` BIGINT NULL,
`source_msg_id` VARCHAR(8) NOT NULL DEFAULT '010',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`alarm_id`),
KEY `idx_device_alarm_device_created` (`device_id`, `created_at`),
KEY `idx_device_alarm_owner_created` (`owner_user_id`, `created_at`),
KEY `idx_device_alarm_child_created` (`child_id`, `created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `im_conversations` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
`conversation_type` TINYINT UNSIGNED NOT NULL,
@@ -427,20 +441,20 @@ CREATE TABLE IF NOT EXISTS `im_messages` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `child_location_current` (
`child_id` BIGINT NOT NULL COMMENT '孩子ID当前表每个孩子仅保留一条最新定位',
`device_id` VARCHAR(64) NOT NULL COMMENT '定位上报设备ID',
`coord_type` VARCHAR(16) NOT NULL DEFAULT 'gcj02' COMMENT '坐标系类型统一使用gcj02',
`lat` DECIMAL(10, 7) NOT NULL COMMENT '纬度',
`lng` DECIMAL(10, 7) NOT NULL COMMENT '经度',
`accuracy_m` INT UNSIGNED NULL COMMENT '定位精度,单位米',
`altitude_m` DECIMAL(8, 2) NULL COMMENT '海拔高度,单位米',
`speed_mps` DECIMAL(8, 2) NULL COMMENT '速度,单位米每秒',
`heading_deg` SMALLINT UNSIGNED NULL COMMENT '航向角单位度范围0到360',
`source` TINYINT UNSIGNED NOT NULL COMMENT '定位来源编码,由设备侧约定',
`battery_pct` TINYINT UNSIGNED NULL COMMENT '设备电量百分比范围0到100',
`device_time` DATETIME NOT NULL COMMENT '设备采集定位时间',
`server_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '服务端接收并写入时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '当前定位记录最后更新时间',
`child_id` BIGINT NOT NULL,
`device_id` VARCHAR(64) NOT NULL,
`coord_type` VARCHAR(16) NOT NULL DEFAULT 'gcj02',
`lat` DECIMAL(10, 7) NOT NULL,
`lng` DECIMAL(10, 7) NOT NULL,
`accuracy_m` INT UNSIGNED NULL,
`altitude_m` DECIMAL(8, 2) NULL,
`speed_mps` DECIMAL(8, 2) NULL,
`heading_deg` SMALLINT UNSIGNED NULL,
`source` TINYINT UNSIGNED NOT NULL,
`battery_pct` TINYINT UNSIGNED NULL,
`device_time` DATETIME NOT NULL,
`server_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`child_id`),
KEY `idx_child_loc_current_device` (`device_id`),
KEY `idx_child_loc_current_server_time` (`server_time`),
@@ -454,21 +468,21 @@ CREATE TABLE IF NOT EXISTS `child_location_current` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
CREATE TABLE IF NOT EXISTS `child_location_history` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '历史定位记录ID',
`child_id` BIGINT NOT NULL COMMENT '孩子ID',
`device_id` VARCHAR(64) NOT NULL COMMENT '定位上报设备ID',
`coord_type` VARCHAR(16) NOT NULL DEFAULT 'gcj02' COMMENT '坐标系类型统一使用gcj02',
`lat` DECIMAL(10, 7) NOT NULL COMMENT '纬度',
`lng` DECIMAL(10, 7) NOT NULL COMMENT '经度',
`accuracy_m` INT UNSIGNED NULL COMMENT '定位精度,单位米',
`altitude_m` DECIMAL(8, 2) NULL COMMENT '海拔高度,单位米',
`speed_mps` DECIMAL(8, 2) NULL COMMENT '速度,单位米每秒',
`heading_deg` SMALLINT UNSIGNED NULL COMMENT '航向角单位度范围0到360',
`source` TINYINT UNSIGNED NOT NULL COMMENT '定位来源编码,由设备侧约定',
`battery_pct` TINYINT UNSIGNED NULL COMMENT '设备电量百分比范围0到100',
`device_time` DATETIME NOT NULL COMMENT '设备采集定位时间',
`server_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '服务端接收并写入时间',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '历史定位记录创建时间',
`id` BIGINT NOT NULL AUTO_INCREMENT,
`child_id` BIGINT NOT NULL,
`device_id` VARCHAR(64) NOT NULL,
`coord_type` VARCHAR(16) NOT NULL DEFAULT 'gcj02',
`lat` DECIMAL(10, 7) NOT NULL,
`lng` DECIMAL(10, 7) NOT NULL,
`accuracy_m` INT UNSIGNED NULL,
`altitude_m` DECIMAL(8, 2) NULL,
`speed_mps` DECIMAL(8, 2) NULL,
`heading_deg` SMALLINT UNSIGNED NULL,
`source` TINYINT UNSIGNED NOT NULL,
`battery_pct` TINYINT UNSIGNED NULL,
`device_time` DATETIME NOT NULL,
`server_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_child_loc_hist_child` (`child_id`, `created_at`),
KEY `idx_child_loc_hist_device` (`device_id`, `created_at`),