'use client' import { useEffect, useState } from 'react' import { useSession } from 'next-auth/react' import { Loader2, User, Mail, AlertCircle, PackageCheck, KeyRound, CreditCard } from 'lucide-react' import Link from 'next/link' import Header from '@/components/Header' type Order = { id: number order_no: string product_type: string product_name: string amount: number status: string payment_method?: string trade_no?: string created_at: string paid_at?: string metadata?: any } export default function AccountPage() { const { data: session, status } = useSession() const [orders, setOrders] = useState([]) const [loading, setLoading] = useState(true) const [error, setError] = useState(null) useEffect(() => { if (status !== 'authenticated') return const fetchOrders = async () => { try { const res = await fetch('/api/orders') const data = await res.json() if (res.ok && data.success) { setOrders(data.orders || []) } else { setError(data.message || '加载订单失败') } } catch (e: any) { setError(e?.message || '加载订单失败') } finally { setLoading(false) } } fetchOrders() }, [status]) if (status === 'loading') { return (
) } if (status !== 'authenticated' || !session) { return (

请先登录后查看个人中心

去登录
) } return (

个人中心

查看账户信息、订单和激活码

{session.user?.name || '未命名用户'}

ID: {session.user?.id}

{session.user?.email}

订单列表

{loading && }
{error && (
{error}
)} {orders.length === 0 && !loading ? (

暂无订单

) : (
{orders.map((o) => { const license = o.metadata?.license const licenseError = o.metadata?.licenseError return (
{o.order_no}
{o.status}
{o.product_name} · ¥{o.amount} · {o.payment_method || '—'}
{o.trade_no && (
交易号:{o.trade_no}
)} {/* 激活码区域 */} {o.status === 'paid' && (
{license ? (
激活码
{license.planName || license.plan}
{license.activationCode}
{license.isPermanent === false && license.expiresAt && (
到期:{license.expiresAt}
)} {license.isPermanent && (
永久有效
)}
) : licenseError ? (
激活码生成失败:{licenseError.message || '请联系客服'}{' '} {licenseError.at ? `(${licenseError.at})` : ''}
) : (
激活码生成中,请稍后再查看
)}
)}
) })}
)}
) }