-- 创建数据库
CREATE DATABASE IF NOT EXISTS `storm-device`
DEFAULT CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;

USE `storm-device`;
SET NAMES utf8mb4;

-- 设备表修改
CREATE TABLE device (
                        id BIGINT UNSIGNED 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 DEFAULT NULL COMMENT '许可证过期时间',
                        last_massage_time DATETIME DEFAULT NULL COMMENT '最后按摩时间',

    -- 在线状态时间记录
                        last_online_time DATETIME DEFAULT NULL COMMENT '最后上线时间',
                        last_offline_time DATETIME DEFAULT NULL COMMENT '最后下线时间',
                        activation_time DATETIME DEFAULT NULL 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 CURRENT_TIMESTAMP COMMENT '创建时间',
                        update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

                        PRIMARY KEY (id),
                        UNIQUE KEY uk_device_id (device_id),
                        KEY idx_product_id (product_id),
                        KEY idx_shop_id (shop_id),
                        KEY idx_status (status),
                        KEY idx_license_status (license_status),
                        KEY idx_last_online_time (last_online_time),
                        KEY idx_create_time (create_time)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备表';

-- 设备状态日志表修改
CREATE TABLE device_status_log (
                                   id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID',
                                   device_id VARCHAR(255) NOT NULL COMMENT '设备ID',
                                   status VARCHAR(50) DEFAULT NULL COMMENT '状态',
                                   event_type VARCHAR(100) 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(100) DEFAULT NULL COMMENT '按摩头类型',
                                   body_part VARCHAR(100) 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 DEFAULT NULL 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 CURRENT_TIMESTAMP COMMENT '创建时间',
                                   update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

                                   PRIMARY KEY (id),
                                   UNIQUE KEY uk_device_event_time (device_id, event_time, status, event_type),
                                   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),
                                   KEY idx_create_time (create_time)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备状态日志表';

-- 按摩任务表修改
CREATE TABLE massage_task (
                              id BIGINT UNSIGNED 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(100) DEFAULT NULL COMMENT '按摩头类型',
                              body_part VARCHAR(100) 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 '创建时间戳(毫秒)',

    -- 描述和备注
                              description TEXT COMMENT '描述',
                              remark TEXT COMMENT '备注',

    -- 时间字段
                              create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',

    -- 系统字段
                              is_deleted TINYINT(1) DEFAULT 0 COMMENT '是否删除(0-未删除, 1-已删除)',
                              update_by VARCHAR(255) DEFAULT NULL COMMENT '更新人',
                              update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

                              PRIMARY KEY (id),
                              UNIQUE KEY uk_device_task_time (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 UNSIGNED NOT NULL AUTO_INCREMENT 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 '上线次数',

    -- 描述和备注
                                      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 CURRENT_TIMESTAMP COMMENT '创建时间',
                                      update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

                                      PRIMARY KEY (id),
                                      UNIQUE KEY uk_device_stat_date (device_id, stat_date),
                                      KEY idx_stat_date (stat_date),
                                      KEY idx_device_id (device_id),
                                      KEY idx_create_time (create_time)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备运行时长统计表';

-- 设备按头使用统计表修改
CREATE TABLE device_head_usage (
                                   id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT 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 DEFAULT NULL 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 CURRENT_TIMESTAMP COMMENT '创建时间',
                                   update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',

                                   PRIMARY KEY (id),
                                   UNIQUE KEY uk_device_head_type (device_id, head_type),
                                   KEY idx_head_type (head_type),
                                   KEY idx_last_used_time (last_used_time),
                                   KEY idx_device_id (device_id),
                                   KEY idx_create_time (create_time)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='设备按头使用统计表';