-- 创建数据库 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);