"use client"; import { useEffect, useState } from "react"; import { useRouter } from "next/navigation"; import { authFetch, useAuth } from "@/lib/auth"; interface UserInfo { id: number; email: string; discord_id: string | null; tier: string; expires_at: string | null; } export default function DashboardPage() { const router = useRouter(); const { isLoggedIn, loading, logout } = useAuth(); const [user, setUser] = useState(null); const [discordId, setDiscordId] = useState(""); const [saving, setSaving] = useState(false); const [msg, setMsg] = useState(""); useEffect(() => { if (loading) return; if (!isLoggedIn) { router.push("/login"); return; } authFetch("/api/auth/me") .then(r => r.ok ? r.json() : Promise.reject()) .then(d => { setUser({ id: d.id, email: d.email, discord_id: d.discord_id || null, tier: d.subscription?.tier || "free", expires_at: d.subscription?.expires_at || null, }); setDiscordId(d.discord_id || ""); }) .catch(() => router.push("/login")); }, [loading, isLoggedIn, router]); const bindDiscord = async () => { setSaving(true); setMsg(""); try { const r = await authFetch("/api/user/bind-discord", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ discord_id: discordId }), }); const d = await r.json(); setMsg(r.ok ? "\u2705 绑定成功" : d.detail || "绑定失败"); if (r.ok && user) setUser({ ...user, discord_id: discordId }); } catch { setMsg("绑定失败"); } setSaving(false); }; if (loading || !user) return
加载中...
; const tierLabel: Record = { free: "免费版", pro: "Pro", premium: "Premium" }; return (

我的账户

账户信息

邮箱
{user.email}
订阅等级
{tierLabel[user.tier] || user.tier}
到期时间
{user.expires_at ? new Date(user.expires_at).toLocaleDateString("zh-CN") : "永久免费"}

Discord 信号推送

绑定Discord ID后,当套利信号触发时会自动@你

setDiscordId(e.target.value)} className="flex-1 bg-white border border-slate-200 rounded-lg px-3 py-2 text-slate-900 text-sm focus:outline-none focus:border-cyan-500" placeholder="Discord用户ID(18位数字)" />
{msg &&

{msg}

}

如何获取Discord ID:设置 → 外观 → 开发者模式 → 右键个人头像 → 复制用户ID

升级订阅

{[ { tier: "free", label: "免费版", price: "¥0", features: ["实时费率面板"] }, { tier: "pro", label: "Pro", price: "¥99/月", features: ["实时费率面板", "信号Discord推送", "历史数据"] }, { tier: "premium", label: "Premium", price: "¥299/月", features: ["Pro全部功能", "定制阈值", "优先客服"] }, ].map(p => (
{p.label}
{p.price}
    {p.features.map(f =>
  • • {f}
  • )}
{user.tier !== p.tier && p.tier !== "free" && ( )}
))}
); }