diff --git a/src/views/homepage/homepage.tsx b/src/views/homepage/homepage.tsx
index 165ed67..697ed8f 100644
--- a/src/views/homepage/homepage.tsx
+++ b/src/views/homepage/homepage.tsx
@@ -1,7 +1,7 @@
 import React, { useCallback, useEffect,useState,useRef } from 'react';
 import styles from './homepage.module.css';
 import { useApi } from '@/hooks/request';
-import { useSelector } from 'react-redux';
+import { useAppSelector } from '@/hooks/store';
 import { RootState } from '@/store';
 import { useNavigate } from 'react-router';
 import  Logo  from '&/assets/logo.png';
@@ -46,37 +46,40 @@
   const [works, setWorks] = useState<WorkItem[]>([]);
   const worksRef = useRef<WorkItem[]>([]);
 
-
   const navigate = useNavigate();
-  const userInfo = useSelector((state: RootState) => state.user);
+  const userInfo = useAppSelector((state: RootState) => state.user);
   const userId = userInfo.userId; // 从Redux获取当前用户ID
 
+
   const { data:userdata, loading:userloading, error:usererror, refresh: getUserDetailRefresh } = useApi(
-    () => request.get(getUserDetail, {params: {userId}}).then(res => res.data.data),
+    () => request.get(getUserDetail, {params: {userId}}),
+    false
   );
 
-  const { data:workdata, loading:workloading, error:workerror, refresh: getUserMessageRefresh } = useApi(
-    () => request.get(getUserMessage, { params: { userId } }).then(res => res.data.data),
+  const { data: workdata, loading: workloading, error: workerror, refresh: getUserMessageRefresh } = useApi(
+    () => request.get(`${getUserMessage}/${userId}`), // 注意这里拼接了 userId
     false
   );
 
   const getUserDetails = debounce(async () => {
     try{
-      const res = await  getUserDetailRefresh({userId});
-      console.log("res", res);
-      const data = res?.userInfo;
-
+      // const res = await  getUserDetailRefresh({userId});
+      const res = await  getUserDetailRefresh();
+      const data_1 = res?.userInfo;
+      const data_2 = res?.statistics;
+      console.log('data', data_1)
       const formatted: UserStats = {
-      username: data.username,
-      uploadAmount: data.uploadAmount,
-      level: data.level,
-      likes: data.likes,
-      following: data.following,
-      followers: data.followers,
-      mutualFollows: data.mutualFollows
+        username: data_1.userName,
+        uploadAmount: data_1.uploadAmount,
+        level: data_1.userLevel,
+        likes: data_2.likes,
+        following: data_2.followingCount,
+        followers: data_2.followersCount,
+        mutualFollows: data_2.mutualFollows
       };
 
       setUserStats(formatted);
+      console.log('formatted:',formatted)
     }catch(error){
       console.error('获取用户信息错误', error);
     }
@@ -84,19 +87,21 @@
 
 
   const getUserPost = debounce(async () => {
-    try{
-
-      const url = `${getUserMessage}?userId=${userId}`;
+    try {
+      const url = `${getUserMessage}/${userId}`; // ✅ 正确的 URL 拼接方式
       console.log("请求发送:", url);
 
-      const res = await getUserMessageRefresh({userId});
+      // 不需要传 userId 参数了，因为 URL 已包含它
+      const res = await getUserMessageRefresh();
       console.log("res", res);
+
       worksRef.current = res;
       setWorks(res);
-    }catch(error) {
+    } catch (error) {
       console.error('获取帖子列表错误', error);
     }
-  },1000) as () => void;
+  }, 1000) as () => void;
+
 
   useEffect(() => {
     if (!userId) {
