This commit is contained in:
CNLuminous
2025-11-04 15:15:28 +08:00
commit a6af28e4c5
719 changed files with 570630 additions and 0 deletions
+125
View File
@@ -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 }),
})
}