Revert "api忘改回来了"

Revert submission 1443

Reason for revert: <合并错误>

Reverted changes: /q/submissionid:1443

Change-Id: Id09a056623404fe80fe4d9f663b7eec44714a168
diff --git a/Merge/back_ljc/app.py b/Merge/back_ljc/app.py
index 182a6e5..0e10b68 100644
--- a/Merge/back_ljc/app.py
+++ b/Merge/back_ljc/app.py
@@ -1,7 +1,6 @@
 from flask import Flask, jsonify, request, session
 from flask_sqlalchemy import SQLAlchemy
 from flask_cors import CORS
-from flask_jwt_extended import jwt_required, get_jwt_identity
 
 app = Flask(__name__)
 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:123456@10.126.59.25/redbook'
@@ -352,10 +351,9 @@
     return jsonify(following_list)
 
 # 关注/取消关注用户
-@app.route('/api/follow/<int:follower_id>/<int:followee_id>', methods=['POST', 'DELETE'])
-def follow_user(follower_id,followee_id):
-    # follower_id = session.get('user_id', 1)
-    print(follower_id)
+@app.route('/api/follow/<int:followee_id>', methods=['POST', 'DELETE'])
+def follow_user(followee_id):
+    follower_id = session.get('user_id', 1)
     if follower_id == followee_id:
         return jsonify({'error': 'Cannot follow yourself'}), 400
     
@@ -470,130 +468,6 @@
         app.logger.error(f"获取用户互动数据失败: {str(e)}")
         return jsonify({'error': '获取互动数据失败'}), 500
 
-# 点赞/取消点赞路由 - 修改为包含用户ID
-@app.route('/api/users/<int:user_id>/posts/<int:post_id>/like', methods=['POST', 'DELETE'])
-def handle_like(user_id, post_id):
-    # 检查用户是否登录
-    if 'user_id' not in session:
-        return jsonify({'error': '未登录'}), 401
-    
-    # 验证请求用户ID与登录用户ID是否一致
-    if session['user_id'] != user_id:
-        return jsonify({'error': '无权限操作'}), 403
-    
-    post = Post.query.get(post_id)
-    
-    if not post:
-        return jsonify({'error': '帖子不存在'}), 404
-    
-    # 检查行为类型
-    behavior = Behavior.query.filter_by(
-        user_id=user_id,
-        post_id=post_id,
-        type='like'
-    ).first()
-    
-    if request.method == 'POST':
-        # 点赞
-        if not behavior:
-            new_behavior = Behavior(
-                user_id=user_id,
-                post_id=post_id,
-                type='like',
-                value=1
-            )
-            db.session.add(new_behavior)
-            db.session.commit()
-            return jsonify({'message': '点赞成功', 'liked': True})
-        return jsonify({'message': '已点赞', 'liked': True})
-    
-    elif request.method == 'DELETE':
-        # 取消点赞
-        if behavior:
-            db.session.delete(behavior)
-            db.session.commit()
-            return jsonify({'message': '已取消点赞', 'liked': False})
-        return jsonify({'message': '未点赞', 'liked': False})
-
-# 收藏/取消收藏路由 - 修改为包含用户ID
-@app.route('/api/users/<int:user_id>/posts/<int:post_id>/favorite', methods=['POST', 'DELETE'])
-def handle_favorite(user_id, post_id):
-    # 检查用户是否登录
-    if 'user_id' not in session:
-        return jsonify({'error': '未登录'}), 401
-    
-    # 验证请求用户ID与登录用户ID是否一致
-    if session['user_id'] != user_id:
-        return jsonify({'error': '无权限操作'}), 403
-    
-    post = Post.query.get(post_id)
-    
-    if not post:
-        return jsonify({'error': '帖子不存在'}), 404
-    
-    # 检查行为类型
-    behavior = Behavior.query.filter_by(
-        user_id=user_id,
-        post_id=post_id,
-        type='favorite'
-    ).first()
-    
-    if request.method == 'POST':
-        # 收藏
-        if not behavior:
-            new_behavior = Behavior(
-                user_id=user_id,
-                post_id=post_id,
-                type='favorite',
-                value=1
-            )
-            db.session.add(new_behavior)
-            db.session.commit()
-            return jsonify({'message': '收藏成功', 'favorited': True})
-        return jsonify({'message': '已收藏', 'favorited': True})
-    
-    elif request.method == 'DELETE':
-        # 取消收藏
-        if behavior:
-            db.session.delete(behavior)
-            db.session.commit()
-            return jsonify({'message': '已取消收藏', 'favorited': False})
-        return jsonify({'message': '未收藏', 'favorited': False})
-
-# 获取帖子互动状态(是否点赞/收藏) - 修改为包含用户ID
-@app.route('/api/users/<int:user_id>/posts/<int:post_id>/interaction-status')
-def get_post_interaction_status(user_id, post_id):
-    # 检查用户是否登录
-    if 'user_id' not in session:
-        return jsonify({
-            'liked': False,
-            'favorited': False
-        })
-    
-    # 验证请求用户ID与登录用户ID是否一致
-    if session['user_id'] != user_id:
-        return jsonify({
-            'liked': False,
-            'favorited': False
-        })
-    
-    liked = Behavior.query.filter_by(
-        user_id=user_id,
-        post_id=post_id,
-        type='like'
-    ).first() is not None
-    
-    favorited = Behavior.query.filter_by(
-        user_id=user_id,
-        post_id=post_id,
-        type='favorite'
-    ).first() is not None
-    
-    return jsonify({
-        'liked': liked,
-        'favorited': favorited
-    })
-
 
 if __name__ == '__main__':
     app.run(debug=True,port='5715',host='0.0.0.0')
