// 管理员API const ADMIN_BASE_URL = '' function getAdminToken() { return localStorage.getItem('admin_token') || '' } async function request(url, options = {}) { const token = getAdminToken() const response = await fetch(`${ADMIN_BASE_URL}${url}`, { ...options, headers: { 'Content-Type': 'application/json', ...(token ? { 'Authorization': `Bearer ${token}` } : {}), ...(options.headers || {}), }, }) if (!response.ok) { if (response.status === 401 || response.status === 403) { // token无效,清除并跳转登录 localStorage.removeItem('admin_token') if (window.location.pathname !== '/admin/login') { window.location.href = '/admin/login' } } throw new Error(`HTTP error! status: ${response.status}`) } return await response.json() } /** * 管理员登录 */ export async function adminLogin(password) { return await request('/api/admin/login', { method: 'POST', body: JSON.stringify({ password }), }) } /** * 播放 */ export async function adminPlay() { return await request('/api/admin/playback/play', { method: 'POST', }) } /** * 暂停 */ export async function adminPause() { return await request('/api/admin/playback/pause', { method: 'POST', }) } /** * 发送公告 */ export async function adminSendAnnouncement(announcement) { return await request('/api/admin/announcement', { method: 'POST', body: JSON.stringify(announcement), }) } /** * 设置特定用户的音量 */ export async function adminSetUserVolume(userId, volume, muted) { // 确保userId是字符串 const userIdStr = String(userId) console.log('调用adminSetUserVolume:', userIdStr, volume, muted) return await request(`/api/admin/user/${encodeURIComponent(userIdStr)}/volume`, { method: 'POST', body: JSON.stringify({ volume, muted }), }) } /** * 设置特定用户的静音状态 */ export async function adminSetUserMute(userId, muted) { // 确保userId是字符串 const userIdStr = String(userId) console.log('调用adminSetUserMute:', userIdStr, muted) return await request(`/api/admin/user/${encodeURIComponent(userIdStr)}/mute`, { method: 'POST', body: JSON.stringify({ muted }), }) } /** * 获取播放状态 */ export async function adminGetPlaybackState() { return await request('/api/admin/playback/state', { method: 'GET', }) } /** * 获取所有在线用户 */ export async function adminGetAllUsers() { return await request('/api/admin/users', { method: 'GET', }) } /** * 调整播放进度 */ export async function adminSeek(time) { return await request('/api/admin/playback/seek', { method: 'POST', body: JSON.stringify({ time }), }) }