-- APP访问令牌表
-- 用于存储用户生成的二维码/密钥信息

DROP TABLE IF EXISTS `app_access_tokens`;
CREATE TABLE `app_access_tokens` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户ID（zj表中的id）',
    `token` varchar(64) NOT NULL DEFAULT '' COMMENT '访问令牌（唯一）',
    `token_type` enum('qrcode','key') NOT NULL DEFAULT 'key' COMMENT '令牌类型：qrcode二维码/key密钥',
    `access_data` text COMMENT '加密存储的访问数据（JSON格式）',
    `expire_time` int(11) NOT NULL DEFAULT '0' COMMENT '过期时间（0为永不过期）',
    `max_uses` int(11) NOT NULL DEFAULT '0' COMMENT '最大使用次数（0为无限）',
    `used_count` int(11) NOT NULL DEFAULT '0' COMMENT '已使用次数',
    `status` tinyint(1) NOT NULL DEFAULT '1' COMMENT '状态：1有效 0失效',
    `confirm_status` tinyint(1) NOT NULL DEFAULT '0' COMMENT '确认状态：0待确认 1已确认 2已拒绝',
    `confirm_expire_time` int(11) NOT NULL DEFAULT '0' COMMENT '确认过期时间（待确认状态下）',
    `app_device_info` varchar(255) NOT NULL DEFAULT '' COMMENT 'APP设备信息（待确认时存储）',
    `server_name` varchar(255) DEFAULT NULL COMMENT '服务器名称',
    `create_time` int(11) NOT NULL DEFAULT '0',
    `update_time` int(11) NOT NULL DEFAULT '0',
    `last_use_time` int(11) NOT NULL DEFAULT '0' COMMENT '最后使用时间',
    `last_use_ip` varchar(50) NOT NULL DEFAULT '' COMMENT '最后使用IP',
    PRIMARY KEY (`id`),
    UNIQUE KEY `token` (`token`),
    KEY `user_id` (`user_id`),
    KEY `status_expire` (`status`,`expire_time`),
    KEY `confirm_status` (`confirm_status`,`confirm_expire_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='APP访问令牌表';
