/** * 个人中心页面 * 包含用户信息、积分系统、交易记录等 */ import React, { useState, useEffect } from 'react'; import { Box, Container, Grid, GridItem, Heading, Text, VStack, HStack, Avatar, Button, Card, CardBody, CardHeader, Stat, StatLabel, StatNumber, StatHelpText, StatArrow, Badge, Tabs, TabList, TabPanels, Tab, TabPanel, Table, Thead, Tbody, Tr, Th, Td, Icon, useToast, Spinner, Divider, } from '@chakra-ui/react'; import { Wallet, TrendingUp, Gift, History, Award, Calendar, DollarSign, Activity, } from 'lucide-react'; import { useAuth } from '@contexts/AuthContext'; import { getUserAccount, claimDailyBonus } from '@services/predictionMarketService.api'; import { forumColors } from '@theme/forumTheme'; const ProfilePage = () => { const toast = useToast(); const { user } = useAuth(); // 状态管理 const [account, setAccount] = useState(null); const [loading, setLoading] = useState(true); const [claiming, setClaiming] = useState(false); // 加载用户积分账户 useEffect(() => { const fetchAccount = async () => { if (!user) return; try { setLoading(true); const response = await getUserAccount(); if (response.success) { setAccount(response.data); } } catch (error) { console.error('获取账户失败:', error); toast({ title: '加载失败', description: '无法加载账户信息', status: 'error', duration: 3000, }); } finally { setLoading(false); } }; fetchAccount(); }, [user, toast]); // 领取每日奖励 const handleClaimDailyBonus = async () => { try { setClaiming(true); const response = await claimDailyBonus(); if (response.success) { toast({ title: '领取成功!', description: `获得 ${response.data.bonus_amount} 积分`, status: 'success', duration: 3000, }); // 刷新账户数据 const accountResponse = await getUserAccount(); if (accountResponse.success) { setAccount(accountResponse.data); } } } catch (error) { toast({ title: '领取失败', description: error.response?.data?.error || '今日奖励已领取或系统错误', status: 'error', duration: 3000, }); } finally { setClaiming(false); } }; if (loading) { return ( 加载中... ); } return ( {/* 用户信息头部 */} {user?.nickname || user?.username} 会员 {user?.email} {/* 积分概览 */} {/* 总余额 */} 总余额 {account?.balance?.toFixed(0) || 0} 积分 {/* 可用余额 */} 可用余额 {account?.available_balance?.toFixed(0) || 0} 积分 {/* 累计收益 */} 累计收益 +{account?.total_earned?.toFixed(0) || 0} 积分 {/* 累计消费 */} 累计消费 {account?.total_spent?.toFixed(0) || 0} 积分 {/* 每日签到 */} 每日签到 每日登录可领取 100 积分奖励 {account?.last_daily_bonus_at && ( 上次领取时间:{new Date(account.last_daily_bonus_at).toLocaleString('zh-CN')} )} {/* 详细信息标签页 */} 交易记录 积分明细 {/* 交易记录 */} 暂无交易记录 {/* 积分明细 */} 暂无积分明细 ); }; export default ProfilePage;