-- 刷新令牌会话表:实现令牌轮换、登出和改密后的主动失效。 CREATE TABLE IF NOT EXISTS auth_refresh_session ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, subject_id BIGINT UNSIGNED NOT NULL COMMENT '用户或管理员 ID', scope VARCHAR(16) NOT NULL COMMENT 'user/admin', terminal VARCHAR(16) NOT NULL DEFAULT '' COMMENT 'mini/h5/app', jti CHAR(43) NOT NULL COMMENT 'JWT 唯一编号', expired_at DATETIME NOT NULL, revoked_at DATETIME NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, deleted_at DATETIME NULL, PRIMARY KEY (id), UNIQUE KEY uk_refresh_jti (jti), KEY idx_refresh_subject_scope (subject_id, scope), KEY idx_refresh_expired_at (expired_at), KEY idx_refresh_deleted_at (deleted_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='刷新令牌会话'; -- 内容、收藏、站内消息是用户端基础模块的最小数据模型。 CREATE TABLE IF NOT EXISTS content ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, title VARCHAR(200) NOT NULL, body LONGTEXT NULL, status TINYINT NOT NULL DEFAULT 1, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, deleted_at DATETIME NULL, PRIMARY KEY (id), KEY idx_content_status_created (status, created_at), KEY idx_content_deleted_at (deleted_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='通用内容'; CREATE TABLE IF NOT EXISTS user_favorite ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT UNSIGNED NOT NULL, content_id BIGINT UNSIGNED NOT NULL, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, deleted_at DATETIME NULL, PRIMARY KEY (id), UNIQUE KEY uk_favorite_user_content (user_id, content_id), KEY idx_favorite_user_created (user_id, created_at), KEY idx_favorite_deleted_at (deleted_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户收藏'; CREATE TABLE IF NOT EXISTS user_message ( id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT, user_id BIGINT UNSIGNED NOT NULL, title VARCHAR(200) NOT NULL, content TEXT NOT NULL, is_read TINYINT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL, updated_at DATETIME NOT NULL, deleted_at DATETIME NULL, PRIMARY KEY (id), KEY idx_message_user_read_created (user_id, is_read, created_at), KEY idx_message_deleted_at (deleted_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户站内消息';