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);
diff --git a/src/app/resource/classification/page.tsx b/src/app/resource/classification/page.tsx
index 32648da..f147ed2 100644
--- a/src/app/resource/classification/page.tsx
+++ b/src/app/resource/classification/page.tsx
@@ -35,7 +35,7 @@
   resourceSummary: string;
   lastUpdateTime: string;
   hot: number;
-  gamePlayList: { gameplayName: string }[];
+  gameplayList: string[];
 }
 
 interface HotResourceList {
@@ -120,8 +120,8 @@
               <div className="resource-content">
                 <h3>{hotResource.resourceName}</h3>
                 <div className="tags">
-                  {hotResource.gamePlayList.map((tag, index) => (
-                    <Tag key={index} value={tag.gameplayName} />
+                  {hotResource.gameplayList.map((tag, index) => (
+                    <Tag key={index} value={tag} />
                   ))}
                 </div>
               </div>
