diff --git a/src/app/page.tsx b/src/app/page.tsx
index 941167b..5076a0a 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -93,9 +93,9 @@
 }
 // 主页
 export default function Home() {
-    const user = useLocalStorage<User>('user');
-    const userId: number = user?.Id ?? -1;
-
+  const user = useLocalStorage<User>('user');
+  const userId: number = user?.Id ?? -1;
+  console.log(userId)
   // 模组列表
   const [mods, setMods] = useState<Mod[]>([]);
   // 悬赏列表
@@ -174,7 +174,7 @@
   const fetchRecommendMods = async () => {
     try {
       const response = await axios.get<ModList>(process.env.PUBLIC_URL + `/resource/recommend`, {
-        params: { userId, pageNumber: 1, rows: 3, type: '模组' }
+        params: { userId, pageNumber: 1, rows: 3, classify: '模组', searchValue: ''  }
       });
       console.log('获取模组列表:', response.data.records);
       setMods(response.data.records);
@@ -186,7 +186,7 @@
   const fetchRecommendMaps = async () => {
     try {
       const response = await axios.get<MapList>(process.env.PUBLIC_URL + `/resource/recommend`, {
-        params: { userId, pageNumber: 1, rows: 3, type: '地图' }
+        params: { userId, pageNumber: 1, rows: 3, classify: '地图', searchValue: '' }
       });
       console.log('获取模组列表:', response.data.records);
       setMaps(response.data.records);
@@ -198,7 +198,7 @@
   const fetchRecommendModpacks = async () => {
     try {
       const response = await axios.get<ModpackList>(process.env.PUBLIC_URL + `/resource/recommend`, {
-        params: { userId, pageNumber: 1, rows: 3, type: '整合包' }
+        params: { userId, pageNumber: 1, rows: 3, classify: '整合包', searchValue: ''  }
       });
       console.log('获取模组列表:', response.data.records);
       setModpacks(response.data.records);
@@ -210,7 +210,7 @@
   const fetchRecommendTextures = async () => {
     try {
       const response = await axios.get<TextureList>(process.env.PUBLIC_URL + `/resource/recommend`, {
-        params: { userId, pageNumber: 1, rows: 3, type: '材质包' }
+        params: { userId, pageNumber: 1, rows: 3, classify: '材质包', searchValue: ''  }
       });
       console.log('获取模组列表:', response.data.records);
       setTextures(response.data.records);
