-- ============================================
-- 车况模块数据库表结构
-- 创建时间：2026-01-26
-- 说明：用于APP端车辆管理和状态查询
-- ============================================

-- ============================================
-- 1. user_vehicle_binding（用户-车辆关系表）
-- ============================================
-- 支持多对多关系：一个用户可以有多个车辆，一个车辆可以授权给多个用户
CREATE TABLE IF NOT EXISTS `user_vehicle_binding` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '关系ID',
  `user_id` bigint NOT NULL COMMENT '用户ID',
  `vehicle_id` bigint NOT NULL COMMENT '车辆ID',
  `user_type` tinyint NOT NULL COMMENT '用户类型（1-最高权限，2-车主，3-分享用户）',
  `is_default` tinyint DEFAULT '0' COMMENT '是否默认车辆（0-否，1-是）',
  `bind_time` datetime NOT NULL 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 b'0' COMMENT '是否删除',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_vehicle` (`user_id`, `vehicle_id`),
  KEY `idx_vehicle_id` (`vehicle_id`),
  KEY `idx_tenant_id` (`tenant_id`),
  KEY `idx_user_id` (`user_id`),
  KEY `idx_is_default` (`is_default`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户-车辆关系表';

-- ============================================
-- 2. vehicle_status（车辆状态表）
-- ============================================
-- 存储车辆实时状态信息
CREATE TABLE IF NOT EXISTS `vehicle_status` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '状态ID',
  `vehicle_id` bigint NOT NULL COMMENT '车辆ID',
  `defense_status` tinyint DEFAULT '0' COMMENT '设防状态（0-撤防，1-设防）',
  `power_status` tinyint DEFAULT '0' COMMENT '上电状态（0-下电，1-上电）',
  `door_lock_status` tinyint DEFAULT '0' COMMENT '门锁状态（0-开，1-关）',
  `battery_level` tinyint DEFAULT '0' COMMENT '电池电量（0-100）',
  `signal_strength` tinyint DEFAULT '0' COMMENT '信号强度（0-4）',
  `bluetooth_status` tinyint DEFAULT '0' COMMENT '蓝牙连接状态（0-未连接，1-已连接）',
  `range` int DEFAULT '0' COMMENT '续航里程（km）',
  `front_tire_pressure` decimal(5,2) DEFAULT NULL COMMENT '前轮胎压（kPa）',
  `rear_tire_pressure` decimal(5,2) DEFAULT NULL COMMENT '后轮胎压（kPa）',
  `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_vehicle_id` (`vehicle_id`),
  KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='车辆状态表';

-- ============================================
-- 3. vehicle 表字段补充（如果不存在）
-- ============================================
-- 检查并添加 bluetooth_mac 字段
SET @dbname = DATABASE();
SET @tablename = 'vehicle';
SET @columnname = 'bluetooth_mac';
SET @preparedStatement = (SELECT IF(
    (
        SELECT COUNT(*) FROM INFORMATION_SCHEMA.COLUMNS
        WHERE
            (TABLE_SCHEMA = @dbname)
            AND (TABLE_NAME = @tablename)
            AND (COLUMN_NAME = @columnname)
    ) > 0,
    'SELECT 1',
    CONCAT('ALTER TABLE ', @tablename, ' ADD COLUMN ', @columnname, ' varchar(32) DEFAULT NULL COMMENT ''蓝牙MAC地址'' AFTER `device_sn`, ADD KEY `idx_bluetooth_mac` (`', @columnname, '`);')
));
PREPARE alterIfNotExists FROM @preparedStatement;
EXECUTE alterIfNotExists;
DEALLOCATE PREPARE alterIfNotExists;

SELECT '车况模块表创建完成！' AS message;

