126 lines
2.7 KiB
JavaScript
126 lines
2.7 KiB
JavaScript
// 管理员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 }),
|
|
})
|
|
}
|
|
|