-- Ops 模块:客流统计小时汇总表 -- 用于业务报表统计,数据来源于 IoT 设备的客流计数器 -- 每小时由 Ops 的 TrafficStatisticsPersistJob 从 Redis 持久化到 MySQL CREATE TABLE IF NOT EXISTS `ops_traffic_statistics` ( `id` BIGINT AUTO_INCREMENT PRIMARY KEY, `device_id` BIGINT NOT NULL COMMENT '设备ID(数据来源)', `area_id` BIGINT NOT NULL COMMENT '区域ID(主查询维度)', `stat_hour` DATETIME NOT NULL COMMENT '统计小时(精确到小时,如 2026-02-03 10:00:00)', `people_in` INT NOT NULL DEFAULT 0 COMMENT '进入人数', `people_out` INT NOT NULL DEFAULT 0 COMMENT '离开人数', `tenant_id` BIGINT NOT NULL DEFAULT 0 COMMENT '租户ID', `creator` VARCHAR(64) DEFAULT '' COMMENT '创建者', `create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updater` VARCHAR(64) DEFAULT '' COMMENT '更新者', `update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted` BIT(1) NOT NULL DEFAULT 0 COMMENT '是否删除', -- 唯一约束:同一设备、同一小时、同一租户,只有一条记录 UNIQUE KEY `uk_device_hour_tenant` (`device_id`, `stat_hour`, `tenant_id`, `deleted`), -- 区域+小时索引:用于按区域统计客流 INDEX `idx_area_hour` (`area_id`, `stat_hour`), -- 设备+小时索引:用于按设备查询历史 INDEX `idx_device_hour` (`device_id`, `stat_hour`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客流统计小时汇总表(Ops业务统计)';