import { db } from '~/drizzle/db' import { systemSettings } from '~/drizzle/schema' import { kuGouFetch } from '~~/server/services/kugouService' export default defineEventHandler(async (event) => { const user = event.context.user if (!user) throw createError({ statusCode: 401, message: '未登录' }) if (!['ADMIN', 'SUPER_ADMIN'].includes(user.role)) throw createError({ statusCode: 403, message: '仅管理员可访问' }) const query = getQuery(event) const base = String(query.baseUrl || '').trim() if (base && !/^https?:\/\//i.test(base)) { throw createError({ statusCode: 400, message: 'baseUrl 需要是合法的 http(s) URL' }) } const rows = await db.select().from(systemSettings).limit(1) const settings = rows[0] as any const usedBase = base || settings?.kugouApiBaseUrl || process.env.KUGOU_API_BASE || 'http://127.0.0.1:3000' let serviceOk: boolean let serviceMessage: string let loginStatus: any = null try { const r = await kuGouFetch('/login/status', { timestamp: Date.now() }) loginStatus = r serviceOk = Number((r as any)?.status ?? 0) === 1 || !!((r as any)?.data?.profile || (r as any)?.data?.account) serviceMessage = serviceOk ? '服务在线,且账号已绑定登录' : 'sidecar 在线,但酷狗账号未登录' } catch (e: any) { serviceOk = false serviceMessage = '无法连接 sidecar (' + usedBase + '):' + (e?.message || String(e)) } return { ok: true, service: { baseUrl: usedBase, serviceOk, serviceMessage, loginStatus, }, bound: { hasToken: !!settings?.kugouAdminToken, hasCookie: !!settings?.kugouAdminCookie, boundAt: settings?.kugouAdminBoundAt || null, user: settings?.kugouAdminUser || null, }, } })