-- 车辆管理模块数据库表结构

-- 车辆档案表
CREATE TABLE IF NOT EXISTS `vehicle_archive` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `vin` VARCHAR(50) NOT NULL COMMENT '车架号',
    `category` VARCHAR(50) COMMENT '分类',
    `model` VARCHAR(50) COMMENT '车型',
    `color` VARCHAR(20) COMMENT '颜色',
    `owner_id` BIGINT COMMENT '车主ID',
    `owner_name` VARCHAR(50) COMMENT '车主姓名',
    `owner_mobile` VARCHAR(20) COMMENT '车主手机号',
    `activation_status` TINYINT DEFAULT 0 COMMENT '激活状态：0-未激活，1-已激活',
    `theft_status` TINYINT DEFAULT 0 COMMENT '失窃状态：0-未失窃，1-已失窃',
    `lock_status` TINYINT DEFAULT 0 COMMENT '锁定状态：0-未锁定，1-已锁定',
    `activation_time` DATETIME COMMENT '激活时间',
    `production_time` DATETIME COMMENT '生产时间',
    `sales_outlet` VARCHAR(100) COMMENT '销售网点',
    `total_mileage` INT COMMENT 'ODO总里程',
    `motor_number` VARCHAR(50) COMMENT '电机号',
    `bus_voltage` INT COMMENT '车辆母线电压',
    `bus_current` INT COMMENT '车辆母线电流',
    `brake_count` INT COMMENT '刹车总数',
    `battery_number` VARCHAR(50) COMMENT '电池编号',
    `battery_type` VARCHAR(50) COMMENT '电池类型',
    `battery_capacity_model` VARCHAR(50) COMMENT '电池容量型号',
    `battery_health` INT COMMENT '电池健康度',
    `image_url` VARCHAR(500) COMMENT '车辆图片URL',
    `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_vin` (`vin`),
    KEY `idx_category_model` (`category`, `model`),
    KEY `idx_owner_id` (`owner_id`),
    KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆档案表';

-- 车辆图库表
CREATE TABLE IF NOT EXISTS `vehicle_gallery` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `category` VARCHAR(50) COMMENT '分类',
    `model` VARCHAR(50) COMMENT '车型号',
    `image_count` INT DEFAULT 0 COMMENT '图片数量',
    `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`),
    KEY `idx_category_model` (`category`, `model`),
    KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆图库表';

-- 车辆图片表
CREATE TABLE IF NOT EXISTS `vehicle_image` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `name` VARCHAR(200) COMMENT '图片名称',
    `url` VARCHAR(500) NOT NULL COMMENT '图片URL',
    `category` VARCHAR(50) COMMENT '分类：正面、侧面、斜侧45度角、背面、俯拍、细节特写、APP首页展示图',
    `vehicle_id` BIGINT COMMENT '车辆ID',
    `gallery_id` BIGINT 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`),
    KEY `idx_gallery_id` (`gallery_id`),
    KEY `idx_vehicle_id` (`vehicle_id`),
    KEY `idx_category` (`category`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆图片表';

-- 失窃监控表
CREATE TABLE IF NOT EXISTS `vehicle_theft` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `vehicle_id` BIGINT NOT NULL COMMENT '车辆ID',
    `vin` VARCHAR(50) NOT NULL COMMENT '车架号',
    `category` VARCHAR(50) COMMENT '分类',
    `model` VARCHAR(50) COMMENT '车型号',
    `owner_name` VARCHAR(50) COMMENT '车主姓名',
    `owner_mobile` VARCHAR(20) COMMENT '手机号',
    `theft_report_time` DATETIME NOT NULL COMMENT '失窃上报时间',
    `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`),
    KEY `idx_vehicle_id` (`vehicle_id`),
    KEY `idx_vin` (`vin`),
    KEY `idx_theft_report_time` (`theft_report_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='失窃监控表';

-- 使用指南与支持表
CREATE TABLE IF NOT EXISTS `vehicle_guide` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `title` VARCHAR(200) NOT NULL COMMENT '标题',
    `model` VARCHAR(50) COMMENT '车型',
    `category` VARCHAR(50) COMMENT '分类',
    `content` TEXT COMMENT '内容',
    `is_display` TINYINT DEFAULT 1 COMMENT '是否显示：0-不显示，1-显示',
    `status` TINYINT DEFAULT 0 COMMENT '状态：0-未上架，1-已上架',
    `on_shelf_time` DATETIME COMMENT '上架时间',
    `off_shelf_time` DATETIME COMMENT '下架时间',
    `sort` INT DEFAULT 0 COMMENT '排序',
    `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`),
    KEY `idx_category` (`category`),
    KEY `idx_status` (`status`),
    KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='使用指南与支持表';

-- APP音效管理表
CREATE TABLE IF NOT EXISTS `vehicle_sound` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `model` VARCHAR(50) COMMENT '车型',
    `prompt_tone_type` VARCHAR(50) COMMENT '提示音类型',
    `sound_count` INT DEFAULT 0 COMMENT '音效数量',
    `remark` VARCHAR(500) COMMENT '备注',
    `status` TINYINT DEFAULT 1 COMMENT '状态：0-禁用，1-启用',
    `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`),
    KEY `idx_model` (`model`),
    KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='APP音效管理表';

-- 车辆授权设置表
CREATE TABLE IF NOT EXISTS `vehicle_auth` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `model` VARCHAR(50) COMMENT '车型',
    `max_users` INT DEFAULT 5 COMMENT '最高人数',
    `authorizable_permissions` VARCHAR(500) COMMENT '可授权权限（逗号分隔）',
    `temp_auth_time` INT COMMENT '临时授权时间(min)',
    `temp_auth_mileage` INT COMMENT '临时授权公里数(km)',
    `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`),
    KEY `idx_model` (`model`),
    KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='车辆授权设置表';

-- 分类管理表
CREATE TABLE IF NOT EXISTS `vehicle_category` (
    `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT 'ID',
    `icon` VARCHAR(500) COMMENT '图标',
    `name` VARCHAR(100) NOT NULL COMMENT '分类名称',
    `code` VARCHAR(50) COMMENT '分类代码',
    `category_type` VARCHAR(50) COMMENT '分类类型：guide-使用指南，sound-音效，gallery-图库等',
    `article_count` INT DEFAULT 0 COMMENT '文章数量',
    `is_display` TINYINT DEFAULT 1 COMMENT '是否显示：0-不显示，1-显示',
    `sort` INT DEFAULT 0 COMMENT '排序',
    `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`),
    KEY `idx_category_type` (`category_type`),
    KEY `idx_is_display` (`is_display`),
    KEY `idx_update_time` (`update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='分类管理表';