\ No newline at end of file
diff --git a/Merge/front/src/api/api_ljc.js b/Merge/front/src/api/api_ljc.js
index 8c16245..1adea99 100644
--- a/Merge/front/src/api/api_ljc.js
+++ b/Merge/front/src/api/api_ljc.js
@@ -3,7 +3,6 @@
 
 const api = axios.create({
   baseURL: 'http://10.126.59.25:5715/api/',
-  // baseURL: 'http://127.0.0.1:5715/api/',
   withCredentials: true
 });
 
@@ -16,11 +15,11 @@
 export const getFavorites = (userId) => api.get(`/user/${userId}/favorites`);
 
 // 关注相关API
-export const followUser = (followerId,followeeId) => {
-  return api.post(`/follow/${followerId}/${followeeId}`);
+export const followUser = (followeeId) => {
+  return api.post(`/follow/${followeeId}`);
 };
-export const unfollowUser = (followerId,followeeId) => {
-  return api.delete(`/follow/${followerId}/${followeeId}`);
+export const unfollowUser = (followeeId) => {
+  return api.delete(`/follow/${followeeId}`);
 };
 
 // 帖子相关API
@@ -33,56 +32,5 @@
 export const getUserInteractions = (userId) => api.get(`/user/${userId}/interactions`);
 // 获取粉丝
 export const getUserFollowers = (userId) => api.get(`/user/${userId}/followers`);
-// ================= 帖子互动API =================
-
-/**
- * 点赞帖子
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const likePost = (userId, postId) => {
-  return api.post(`/users/${userId}/posts/${postId}/like`);
-};
-
-/**
- * 取消点赞
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const unlikePost = (userId, postId) => {
-  return api.delete(`/users/${userId}/posts/${postId}/like`);
-};
-
-/**
- * 收藏帖子
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const favoritePost = (userId, postId) => {
-  return api.post(`/users/${userId}/posts/${postId}/favorite`);
-};
-
-/**
- * 取消收藏
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns 操作结果
- */
-export const unfavoritePost = (userId, postId) => {
-  return api.delete(`/users/${userId}/posts/${postId}/favorite`);
-};
-
-/**
- * 获取当前用户对帖子的互动状态
- * @param {number} userId 用户ID
- * @param {number} postId 帖子ID
- * @returns {object} { liked: boolean, favorited: boolean }
- */
-export const getPostInteractionStatus = (userId, postId) => {
-  return api.get(`/users/${userId}/posts/${postId}/interaction-status`);
-};
 
 export default api;
\ No newline at end of file
diff --git a/Merge/front/src/components/UserProfile.jsx b/Merge/front/src/components/UserProfile.jsx
index 2e54fac..802c4b6 100644
--- a/Merge/front/src/components/UserProfile.jsx
+++ b/Merge/front/src/components/UserProfile.jsx
@@ -53,10 +53,7 @@
   Collections,
   ChevronLeft,
   ChevronRight,
-  Close,
-  Bookmark,
-  Group,
-  People
+  Close
 } from '@mui/icons-material';
 import { createTheme, ThemeProvider } from '@mui/material/styles';
 import { Link, useNavigate } from 'react-router-dom';
@@ -69,10 +66,7 @@
   followUser as followUserApi,
   unfollowUser as unfollowUserApi,
   getUserPosts,
-  getUserInteractions,
-  getUserFollowers,
-  getFavorites,
-  getUserFollowing
+  getUserInteractions
 } from '../api/api_ljc';
 import { fetchPost } from '../api/posts_wzy';
 
