diff --git a/src/app/page.tsx b/src/app/page.tsx
index fb42dac..941167b 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -13,9 +13,14 @@
 import { Fire } from '@icon-park/react';
 // 接口传输
 import axios from 'axios';
-
+import { useLocalStorage } from './hook/useLocalStorage';
 // 样式
 import './main.scss';
+
+interface User {
+  Id: number;
+}
+
 // 模组列表数据
 interface Mod {
   resourceId: number;
@@ -88,6 +93,9 @@
 }
 // 主页
 export default function Home() {
+    const user = useLocalStorage<User>('user');
+    const userId: number = user?.Id ?? -1;
+
   // 模组列表
   const [mods, setMods] = useState<Mod[]>([]);
   // 悬赏列表
@@ -126,7 +134,7 @@
   // 获取悬赏列表
   const fetchRewards = async () => {
     try {
-      const response = await axios.get<RewardList>(process.env.PUBLIC_URL +`/reward`, {
+      const response = await axios.get<RewardList>(process.env.PUBLIC_URL + `/reward`, {
         params: { pageNumber: 1, rows: 5, searchValue: '', option: '' }
       });
       console.log('获取悬赏列表:', response.data.records);
@@ -140,7 +148,7 @@
   // 获取热门资源幻灯片
   const fetchHotResources = async () => {
     try {
-      const response = await axios.get<HotResourceList>(process.env.PUBLIC_URL +`/resource/hot/slide`);
+      const response = await axios.get<HotResourceList>(process.env.PUBLIC_URL + `/resource/hot/slide`);
       console.log('获取热门社区幻灯片:', response.data.records);
       setHotResources(response.data.records);
     } catch (err) {
@@ -152,7 +160,7 @@
   // 获取全站数据
   const fetchstats = async () => {
     try {
-      const response = await axios.get<Stats>(process.env.PUBLIC_URL +`/total/info`);
+      const response = await axios.get<Stats>(process.env.PUBLIC_URL + `/total/info`);
       console.log('获取全站数据:', response.data);
       setStats(response.data);
     } catch (err) {
@@ -165,8 +173,8 @@
   // 获取推荐模组、地图、整合包、材质包
   const fetchRecommendMods = async () => {
     try {
-      const response = await axios.get<ModList>(process.env.PUBLIC_URL +`/resource/recommend`, {
-        params: { userId: 22301145, pageNumber: 1, rows: 3, type: '模组' }
+      const response = await axios.get<ModList>(process.env.PUBLIC_URL + `/resource/recommend`, {
+        params: { userId, pageNumber: 1, rows: 3, type: '模组' }
       });
       console.log('获取模组列表:', response.data.records);
       setMods(response.data.records);
@@ -177,8 +185,8 @@
   };
   const fetchRecommendMaps = async () => {
     try {
-      const response = await axios.get<MapList>(process.env.PUBLIC_URL +`/resource/recommend`, {
-        params: { userId: 22301145, pageNumber: 1, rows: 3, type: '地图' }
+      const response = await axios.get<MapList>(process.env.PUBLIC_URL + `/resource/recommend`, {
+        params: { userId, pageNumber: 1, rows: 3, type: '地图' }
       });
       console.log('获取模组列表:', response.data.records);
       setMaps(response.data.records);
@@ -189,8 +197,8 @@
   };
   const fetchRecommendModpacks = async () => {
     try {
-      const response = await axios.get<ModpackList>(process.env.PUBLIC_URL +`/resource/recommend`, {
-        params: { userId: 22301145, pageNumber: 1, rows: 3, type: '整合包' }
+      const response = await axios.get<ModpackList>(process.env.PUBLIC_URL + `/resource/recommend`, {
+        params: { userId, pageNumber: 1, rows: 3, type: '整合包' }
       });
       console.log('获取模组列表:', response.data.records);
       setModpacks(response.data.records);
@@ -201,8 +209,8 @@
   };
   const fetchRecommendTextures = async () => {
     try {
-      const response = await axios.get<TextureList>(process.env.PUBLIC_URL +`/resource/recommend`, {
-        params: { userId: 22301145, pageNumber: 1, rows: 3, type: '材质包' }
+      const response = await axios.get<TextureList>(process.env.PUBLIC_URL + `/resource/recommend`, {
+        params: { userId, pageNumber: 1, rows: 3, type: '材质包' }
       });
       console.log('获取模组列表:', response.data.records);
       setTextures(response.data.records);
