diff --git a/src/context/UserContext.js b/src/context/UserContext.js
index 39ab6cd..a76b638 100644
--- a/src/context/UserContext.js
+++ b/src/context/UserContext.js
@@ -9,18 +9,12 @@
   useEffect(() => {
     const storedUser = localStorage.getItem('user');
     if (storedUser) {
-      try {
-        const parsedUser = JSON.parse(storedUser);
-        // 验证用户对象是否有效
-        if (parsedUser && parsedUser.userId) {
-          setUser(parsedUser);
-        } else {
-          localStorage.removeItem('user');
-        }
-      } catch (error) {
-        console.error('解析用户信息失败:', error);
-        localStorage.removeItem('user');
-      }
+      setUser(JSON.parse(storedUser));
+    } else {
+      // 设置默认用户
+      const defaultUser = { userId: 1, username: '测试用户' };
+      localStorage.setItem('user', JSON.stringify(defaultUser));
+      setUser(defaultUser);
     }
     setLoading(false);
   }, []);
diff --git a/src/pages/UserCenter/UserDynamics.css b/src/pages/UserCenter/UserDynamics.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/UserCenter/UserDynamics.css
diff --git a/src/pages/UserCenter/UserDynamics.jsx b/src/pages/UserCenter/UserDynamics.jsx
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/UserCenter/UserDynamics.jsx
diff --git a/src/pages/UserCenter/UserFriends.css b/src/pages/UserCenter/UserFriends.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/UserCenter/UserFriends.css
diff --git a/src/pages/UserCenter/UserFriends.jsx b/src/pages/UserCenter/UserFriends.jsx
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/UserCenter/UserFriends.jsx
diff --git a/src/pages/UserCenter/UserGroup.css b/src/pages/UserCenter/UserGroup.css
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/UserCenter/UserGroup.css
diff --git a/src/pages/UserCenter/UserGroup.jsx b/src/pages/UserCenter/UserGroup.jsx
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/pages/UserCenter/UserGroup.jsx
diff --git a/src/pages/UserCenter/UserProfile.jsx b/src/pages/UserCenter/UserProfile.jsx
index 6f9694c..a10657c 100644
--- a/src/pages/UserCenter/UserProfile.jsx
+++ b/src/pages/UserCenter/UserProfile.jsx
@@ -1,90 +1,108 @@
 import React, { useEffect, useState } from 'react';
 import axios from 'axios';
 import './UserProfile.css';
-import UserNav from './UserNav'; // 导入 UserNav 组件
+import UserNav from './UserNav';
 import Header from '../../components/Header';
-
-
-const API_BASE = 'http://127.0.0.1:4523/m1/6139971-5831803-default'; 
+import { useUser } from '../../context/UserContext'; 
 
 const UserProfile = () => {
+  const { user, loading } = useUser(); // 从上下文拿用户和加载状态
   const [userProfile, setUserProfile] = useState(null);
-  const [loading, setLoading] = useState(true);
   const [error, setError] = useState(null);
 
-  // 假设用户ID为1，实际应用中应通过认证信息获取
-  const userId = 1;
-
   useEffect(() => {
-    // 获取用户个人资料
+    if (loading) return; // 用户信息还没加载完，先不请求
+    console.log('用户:', user, '加载:', loading);
+
+    if (!user || !user.userId) {
+      setError('未登录或用户信息缺失');
+      setUserProfile(null);
+      return;
+    }
+
     const fetchUserProfile = async () => {
       try {
-        setLoading(true);
-        const response = await axios.get(`${API_BASE}/echo/user/profile`, {
-          params: { user_id: userId }
-        });
+        setError(null);
+        const response = await axios.get(`/echo/user/${user.userId}/getProfile`);
 
-        if (response.data.status === 'success') {
-          setUserProfile(response.data);
-        } else {
-          setError('用户不存在');
+        console.log('响应数据:', response); // 调试用
+        const raw = response.data;
+        console.log('raw:', raw); // 调试用
+
+        if (!raw) {
+          setError('用户数据为空');
+          setUserProfile(null);
+          return;
         }
+
+        const profile = {
+          avatar_url: raw.avatarUrl || 'https://example.com/default-avatar.jpg',
+          nickname: raw.username || '未知用户',
+          email: raw.email || '未填写',
+          gender: raw.gender || '保密',
+          bio: raw.description || '无',
+          interests: raw.hobbies ? raw.hobbies.split(',') : [],
+          level: raw.level || '未知',
+          experience: raw.experience ?? 0,
+          upload_amount: raw.uploadCount ?? 0,
+          download_amount: raw.downloadCount ?? 0,
+          share_rate: raw.shareRate ?? 0,
+          joined_date: raw.registrationTime,
+        };
+
+        setUserProfile(profile);
       } catch (err) {
-        setError('请求失败，请稍后再试');
-      } finally {
-        setLoading(false);
+        if (err.response?.status === 404) {
+          setError('用户不存在');
+        } else {
+          setError('请求失败，请稍后再试');
+        }
+        setUserProfile(null);
       }
     };
 
     fetchUserProfile();
-  }, [userId]);
+  }, [user, loading]);
 
