fix: API param localStorge useId

Change-Id: Ifd624462360111f08ca308ea07b6fcaac0747104
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>