diff --git a/src/app/user/component/userAvatar.tsx b/src/app/user/component/userAvatar.tsx
index 4ed94d7..a7e4802 100644
--- a/src/app/user/component/userAvatar.tsx
+++ b/src/app/user/component/userAvatar.tsx
@@ -18,11 +18,17 @@
 import { Toast } from 'primereact/toast';
 // 接口传输
 import axios from 'axios';
+import { useLocalStorage } from '../../hook/useLocalStorage';
 // 样式
 import './user-avatar.scss';
-
+interface User {
+    Id: number;
+}
 // 用户下拉框
 export default function UserAvatar() {
+    const user = useLocalStorage<User>('user');
+    const userId: number = user?.Id ?? -1;
+
     // 功能选项
     const op = useRef<OverlayPanel>(null);
     let hoverTimeout: NodeJS.Timeout;
@@ -59,7 +65,7 @@
     const editPassward = async () => {
         try {
             await axios.put(process.env.PUBLIC_URL + `/user/password`, {
-                params: { userId: 22301145, password: oldPasswardValue, newPassword: passwardValue }
+                params: { userId, password: oldPasswardValue, newPassword: passwardValue }
             });
             toast.current?.show({ severity: 'success', summary: 'success', detail: '修改密码成功' });
             setShowEditPassword(false);
@@ -72,7 +78,7 @@
     const editSign = async () => {
         try {
             await axios.put(process.env.PUBLIC_URL + `/user/signature`, {
-                params: { userId: 22301145, signature: signValue }
+                params: { userId, signature: signValue }
             });
             toast.current?.show({ severity: 'success', summary: 'success', detail: '修改签名成功' });
             setShowEditSignature(false);
@@ -86,7 +92,7 @@
     const editAvatar = async () => {
         try {
             await axios.put(process.env.PUBLIC_URL + `/user/avatar`, {
-                params: { userId: 22301145, avatar: avatarUrl }
+                params: { userId, avatar: avatarUrl }
             });
             toast.current?.show({ severity: 'success', summary: 'success', detail: '修改头像成功' });
             setShowEditAvatar(false);
diff --git a/src/app/user/manage/resources/page.tsx b/src/app/user/manage/resources/page.tsx
index e3b7301..4d0d03f 100644
--- a/src/app/user/manage/resources/page.tsx
+++ b/src/app/user/manage/resources/page.tsx
@@ -1,30 +1,33 @@
 'use client';
-import React, {useEffect, useRef, useState} from 'react';
+import React, { useEffect, useRef, useState } from 'react';
 // import {TabView, TabPanel} from "primereact/tabview";
-import {Card} from "primereact/card";
-import {Image} from "primereact/image";
-import {Button} from "primereact/button";
+import { Card } from "primereact/card";
+import { Image } from "primereact/image";
+import { Button } from "primereact/button";
 // 弹窗
 import { Dialog } from 'primereact/dialog';
-import {InputText} from "primereact/inputtext";
-import {InputTextarea} from "primereact/inputtextarea";
-import {FileUpload} from "primereact/fileupload";
+import { InputText } from "primereact/inputtext";
+import { InputTextarea } from "primereact/inputtextarea";
+import { FileUpload } from "primereact/fileupload";
 // 类型转换
-import {toNumber} from "lodash";
+import { toNumber } from "lodash";
 // 消息提醒
-import {Toast} from 'primereact/toast';
+import { Toast } from 'primereact/toast';
 // 接口传输
 import axios from "axios";
 // 页面跳转
-import {useRouter} from "next/navigation";
+import { useRouter } from "next/navigation";
 // 分页
 import { Paginator, type PaginatorPageChangeEvent } from 'primereact/paginator';
 // 密码
 import { Password } from 'primereact/password';
+import { useLocalStorage } from '../../../hook/useLocalStorage';
 // 样式
 import './resources.scss';
 
-
+interface User {
+    Id: number;
+}
 
 // 用户发布的资源
 interface Resource {
@@ -54,12 +57,15 @@
 }
 
 export default function UserManageResources() {
+    const user = useLocalStorage<User>('user');
+    const userId: number = user?.Id ?? -1;
+
     // 路由
     const router = useRouter();
     // 发布资源列表
     const [resourceList, setResourceList] = useState<Resource[]>([]);
     // 要删除资源的id
-    const [deleteResourceId, setDeleteResourceId] =  useState<number>(0);
+    const [deleteResourceId, setDeleteResourceId] = useState<number>(0);
     // 资源封面路径
     const [resourcePictureUrl, setResourcePictureUrl] = useState<string>('');
     // 编辑资源的分类
@@ -100,7 +106,7 @@
         try {
             const pageNumber = first / rows + 1;
             const response = await axios.get<ResourceList>(process.env.PUBLIC_URL + `/user/upload`, {
-                params: {userId: 22301010, pageNumber: pageNumber, rows: rows}
+                params: { userId, pageNumber: pageNumber, rows: rows }
             });
 
             console.log('获取发布资源列表：', response.data.records);
@@ -108,7 +114,7 @@
             setTotalResources(response.data.total);
         } catch (err) {
             console.error('获取发布资源失败', err);
-            toast.current?.show({severity: 'error', summary: 'error', detail: '获取发布资源失败'});
+            toast.current?.show({ severity: 'error', summary: 'error', detail: '获取发布资源失败' });
         }
     };
 
@@ -117,20 +123,20 @@
         try {
             const deleteData = {
                 resourceId: deleteResourceId,
-                userId: 223010100,
+                userId,
                 password: deleteResourceFormData.password,
             };
             // 发送DELETE请求
             const response = await axios.delete(process.env.PUBLIC_URL + `/resource`, {
-                params: {resourceId: deleteData.resourceId, userId: deleteData.userId, password: deleteData.password},
+                params: { resourceId: deleteData.resourceId, userId: deleteData.userId, password: deleteData.password },
             });
-            console.log("用户" + 22301010 + "要删除" + deleteData.resourceId + "号资源");
+            console.log("用户" + userId + "要删除" + deleteData.resourceId + "号资源");
             console.log(deleteData);
 
             if (response.status === 204) {
                 console.log("用户成功删除资源");
                 // setIsDeleteResource(true);
-                toast.current?.show({severity: 'success', summary: 'Success', detail: '删除资源成功'});
+                toast.current?.show({ severity: 'success', summary: 'Success', detail: '删除资源成功' });
                 setDeleteVisible(false);
                 // 重置表单
                 setDeleteResourceFormData({
@@ -140,7 +146,7 @@
                 fetchResourceList();
             } else {
                 console.log('用户密码错误');
-                toast.current?.show({severity: 'error', summary: 'Error', detail: '密码错误，删除资源失败'});
+                toast.current?.show({ severity: 'error', summary: 'Error', detail: '密码错误，删除资源失败' });
             }
 
         } catch (error) {
@@ -187,10 +193,10 @@
             <div className="resource-list">
                 {resourceList.map((resourceList) => (
                     <Card key={resourceList.resourceId} className="resources-list-card"
-                          onClick={() => router.push(`/resource/resource-detail/${resourceList.resourceId}`)}>
+                        onClick={() => router.push(`/resource/resource-detail/${resourceList.resourceId}`)}>
                         <Image alt="avatar"
-                               src={process.env.NEXT_PUBLIC_NGINX_URL + "resource/" + resourceList.resourcePicture}
-                               className="resource-avatar" width="250" height="140"/>
+                            src={process.env.NEXT_PUBLIC_NGINX_URL + "resource/" + resourceList.resourcePicture}
+                            className="resource-avatar" width="250" height="140" />
                         <div className="resource-header">
                             <div className="resource-content">
                                 <h3>{resourceList.resourceName}</h3>
@@ -202,7 +208,7 @@
                                     onClick={(e) => {
                                         e.stopPropagation(); // 关键修复：阻止事件冒泡，避免触发Card的点击事件
                                         setEditVisible(true);
-                                        
+
                                         setResourceClassify(resourceList.classify);
                                         setEditResourceFormData({
                                             resourceId: resourceList.resourceId,
@@ -221,7 +227,7 @@
                                         setDeleteResourceId(resourceList.resourceId);
                                         setDeleteVisible(true);
                                     }}
-                                    style={{backgroundColor: "rgba(255, 87, 51, 1)"}}
+                                    style={{ backgroundColor: "rgba(255, 87, 51, 1)" }}
                                 />
                             </div>
                         </div>
@@ -295,7 +301,7 @@
                             value={editResourceFormData.resourceName}
                             onChange={(e) => setEditResourceFormData(prev => ({
                                 ...prev,
-                                resourceName:  e.target.value
+                                resourceName: e.target.value
                             }))}
                             className="w-full"
                         />
@@ -309,7 +315,7 @@
                             value={editResourceFormData.resourceSummary}
                             onChange={(e) => setEditResourceFormData(prev => ({
                                 ...prev,
-                                resourceSummary:  e.target.value
+                                resourceSummary: e.target.value
                             }))}
                             className="w-full"
                         />
@@ -323,7 +329,7 @@
                             value={editResourceFormData.resourceDetail}
                             onChange={(e) => setEditResourceFormData(prev => ({
                                 ...prev,
-                                resourceDetail:  e.target.value
+                                resourceDetail: e.target.value
                             }))}
                             rows={5}
                             className="w-full"
@@ -338,7 +344,7 @@
                             value={editResourceFormData?.price.toString()}
                             onChange={(e) => setEditResourceFormData(prev => ({
                                 ...prev,
-                                price:  e.target.value
+                                price: e.target.value
                             }))}
                             className="w-full"
                         />
diff --git a/src/app/user/page.tsx b/src/app/user/page.tsx
index 8201bc5..4baef17 100644
--- a/src/app/user/page.tsx
+++ b/src/app/user/page.tsx
@@ -5,12 +5,12 @@
 import { Avatar } from 'primereact/avatar';
 import { Button } from 'primereact/button';
 import { Card } from 'primereact/card';
-import {Image} from "primereact/image";
+import { Image } from "primereact/image";
 // 发布资源
 import { Dialog } from 'primereact/dialog';
-import {InputText} from "primereact/inputtext";
-import {InputTextarea} from "primereact/inputtextarea";
-import {FileUpload} from "primereact/fileupload";
+import { InputText } from "primereact/inputtext";
+import { InputTextarea } from "primereact/inputtextarea";
+import { FileUpload } from "primereact/fileupload";
 // 资源分类
 import { RadioButton, RadioButtonChangeEvent } from "primereact/radiobutton";
 // 资源标签
@@ -30,10 +30,14 @@
 
 // 接口传输
 import axios from "axios";
-
+import { useLocalStorage } from '../hook/useLocalStorage';
 // 样式
 import './user.scss';
 
+interface User {
+    Id: number;
+};
+
 // 用户信息
 interface UserInfo {
     userId: number;
@@ -42,7 +46,7 @@
     avatar: string;
     followerCount: number;// 粉丝数
     subscriberCount: number;// 关注数
-    signature:  string;// 个性签名
+    signature: string;// 个性签名
     uploadAmount: number;
     purchaseAmount: number;
     credits: number;
@@ -50,9 +54,9 @@
 
 // 用户数据
 interface UserData {
-    subscriberCount:  number; // 关注数
-    uploadAmount:  number; // 上传量（资源个数）
-    beDownloadedAmount:  number; // 上传资源被下载量
+    subscriberCount: number; // 关注数
+    uploadAmount: number; // 上传量（资源个数）
+    beDownloadedAmount: number; // 上传资源被下载量
     seedPercentageList: number[]; // 上传资源类型百分比列表，按材质包、模组、整合包、地图的顺序返回
 }
 
@@ -60,17 +64,17 @@
 interface Resource {
     resourceId: number;
     resourceName: string;
-    resourcePicture:  string;
-    resourceSummary:  string; // 资源简介（一句话）
+    resourcePicture: string;
+    resourceSummary: string; // 资源简介（一句话）
     resourceDetail: string; // 资源介绍
     uploadTime: string; // 上传时间
-    lastUpdateTime:  string; // 最近更新时间
-    price:  number;
-    downloads:  number;
-    likes:   number;
+    lastUpdateTime: string; // 最近更新时间
+    price: number;
+    downloads: number;
+    likes: number;
     collections: number;
     comments: number;
-    seeds:  number; // 种子数
+    seeds: number; // 种子数
     classify: string; // 资源分类(材质包：resourcePack,模组：mod,整合包：modPack ,地图：map
 }
 
@@ -139,6 +143,9 @@
 ];
 
 export default function UserPage() {
+    const user = useLocalStorage<User>('user');
+    const userId: number = user?.Id ?? -1;
+
     // 路由
     const router = useRouter();
     // 发布资源列表
@@ -188,7 +195,7 @@
     const fetchUserInfo = async () => {
         try {
             const response = await axios.get<UserInfo>(process.env.PUBLIC_URL + `/user/info`, {
-                params: { userId: 22301010 }
+                params: { userId }
             });
             console.log('获取用户信息：', response.data);
             setUserInfo(response.data);
@@ -202,7 +209,7 @@
     const fetchUserData = async () => {
         try {
             const response = await axios.get<UserData>(process.env.PUBLIC_URL + `/user/data`, {
-                params: { userId: 22301010 }
+                params: { userId }
             });
             console.log('获取用户数据：', response.data);
             setUserData(response.data);
@@ -233,8 +240,8 @@
     // 获取发布资源
     const fetchResourceList = async () => {
         try {
-            const response = await axios.get<ResourceList>(process.env.PUBLIC_URL +`/user/upload`, {
-                params: { userId: 22301010, pageNumber: 1, rows: 3 }
+            const response = await axios.get<ResourceList>(process.env.PUBLIC_URL + `/user/upload`, {
+                params: { userId, pageNumber: 1, rows: 3 }
             });
             console.log('获取发布资源列表：', response.data.records);
             setResourceList(response.data.records);
@@ -307,22 +314,22 @@
     const actions = [
         {
             template: () => (
-                <Button  label="管理资源" onClick={() => router.push(`/user/manage/resources/`)}/>
+                <Button label="管理资源" onClick={() => router.push(`/user/manage/resources/`)} />
             )
         },
         {
             template: () => (
-                <Button  label="已购资源" onClick={() => router.push(`/user/purchased-resources/`)}/>
+                <Button label="已购资源" onClick={() => router.push(`/user/purchased-resources/`)} />
             )
         },
         {
             template: () => (
-                <Button  label="发布资源" onClick={() => setVisible(true)}/>
+                <Button label="发布资源" onClick={() => setVisible(true)} />
             )
         },
         {
             template: () => (
-                <Button  label="编辑悬赏" onClick={() => router.push(`/user/manage/resources/`)}/>
+                <Button label="编辑悬赏" onClick={() => router.push(`/user/manage/resources/`)} />
             )
         }
     ];
@@ -456,7 +463,7 @@
                 },
                 gameplayList: resourceFormData.gameplayList,
                 completeRewardId: null,
-                userId: 22301010, // 记得用户登录状态获取
+                userId, // 记得用户登录状态获取
             };
             // 发送POST请求
             const response = await axios.post(process.env.PUBLIC_URL + '/resource', postData);
@@ -534,7 +541,7 @@
                         </div>
                     </div>
 
-                    <Button label="关注" className="action-button"/>
+                    <Button label="关注" className="action-button" />
                 </div>
             </div>
 