@@ -125,10 +119,6 @@
   const navigate = useNavigate();
   const [activeTab, setActiveTab] = useState(0);
   const [isEditing, setIsEditing] = useState(false);
-  const [favorites, setFavorites] = useState([]);
-  const [following, setFollowing] = useState([]);
-  const [followers, setFollowers] = useState([]);
-  const [follower, setFollower] = useState([]);
   const [snackbar, setSnackbar] = useState({ open: false, message: '', severity: 'success' });
   const [anchorEl, setAnchorEl] = useState(null);
   
@@ -209,7 +199,29 @@
   
   fetchInteractions();
 
-   
+    const handleFollowUser = async (followeeId) => {
+    try {
+      await followUserApi(followeeId);
+      showSnackbar('关注成功');
+      
+      // 更新粉丝列表状态(将刚关注的用户标记为已关注)
+      // setFollowers(prev => prev.map(user => 
+      //   user.id === followeeId ? { ...user, is_following: true } : user
+      // ));
+      
+      // 更新当前用户关注数
+      if (currentUser) {
+        setCurrentUser(prev => ({
+          ...prev,
+          following_count: prev.following_count + 1
+        }));
+      }
+      
+    } catch (error) {
+      console.error('关注操作失败:', error);
+      showSnackbar('关注失败,请重试', 'error');
+    }
+  };
     const fetchData = async () => {
       try {
         setLoading(true);
@@ -229,22 +241,6 @@
           birthday: profileUserRes.data.birthday || '',
           location: profileUserRes.data.location || ''
         });
-
-        if (activeTab === 1) {
-                  // 加载收藏数据
-                  const favoritesRes = await getFavorites(userId);
-                  setFavorites(favoritesRes.data);
-                } else if (activeTab === 2) {
-                  // 加载关注列表
-                  const followingRes = await getUserFollowing(userId);
-                  setFollowing(followingRes.data);
-                  console.log("following",followingRes.data)
-                }  else if (activeTab === 3) {
-                  // 加载粉丝列表
-                  const followersRes = await getUserFollowers(userId);
-                  // 
-                  setFollowers(followersRes.data.data);
-                }
         
         // 获取用户帖子
         const postsRes = await getUserPosts(userId);
@@ -287,7 +283,7 @@
     };
     
     fetchData();
-  }, [activeTab,userId]);
+  }, [userId]);
 
   // 根据标签页加载数据
   useEffect(() => {
@@ -318,40 +314,18 @@
     }
   };
 
