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>