Storm_backend/sql/Device.sql
2025-09-28 20:42:16 +08:00

191 lines
12 KiB
SQL

-- 创建数据库
CREATE DATABASE IF NOT EXISTS `storm-device`;
USE `storm-device`;
SET NAMES utf8mb4;
-- 设备表(主表)
CREATE TABLE device (
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
device_id VARCHAR(255) NOT NULL COMMENT '设备ID',
device_name VARCHAR(255) DEFAULT NULL COMMENT '设备名称',
product_id VARCHAR(255) DEFAULT NULL COMMENT '产品ID',
product_name VARCHAR(255) DEFAULT NULL COMMENT '产品名称',
device_type INT DEFAULT NULL COMMENT '设备类型(1:RS-LL-X1, 2:RS-LL-X2)',
STATUS VARCHAR(50) DEFAULT 'OFFLINE' COMMENT '设备在线状态(ONLINE/OFFLINE)',
-- 位置信息
location VARCHAR(255) DEFAULT NULL COMMENT '安装位置',
shop_id VARCHAR(255) DEFAULT NULL COMMENT '店铺ID',
longitude VARCHAR(255) DEFAULT NULL COMMENT '经度',
latitude VARCHAR(255) DEFAULT NULL COMMENT '纬度',
-- 版本信息
software_version VARCHAR(255) DEFAULT NULL COMMENT '软件版本',
vtxdb_version VARCHAR(255) DEFAULT NULL COMMENT '参数服务器版本',
-- 许可证信息
activation_code VARCHAR(255) DEFAULT NULL COMMENT '激活码',
serial_number VARCHAR(255) DEFAULT NULL COMMENT '序列号',
license_status VARCHAR(50) DEFAULT NULL COMMENT '许可证状态',
license_expire_time DATETIME COMMENT '许可证过期时间',
last_massage_time DATETIME COMMENT '最后消息时间',
-- 在线状态时间记录
last_online_time DATETIME COMMENT '最后上线时间',
last_offline_time DATETIME COMMENT '最后下线时间',
activation_time DATETIME COMMENT '激活时间',
-- 运行时长统计(秒)
total_online_duration BIGINT DEFAULT 0 COMMENT '累计在线时长(秒)',
daily_duration BIGINT DEFAULT 0 COMMENT '今日运行时长(秒)',
weekly_duration BIGINT DEFAULT 0 COMMENT '本周运行时长(秒)',
monthly_duration BIGINT DEFAULT 0 COMMENT '本月运行时长(秒)',
-- 描述和备注
description TEXT COMMENT '设备描述',
remark TEXT COMMENT '备注',
-- 系统字段
is_deleted TINYINT(1) DEFAULT '0' COMMENT '是否删除(0-未删除, 1-已删除)',
create_by VARCHAR(255) DEFAULT NULL COMMENT '创建人',
update_by VARCHAR(255) DEFAULT NULL COMMENT '更新人',
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_device_id (device_id),
KEY idx_device_id (device_id),
KEY idx_product_id (product_id),
KEY idx_shop_id (shop_id),
KEY idx_status (STATUS),
KEY idx_create_time (create_time),
KEY idx_license_status (license_status),
KEY idx_last_online_time (last_online_time)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备表';
-- 设备状态日志表
CREATE TABLE device_status_log (
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
device_id VARCHAR(255) NOT NULL COMMENT '设备ID',
STATUS VARCHAR(255) DEFAULT NULL COMMENT '状态',
event_type VARCHAR(255) DEFAULT NULL COMMENT '事件类型',
-- 毫秒时间戳字段
massage_start_time BIGINT DEFAULT NULL COMMENT '按摩开始时间(毫秒时间戳)',
massage_end_time BIGINT DEFAULT NULL COMMENT '按摩结束时间(毫秒时间戳)',
massage_duration BIGINT DEFAULT NULL COMMENT '按摩持续时间(毫秒)',
-- 按摩相关信息
head_type VARCHAR(255) DEFAULT NULL COMMENT '按摩头类型',
body_part VARCHAR(255) DEFAULT NULL COMMENT '身体部位',
massage_plan VARCHAR(255) DEFAULT NULL COMMENT '按摩方案',
-- 时间字段
event_time DATETIME DEFAULT NULL COMMENT '事件时间',
last_online_time DATETIME DEFAULT NULL COMMENT '最后在线时间',
duration INT(11) DEFAULT NULL COMMENT '持续时间(秒)',
-- 系统字段
is_deleted TINYINT(1) DEFAULT '0' COMMENT '是否删除(0-未删除, 1-已删除)',
create_by VARCHAR(255) DEFAULT NULL COMMENT '创建人',
update_by VARCHAR(255) DEFAULT NULL COMMENT '更新人',
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_device_event (device_id, event_time, STATUS),
KEY idx_device_id (device_id),
KEY idx_event_time (event_time),
KEY idx_status (STATUS),
KEY idx_head_type (head_type),
KEY idx_event_type (event_type)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备状态日志表';
-- 按摩任务表
CREATE TABLE massage_task (
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
device_id VARCHAR(255) NOT NULL COMMENT '设备ID',
device_name VARCHAR(255) DEFAULT NULL COMMENT '设备名称',
product_name VARCHAR(255) DEFAULT NULL COMMENT '产品名称',
head_type VARCHAR(255) DEFAULT NULL COMMENT '按摩头类型',
body_part VARCHAR(255) DEFAULT NULL COMMENT '身体部位',
massage_plan VARCHAR(255) DEFAULT NULL COMMENT '按摩方案',
-- 创建人
create_by VARCHAR(255) DEFAULT NULL COMMENT '创建人',
-- 毫秒时间戳字段
start_time BIGINT DEFAULT NULL COMMENT '开始时间(毫秒时间戳)',
end_time BIGINT DEFAULT NULL COMMENT '结束时间(毫秒时间戳)',
task_time BIGINT DEFAULT NULL COMMENT '任务时长(毫秒)',
create_timestamp BIGINT DEFAULT NULL COMMENT '创建时间戳(毫秒)',
-- 时间字段
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
-- 系统字段
is_deleted TINYINT(1) DEFAULT '0' COMMENT '是否删除(0-未删除, 1-已删除)',
update_by VARCHAR(255) DEFAULT NULL COMMENT '更新人',
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (id),
UNIQUE KEY uk_device_task (device_id, start_time, head_type, body_part),
KEY idx_device_id (device_id),
KEY idx_start_time (start_time),
KEY idx_head_type (head_type),
KEY idx_body_part (body_part),
KEY idx_create_time (create_time)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='按摩任务表';
-- 设备运行时长统计表
CREATE TABLE device_runtime_stats (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
device_id VARCHAR(255) NOT NULL COMMENT '设备唯一标识',
stat_date DATE NOT NULL COMMENT '统计日期',
daily_duration BIGINT DEFAULT 0 COMMENT '日运行时长(秒)',
weekly_duration BIGINT DEFAULT 0 COMMENT '周运行时长(秒)',
monthly_duration BIGINT DEFAULT 0 COMMENT '月运行时长(秒)',
online_count INT DEFAULT 0 COMMENT '上线次数',
-- 系统字段
is_deleted TINYINT(1) DEFAULT '0' COMMENT '是否删除(0-未删除, 1-已删除)',
create_by VARCHAR(255) DEFAULT NULL COMMENT '创建人',
update_by VARCHAR(255) DEFAULT NULL COMMENT '更新人',
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
UNIQUE KEY uk_device_date (device_id, stat_date),
KEY idx_stat_date (stat_date),
KEY idx_device_id (device_id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备运行时长统计表';
-- 设备按头使用统计表
CREATE TABLE device_head_usage (
id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
device_id VARCHAR(255) NOT NULL COMMENT '设备唯一标识',
head_type VARCHAR(100) NOT NULL COMMENT '按头类型',
usage_count INT DEFAULT 0 COMMENT '使用次数',
total_duration BIGINT DEFAULT 0 COMMENT '总使用时长(秒)',
daily_duration BIGINT DEFAULT 0 COMMENT '今日使用时长(秒)',
weekly_duration BIGINT DEFAULT 0 COMMENT '本周使用时长(秒)',
monthly_duration BIGINT DEFAULT 0 COMMENT '本月使用时长(秒)',
last_used_time DATETIME COMMENT '最后使用时间',
-- 系统字段
is_deleted TINYINT(1) DEFAULT '0' COMMENT '是否删除(0-未删除, 1-已删除)',
create_by VARCHAR(255) DEFAULT NULL COMMENT '创建人',
update_by VARCHAR(255) DEFAULT NULL COMMENT '更新人',
create_time DATETIME DEFAULT NULL COMMENT '创建时间',
update_time DATETIME DEFAULT NULL COMMENT '更新时间',
UNIQUE KEY uk_device_head (device_id, head_type),
KEY idx_head_type (head_type),
KEY idx_last_used_time (last_used_time),
KEY idx_device_id (device_id)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备按头使用统计表';
-- 如果业务允许,可以考虑调整唯一键约束,增加时间容差
-- 比如允许同一设备在同一分钟内只有一条相同状态的记录
ALTER TABLE device_status_log
DROP INDEX uk_device_event,
ADD UNIQUE KEY uk_device_event_minute (device_id, DATE_FORMAT(event_time, '%Y-%m-%d %H:%i'), status);