-  const handleFollowUser = async (userId,followeeId) => {
+  const handleFollowUser = async (followeeId) => {
     try {
-      await followUserApi(userId,followeeId);
+      await followUserApi(followeeId);
       showSnackbar('关注成功');
       
-      // 更新粉丝列表中的关注状态
-    setFollowers(prevFollowers => 
-      prevFollowers.map(follower => 
-        follower.id === followeeId 
-          ? { ...follower, is_following: true } 
-          : follower
-      )
-    );
-    
-    // 更新当前用户的关注数
-    if (currentUser) {
-      setCurrentUser(prev => ({
-        ...prev,
-        following_count: prev.following_count + 1
-      }));
-    }
-    
-    // 如果被关注的用户是当前用户的粉丝,更新粉丝数
-    setFollowers(prevFollowers => 
-      prevFollowers.map(follower => 
-        follower.id === followeeId 
-          ? { 
-              ...follower, 
-              followers_count: follower.followers_count + 1 
-            } 
-          : follower
-      )
-    );
-    
+      // 更新当前用户关注数
+      if (currentUser) {
+        setCurrentUser(prev => ({
+          ...prev,
+          following_count: prev.following_count + 1
+        }));
+      }
       
     } catch (error) {
       console.error('关注操作失败:', error);
@@ -359,27 +333,13 @@
     }
   };
 
-  const handleUnfollow = async (userId,followeeId, e) => {
-    // e.stopPropagation(); // 阻止事件冒泡
+  const handleUnfollow = async (followeeId, e) => {
+    e.stopPropagation(); // 阻止事件冒泡
     
     try {
-      await unfollowUserApi(userId,followeeId);
+      await unfollowUserApi(followeeId);
       showSnackbar('已取消关注');
       
-      // 更新关注列表 - 移除取消关注的用户
-    setFollowing(prevFollowing => 
-      prevFollowing.filter(user => user.id !== followeeId)
-    );
-    
-    // 更新粉丝列表 - 更新关注状态
-    setFollowers(prevFollowers => 
-      prevFollowers.map(follower => 
-        follower.id === followeeId 
-          ? { ...follower, is_following: false } 
-          : follower
-      )
-    );
-      
       // 更新当前用户关注数
       if (currentUser) {
         setCurrentUser(prev => ({
@@ -657,32 +617,52 @@
               }}
             >
               <Tab icon={isMobile ? <Collections /> : null} label="笔记" />
-              <Tab icon={isMobile ? <Bookmark /> : null} label="收藏" />
-              <Tab icon={isMobile ? <Group /> : null} label="关注" />
-              <Tab icon={isMobile ? <People /> : null} label="粉丝" />
             </Tabs>
           </Box>
 
           {/* 内容区域 */}
           <Box sx={{ mt: 3 }}>
-            
-            {activeTab === 0 && (
-              <Grid container spacing={3}>
-                {tabLoading ? (
-                  <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'center', py: 4 }}>
-                    <CircularProgress />
-                  </Grid>
-                ) : posts.length > 0 ? (
-                  posts.map((post, index) => (
-                    <Grid item xs={12} sm={6} lg={3} key={post.id}>
-                      <Card elevation={0} sx={{ 
-                        bgcolor: 'white', 
-                        borderRadius: 3,
-                        height: '100%',
-                        display: 'flex',
-                        flexDirection: 'column'
-                      }}>
-                        {/* 只有当帖子有 media_urls 时才显示图片 */}
+            {/* 只保留笔记标签页 */}
+            <Grid container spacing={3}>
+              {tabLoading ? (
+                <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'center', py: 4 }}>
+                  <CircularProgress />
+                </Grid>
+              ) : allPosts.length === 0 ? (
+                <Grid item xs={12}>
+                  <Box sx={{ 
+                    display: 'flex', 
+                    flexDirection: 'column', 
+                    alignItems: 'center', 
+                    py: 8,
+                    textAlign: 'center'
+                  }}>
+                    <Collections sx={{ fontSize: 60, color: 'grey.300', mb: 2 }} />
+                    <Typography variant="h6" sx={{ mb: 1 }}>
+                      还没有发布笔记
+                    </Typography>
+                    <Typography variant="body1" color="textSecondary" sx={{ mb: 3 }}>
+                      {isOwnProfile ? '分享你的生活点滴吧~' : '该用户还没有发布任何笔记'}
+                    </Typography>
+                    {isOwnProfile && (
+                      <Button variant="contained" color="primary">
+                        发布第一篇笔记
+                      </Button>
+                    )}
+                  </Box>
+                </Grid>
+              ) : (
+                // 显示当前页的帖子
+                posts.map((post, index) => (
+                  <Grid item xs={12} sm={6} lg={3} key={post.id}>
+                    <Card elevation={0} sx={{ 
+                      bgcolor: 'white', 
+                      borderRadius: 3,
+                      height: '100%',
+                      display: 'flex',
+                      flexDirection: 'column'
+                    }}>
+                      {/* 只有当帖子有 media_urls 时才显示图片 */}
                       {post.media_urls && post.media_urls.length > 0 && (
                         <CardMedia
                           component="img"
@@ -691,322 +671,63 @@
                           alt={post.title}
                         />
                       )}
-                        <CardContent sx={{ flexGrow: 1 }}>
-                          <Typography gutterBottom variant="h6" component="div">
-                            {post.title}
-                          </Typography>
-                          <Typography variant="body2" color="text.secondary">
-                            {post.content.substring(0, 60)}...
-                          </Typography>
-                        </CardContent>
-                        <CardActions sx={{ justifyContent: 'space-between', px: 2, pb: 2 }}>
-                          <Box>
-                            <IconButton aria-label="add to favorites">
-                              <Favorite />
-                              <Typography variant="body2" sx={{ ml: 1 }}>
-                                {post.heat || Math.floor(Math.random() * 1000) + 1000}
-                              </Typography>
-                            </IconButton>
-                            <IconButton aria-label="share">
-                              <Share />
-                            </IconButton>
-                          </Box>
-                          <Chip 
-                            label={post.type === 'image' ? '图文' : post.type === 'video' ? '视频' : '文档'} 
-                            size="small" 
-                            color="primary" 
-                            variant="outlined" 
-                          />
-                        </CardActions>
-                      </Card>
-                    </Grid>
-                  ))
-                ) : (
-                  <Grid item xs={12}>
-                    <Box sx={{ 
-                      display: 'flex', 
-                      flexDirection: 'column', 
-                      alignItems: 'center', 
-                      py: 8,
-                      textAlign: 'center'
-                    }}>
-                      <Collections sx={{ fontSize: 60, color: 'grey.300', mb: 2 }} />
-                      <Typography variant="h6" sx={{ mb: 1 }}>
-                        还没有发布笔记
-                      </Typography>
-                      <Typography variant="body1" color="textSecondary" sx={{ mb: 3 }}>
-                        {isOwnProfile ? '分享你的生活点滴吧~' : '该用户还没有发布任何笔记'}
-                      </Typography>
-                      {isOwnProfile && (
-                        <Button variant="contained" color="primary">
-                          发布第一篇笔记
-                        </Button>
-                      )}
-                    </Box>
-                  </Grid>
-                )}
-                
-                {posts.length > 0 && (
-                  <Grid item xs={12}>
-                    <Box sx={{ display: 'flex', justifyContent: 'center', mt: 3 }}>
-                      <Button 
-                        variant="outlined" 
-                        sx={{ 
-                          borderRadius: 20, 
-                          px: 4,
-                          display: 'flex',
-                          alignItems: 'center'
-                        }}
-                      >
-                        <ChevronLeft sx={{ mr: 1 }} />
-                        上一页
-                        <ChevronRight sx={{ ml: 2 }} />
-                      </Button>
-                    </Box>
-                  </Grid>
-                )}
-              </Grid>
-            )}
-            
-            {activeTab === 1 && (
-              <Grid container spacing={3}>
-                {tabLoading ? (
-                  <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'center', py: 4 }}>
-                    <CircularProgress />
-                  </Grid>
-                ) : favorites.length > 0 ? (
-                  favorites.map((favorite) => (
-                    <Grid item xs={12} sm={6} md={4} lg={3} key={favorite.id}>
-                      <Card elevation={0} sx={{ 
-                        bgcolor: 'white', 
-                        borderRadius: 3,
-                        transition: 'transform 0.3s, box-shadow 0.3s',
-                        '&:hover': {
-                          transform: 'translateY(-5px)',
-                          boxShadow: 3
-                        }
-                      }}>
-                        <Box sx={{ 
-                          height: 160, 
-                          position: 'relative',
-                          borderTopLeftRadius: 16,
-                          borderTopRightRadius: 16,
-                          overflow: 'hidden'
-                        }}>
-                          <CardMedia
-                            component="img"
-                            height="160"
-                            image={`https://source.unsplash.com/random/400x300?${favorite.id}`}
-                            alt={favorite.title}
-                          />
-                          <Box sx={{
-                            position: 'absolute',
-                            top: 8,
-                            right: 8,
-                            bgcolor: 'rgba(0,0,0,0.6)',
-                            color: 'white',
-                            px: 1,
-                            py: 0.5,
-                            borderRadius: 4,
-                            fontSize: 12
-                          }}>
-                            {favorite.type === 'image' ? '图文' : favorite.type === 'video' ? '视频' : '文档'}
-                          </Box>
+                      <CardContent sx={{ flexGrow: 1 }}>
+                        <Typography gutterBottom variant="h6" component="div">
+                          {post.title}
+                        </Typography>
+                        <Typography variant="body2" color="text.secondary">
+                          {post.content ? post.content.substring(0, 60) + '...' : '暂无内容'}
+                        </Typography>
+                      </CardContent>
+                      <CardActions sx={{ justifyContent: 'space-between', px: 2, pb: 2 }}>
+                        <Box>
+                          <IconButton aria-label="add to favorites">
+                            <Favorite />
+                            <Typography variant="body2" sx={{ ml: 1 }}>
+                              {post.heat || Math.floor(Math.random() * 1000) + 1000}
+                            </Typography>
+                          </IconButton>
+                          <IconButton aria-label="share">
+                            <Share />
+                          </IconButton>
                         </Box>
-                        <CardContent>
-                          <Typography gutterBottom variant="subtitle1" fontWeight="medium">
-                            {favorite.title}
-                          </Typography>
-                          <Box sx={{ display: 'flex', justifyContent: 'space-between' }}>
-                            <Box sx={{ display: 'flex', alignItems: 'center' }}>
-                              <Favorite fontSize="small" color="error" />
-                              <Typography variant="body2" sx={{ ml: 0.5 }}>
-                                {favorite.heat || Math.floor(Math.random() * 1000) + 1000}
-                              </Typography>
-                            </Box>
-                            <Box sx={{ display: 'flex', alignItems: 'center' }}>
-                              <Bookmark fontSize="small" color="primary" />
-                              <Typography variant="body2" sx={{ ml: 0.5 }}>
-                                {Math.floor(Math.random() * 500) + 100}
-                              </Typography>
-                            </Box>
-                          </Box>
-                        </CardContent>
-                      </Card>
-                    </Grid>
-                  ))
-                ) : (
-                  <Grid item xs={12}>
-                    <Box sx={{ 
-                      display: 'flex', 
-                      flexDirection: 'column', 
-                      alignItems: 'center', 
-                      py: 8,
-                      textAlign: 'center'
-                    }}>
-                      <Bookmark sx={{ fontSize: 60, color: 'grey.300', mb: 2 }} />
-                      <Typography variant="h6" sx={{ mb: 1 }}>
-                        {isOwnProfile ? '你还没有收藏内容' : '该用户没有收藏内容'}
-                      </Typography>
-                      <Typography variant="body1" color="textSecondary">
-                        {isOwnProfile ? '看到喜欢的笔记可以收藏起来哦~' : ''}
-                      </Typography>
-                    </Box>
-                  </Grid>
-                )}
-              </Grid>
-            )}
-            
-            {activeTab === 2 && (
-  <Grid container spacing={3}>
-    {tabLoading ? (
-      <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'center', py: 4 }}>
-        <CircularProgress />
-      </Grid>
-    ) : following.length > 0 ? (
-      following.map((follow) => (
-        <Grid item xs={12} sm={6} md={4} key={follow.id}>
-          <Paper 
-            elevation={0} 
-            sx={{ 
-              bgcolor: 'white', 
-              borderRadius: 3,
-              p: 2,
-              display: 'flex',
-              alignItems: 'center',
-              cursor: 'pointer',
-              '&:hover': {
-                boxShadow: 1
-              }
-            }}
-            onClick={() => navigateToUserProfile(follow.id)}
-          >
-            <Avatar 
-              src={follow.avatar || 'https://randomuser.me/api/portraits/men/22.jpg'} 
-              sx={{ width: 60, height: 60 }} 
-            />
-            <Box sx={{ ml: 2, flexGrow: 1 }}>
-              <Typography fontWeight="medium">{follow.username}</Typography>
-              <Typography variant="body2" color="textSecondary">
-                {follow.followers_count || Math.floor(Math.random() * 100) + 10} 粉丝
-              </Typography>
-            </Box>
-            {isOwnProfile && (
-              <Button 
-                variant="outlined" 
-                size="small"
-                sx={{ borderRadius: 20 }}
-                onClick={(e) => {
-                  e.stopPropagation();
-                  handleUnfollow(userId,follow.id);
-                }}
-              >
-                已关注
-              </Button>
-            )}
-          </Paper>
-        </Grid>
-      ))
-    ) : (
-      <Grid item xs={12}>
-        <Box sx={{ 
-          display: 'flex', 
-          flexDirection: 'column', 
-          alignItems: 'center', 
-          py: 8,
-          textAlign: 'center'
-        }}>
-          <Group sx={{ fontSize: 60, color: 'grey.300', mb: 2 }} />
-          <Typography variant="h6" sx={{ mb: 1 }}>
-            {isOwnProfile ? '你还没有关注任何人' : '该用户还没有关注任何人'}
-          </Typography>
-          <Typography variant="body1" color="textSecondary">
-            {isOwnProfile ? '发现有趣的人并关注他们吧~' : ''}
-          </Typography>
-        </Box>
-      </Grid>
-    )}
-  </Grid>
-            )}
-            {activeTab === 3 && (
-              <Grid container spacing={3}>
-                {tabLoading ? (
-                  <Grid item xs={12} sx={{ display: 'flex', justifyContent: 'center', py: 4 }}>
-                    <CircularProgress />
-                  </Grid>
-                ) : followers.length > 0 ? (
-                  followers.map((follower) => (
-                    <Grid item xs={12} sm={6} md={4} key={follower.id}>
-                      <Paper 
-                        elevation={0} 
-                        sx={{ 
-                          bgcolor: 'white', 
-                          borderRadius: 3,
-                          p: 2,
-                          display: 'flex',
-                          alignItems: 'center',
-                          cursor: 'pointer',
-                          '&:hover': {
-                            boxShadow: 1
-                          }
-                        }}
-                        onClick={() => navigateToUserProfile(follower.id)}
-                      >
-                        <Avatar 
-                          src={follower.avatar || 'https://randomuser.me/api/portraits/men/22.jpg'} 
-                          sx={{ width: 60, height: 60 }} 
+                        <Chip 
+                          label={post.type === 'image' ? '图文' : post.type === 'video' ? '视频' : '文档'} 
+                          size="small" 
+                          color="primary" 
+                          variant="outlined" 
                         />
-                        <Box sx={{ ml: 2, flexGrow: 1 }}>
-                          <Typography fontWeight="medium">{follower.username}</Typography>
-                          <Typography variant="body2" color="textSecondary">
-                            {follower.bio || '暂无简介'}
-                          </Typography>
-                          <Typography variant="body2" color="textSecondary">
-                            {follower.followers_count} 粉丝
-                          </Typography>
-                        </Box>
-                        {currentUser && currentUser.id !== follower.id && (
-                          <Button 
-                            variant={follower.is_following ? "outlined" : "contained"}
-                            color="primary"
-                            size="small"
-                            sx={{ borderRadius: 20 }}
-                            onClick={(e) => {
-                              e.stopPropagation();
-                              if (follower.is_following) {
-                                handleUnfollow(userId,follower.id);
-                              } else {
-                                handleFollowUser(userId,follower.id);
-                              }
-                            }}
-                          >
-                            {follower.is_following ? '已关注' : '关注'}
-                          </Button>
-                        )}
-                      </Paper>
-                    </Grid>
-                  ))
-                ) : (
-                  <Grid item xs={12}>
-                    <Box sx={{ 
-                      display: 'flex', 
-                      flexDirection: 'column', 
-                      alignItems: 'center', 
-                      py: 8,
-                      textAlign: 'center'
-                    }}>
-                      <People sx={{ fontSize: 60, color: 'grey.300', mb: 2 }} />
-                      <Typography variant="h6" sx={{ mb: 1 }}>
-                        {isOwnProfile ? '你还没有粉丝' : '该用户还没有粉丝'}
-                      </Typography>
-                      <Typography variant="body1" color="textSecondary">
-                        {isOwnProfile ? '分享更多内容来吸引粉丝吧~' : ''}
-                      </Typography>
-                    </Box>
+                      </CardActions>
+                    </Card>
                   </Grid>
-                )}
-              </Grid>
-            )}
+                ))
+              )}
+              
+              {/* 分页组件 */}
+              {allPosts.length > postsPerPage && (
+                <Grid item xs={12}>
+                  <Stack spacing={2} alignItems="center" sx={{ mt: 4 }}>
+                    <Typography variant="body2" color="textSecondary">
+                      共 {allPosts.length} 篇笔记,第 {currentPage} 页,共 {totalPages} 页
+                    </Typography>
+                    <Pagination 
+                      count={totalPages}
+                      page={currentPage}
+                      onChange={(event, page) => handlePageChange(page)}
+                      color="primary"
+                      size={isMobile ? "small" : "medium"}
+                      showFirstButton 
+                      showLastButton
+                      sx={{
+                        '& .MuiPaginationItem-root': {
+                          borderRadius: 2,
+                        }
+                      }}
+                    />
+                  </Stack>
+                </Grid>
+              )}
+            </Grid>
           </Box>
         </Container>