-- ============================================================
-- 信义门禁系统 建表脚本
-- ============================================================

-- 1. 来访申请主表（人员/车辆共用，apply_type区分）
DROP TABLE IF EXISTS `gate_visitor_apply`;
CREATE TABLE `gate_visitor_apply` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `visitor_apply_id` varchar(36) NOT NULL COMMENT '业务主键UUID',
    `apply_type` tinyint NOT NULL COMMENT '申请类型：1-外来人员 2-外来车辆',
    `source_unit` varchar(100) DEFAULT NULL COMMENT '来源单位',
    `visitor_count` int DEFAULT NULL COMMENT '入场人数',
    `license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号（车辆申请时填写）',
    `vehicle_type` varchar(50) DEFAULT NULL COMMENT '车型（车辆申请时填写）',
    `purpose` varchar(500) DEFAULT NULL COMMENT '入场事由',
    `apply_start_time` datetime DEFAULT NULL COMMENT '申请开始时间',
    `apply_end_time` datetime DEFAULT NULL COMMENT '申请结束时间',
    `audit_dept_id` bigint DEFAULT NULL COMMENT '审批部门ID',
    `status` tinyint NOT NULL DEFAULT '0' COMMENT '申请状态：0未提交 1待审核 2待审批 3待确认 4已进场 5已出场 6审核被打回 7审批被打回 8待归档 9已归档 10已过期',
    `reject_reason` varchar(500) DEFAULT NULL COMMENT '拒绝原因',
    `apply_source` tinyint DEFAULT NULL COMMENT '申请来源 1PC端 2扫码申请',
    `apply_dept_id` bigint DEFAULT NULL COMMENT '申请人部门ID',
    `apply_user_id` bigint DEFAULT NULL COMMENT '申请人ID',
    `delete_enum` varchar(32) DEFAULT NULL COMMENT '删除标识true false',
    `remarks` varchar(255) DEFAULT NULL COMMENT '备注',
    `create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
    `update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
    `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
    `org_id` bigint DEFAULT NULL COMMENT '单位id',
    `version` int DEFAULT NULL COMMENT '版本',
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime DEFAULT NULL COMMENT '修改时间',
    `create_id` bigint DEFAULT NULL COMMENT '创建人id',
    `update_id` bigint DEFAULT NULL COMMENT '修改人id',
    `env` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_apply_id` (`visitor_apply_id`),
    KEY `idx_apply_type` (`apply_type`),
    KEY `idx_status` (`status`),
    KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='来访申请主表';

-- 2. 来访人员明细表（人员申请的来访人员 + 车辆申请的车内人员）
DROP TABLE IF EXISTS `gate_visitor_person`;
CREATE TABLE `gate_visitor_person` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `visitor_person_id` varchar(36) NOT NULL COMMENT '业务主键UUID',
    `visitor_apply_id` varchar(36) NOT NULL COMMENT '申请主表ID',
    `person_type` tinyint NOT NULL COMMENT '人员类型：1-来访人员 2-车内人员',
    `name` varchar(50) DEFAULT NULL COMMENT '姓名',
    `phone` varchar(20) DEFAULT NULL COMMENT '手机号',
    `delete_enum` varchar(32) DEFAULT NULL COMMENT '删除标识true false',
    `remarks` varchar(255) DEFAULT NULL COMMENT '备注',
    `create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
    `update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
    `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
    `org_id` bigint DEFAULT NULL COMMENT '单位id',
    `version` int DEFAULT NULL COMMENT '版本',
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime DEFAULT NULL COMMENT '修改时间',
    `create_id` bigint DEFAULT NULL COMMENT '创建人id',
    `update_id` bigint DEFAULT NULL COMMENT '修改人id',
    `env` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_visitor_person_id` (`visitor_person_id`),
    KEY `idx_visitor_apply_id` (`visitor_apply_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='来访人员明细表';

