submit
This commit is contained in:
@@ -0,0 +1,125 @@
|
||||
// 管理员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 }),
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user