-  if (loading) {
-    return <p>加载中...</p>;
-  }
-
-  if (error) {
-    return <p className="error">{error}</p>;
-  }
+  if (loading) return <p>正在加载用户信息...</p>;
+  if (error) return <p className="error">{error}</p>;
+  if (!userProfile) return null;
 
   return (
     <div className="user-profile-container">
-      <Header /> {/* 引入 Header 组件 */}
-    <div className="user-center">
-      <div className="user-nav-container">
-        <UserNav /> {/* 引入导航栏 */}
-      </div>
-      <div className="common-card">
-      <div className="right-content">
-        <div className="profile-header">
-          <img
-            src={userProfile.avatar_url}
-            alt={userProfile.nickname}
-            className="avatar"
-          />
-          <h1>{userProfile.nickname}</h1>
+      <Header />
+      <div className="user-center">
+        <div className="user-nav-container">
+          <UserNav />
         </div>
+        <div className="common-card">
+          <div className="right-content">
+            <div className="profile-header">
+              <img
+                src={userProfile.avatar_url}
+                alt={userProfile.nickname}
+                className="avatar"
+              />
+              <h1>{userProfile.nickname}</h1>
+            </div>
 
-        <div className="profile-details">
-          {/* <h2>个人资料</h2> */}
-          <p><strong>邮箱：</strong>{userProfile.email}</p>
-          <p><strong>性别：</strong>{userProfile.gender}</p>
-          <p><strong>个人简介：</strong>{userProfile.bio}</p>
-          <p><strong>兴趣：</strong>{userProfile.interests.join(', ')}</p>
-          <p><strong>等级：</strong>{userProfile.level}</p>
-          <p><strong>经验：</strong>{userProfile.experience}</p>
-          <p><strong>上传量：</strong>{userProfile.upload_amount}</p>
-          <p><strong>下载量：</strong>{userProfile.download_amount}</p>
-          <p><strong>分享率：</strong>{(userProfile.share_rate * 100).toFixed(2)}%</p>
-          <p><strong>VIP：</strong>{userProfile.is_vip ? '是' : '否'}</p>
-          {userProfile.is_vip && <p><strong>VIP等级：</strong>{userProfile.vip_type}</p>}
-          <p><strong>加入时间：</strong>{new Date(userProfile.joined_date).toLocaleDateString()}</p>
+            <div className="profile-details">
+              <p><strong>邮箱：</strong>{userProfile.email}</p>
+              <p><strong>性别：</strong>{userProfile.gender}</p>
+              <p><strong>个人简介：</strong>{userProfile.bio}</p>
+              <p><strong>兴趣：</strong>{userProfile.interests.length > 0 ? userProfile.interests.join(', ') : '无'}</p>
+              <p><strong>等级：</strong>{userProfile.level}</p>
+              <p><strong>经验：</strong>{userProfile.experience}</p>
+              <p><strong>上传量：</strong>{userProfile.upload_amount}</p>
+              <p><strong>下载量：</strong>{userProfile.download_amount}</p>
+              <p><strong>分享率：</strong>{(userProfile.share_rate * 100).toFixed(2)}%</p>
+              <p><strong>加入时间：</strong>{new Date(userProfile.joined_date).toLocaleDateString()}</p>
+            </div>
+          </div>
         </div>
       </div>
-      </div>
-      </div>
     </div>
   );
 };
 
-export default UserProfile;    
+export default UserProfile;