-- 3. 审核记录表（职能部门审核、安检部门审批、现场确认共用）
DROP TABLE IF EXISTS `gate_visitor_audit`;
CREATE TABLE `gate_visitor_audit` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `visitor_audit_id` varchar(36) NOT NULL COMMENT '业务主键UUID',
    `visitor_apply_id` varchar(36) NOT NULL COMMENT '申请主表ID',
    `audit_type` tinyint NOT NULL COMMENT '审核类型：1-职能部室审核 2-安监部门审批 3-现场确认',
    `audit_result` tinyint NOT NULL COMMENT '审核结果：1-通过 2-拒绝',
    `audit_opinion` varchar(500) DEFAULT NULL COMMENT '审核意见',
    `auditor_id` bigint DEFAULT NULL COMMENT '审核人ID',
    `auditor_name` varchar(50) DEFAULT NULL COMMENT '审核人姓名',
    `audit_time` datetime DEFAULT NULL COMMENT '审核时间',
    `delete_enum` varchar(32) DEFAULT NULL COMMENT '删除标识true false',
    `remarks` varchar(255) DEFAULT NULL COMMENT '备注',
    `create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
    `update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
    `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
    `org_id` bigint DEFAULT NULL COMMENT '单位id',
    `version` int DEFAULT NULL COMMENT '版本',
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime DEFAULT NULL COMMENT '修改时间',
    `create_id` bigint DEFAULT NULL COMMENT '创建人id',
    `update_id` bigint DEFAULT NULL COMMENT '修改人id',
    `env` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_visitor_audit_id` (`visitor_audit_id`),
    KEY `idx_visitor_apply_id` (`visitor_apply_id`),
    KEY `idx_audit_type` (`audit_type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='审核记录表';

-- 4. 黑名单（人员/车辆共用，blacklist_type区分）
DROP TABLE IF EXISTS `gate_blacklist`;
CREATE TABLE `gate_blacklist` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `blacklist_id` varchar(36) NOT NULL COMMENT '业务主键UUID',
    `blacklist_type` tinyint NOT NULL COMMENT '黑名单类型：1-人员 2-车辆',
    `name` varchar(50) DEFAULT NULL COMMENT '姓名（人员黑名单）',
    `phone` varchar(20) DEFAULT NULL COMMENT '手机号（人员黑名单）',
    `license_plate` varchar(20) DEFAULT NULL COMMENT '车牌号（车辆黑名单）',
    `affiliated_unit` varchar(100) DEFAULT NULL COMMENT '所属单位',
    `join_time` datetime DEFAULT NULL COMMENT '加入时间',
    `added_by_id` bigint DEFAULT NULL COMMENT '添加人ID',
    `status` tinyint NOT NULL DEFAULT '1' COMMENT '状态：1-启用 0-禁用',
    `delete_enum` varchar(32) DEFAULT NULL COMMENT '删除标识true false',
    `remarks` varchar(255) DEFAULT NULL COMMENT '备注',
    `create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
    `update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
    `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
    `org_id` bigint DEFAULT NULL COMMENT '单位id',
    `version` int DEFAULT NULL COMMENT '版本',
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime DEFAULT NULL COMMENT '修改时间',
    `create_id` bigint DEFAULT NULL COMMENT '创建人id',
    `update_id` bigint DEFAULT NULL COMMENT '修改人id',
    `env` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_blacklist_id` (`blacklist_id`),
    KEY `idx_blacklist_type` (`blacklist_type`),
    KEY `idx_phone` (`phone`),
    KEY `idx_license_plate` (`license_plate`),
    KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='黑名单';

-- 5. 部门审核人/审批人/确认人配置
DROP TABLE IF EXISTS `gate_dept_auditor_config`;
CREATE TABLE `gate_dept_auditor_config` (
    `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',
    `config_id` varchar(36) NOT NULL COMMENT '主键UUID',
    `dept_id` bigint NOT NULL COMMENT '部门ID',
    `config_type` tinyint NOT NULL COMMENT '配置类型：1-审核人 2-审批人 3-确认人',
    `user_id` bigint NOT NULL COMMENT '用户ID',
    `delete_enum` varchar(32) DEFAULT NULL COMMENT '删除标识true false',
    `remarks` varchar(255) DEFAULT NULL COMMENT '备注',
    `create_name` varchar(50) DEFAULT NULL COMMENT '创建人姓名',
    `update_name` varchar(50) DEFAULT NULL COMMENT '更新人姓名',
    `tenant_id` bigint DEFAULT NULL COMMENT '租户id',
    `org_id` bigint DEFAULT NULL COMMENT '单位id',
    `version` int DEFAULT NULL COMMENT '版本',
    `create_time` datetime DEFAULT NULL COMMENT '创建时间',
    `update_time` datetime DEFAULT NULL COMMENT '修改时间',
    `create_id` bigint DEFAULT NULL COMMENT '创建人id',
    `update_id` bigint DEFAULT NULL COMMENT '修改人id',
    `env` varchar(50) DEFAULT NULL,
    PRIMARY KEY (`id`),
    UNIQUE KEY `idx_config_id` (`config_id`),
    KEY `idx_dept_type` (`dept_id`, `config_type`),
    KEY `idx_tenant_org` (`tenant_id`, `org_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门审核人/审批人/确认人配置';
