191 lines
12 KiB
SQL
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); |