massive fix

Change-Id: I5972893fc44707bddab7d0014b981ac3097238d6
diff --git "a/src/app/resource/resource-detail/\133resourceId\135/page.tsx" "b/src/app/resource/resource-detail/\133resourceId\135/page.tsx"
index 5e0a634..22abfdb 100644
--- "a/src/app/resource/resource-detail/\133resourceId\135/page.tsx"
+++ "b/src/app/resource/resource-detail/\133resourceId\135/page.tsx"
@@ -61,7 +61,6 @@
   likes: number;  // 点赞数
   collections: number;   // 收藏数
   comments: number;   // 评论数
-  seeds: number;    // 种子数
   classify: string;  // 资源分类(材质包:resourcePack,模组:mod,整合包:modPack ,地图:map
   hot: number;     // 资源热度
   gameplayList: string[];  // 资源标签
@@ -70,7 +69,7 @@
   isLike: boolean;   // 是否被点赞
   isPurchase: boolean;   // 是否被购买
   isUpload: boolean;     // 是否是该用户上传的
-  userId: number;     // 资源上传者的id
+  uploaderId: number;     // 资源上传者的id
 }
 
 // 评论信息
@@ -99,10 +98,10 @@
 // 新评论接口
 interface NewComment {
   userId: number;
-  threadId: number;
-  resourceId: number;
-  rewardId: number;
-  replyId: number;
+  threadId: number | null;
+  resourceId: number | null;
+  rewardId: number | null;
+  replyId: number | null;
   content: string;
   createAt: string;
 }
@@ -131,7 +130,7 @@
   const userId: number = user?.Id ?? -1;
   // 获取URL参数
   const params = useParams<{ resourceId: string }>();
-  const resourceId = decodeURIComponent(params.resourceId); // 防止中文路径乱码
+  const resourceId = Number(decodeURIComponent(params.resourceId)); // 防止中文路径乱码
   // 页面跳转
   const router = useRouter();
 
@@ -198,7 +197,7 @@
         setCollectionCount(response.data.collections);
       }
 
-      setResourceAuthorId(response.data.userId);
+      setResourceAuthorId(response.data.uploaderId);
     } catch (err) {
       console.error('获取资源信息失败', err);
       toast.current?.show({ severity: 'error', summary: 'error', detail: "获取资源信息失败" });
@@ -246,9 +245,9 @@
   }
 
   useEffect(() => {
-    if (!resource?.userId || !subscriberList?.userList) return;
+    if (!resource?.uploaderId || !subscriberList?.userList) return;
 
-    const authorId = resource.userId;
+    const authorId = resource.uploaderId;
     // 设置 isSubscribed 状态
     const subscribed = subscriberList.userList.some(user => user.userId === authorId);
     setIsSubscribed(subscribed);
@@ -257,7 +256,7 @@
   // 若浏览用户与资源作者是同一人,则不显示关注按钮。若不是同一人,则显示按钮
   const handleSubscribe = () => {
     // 资源作者 ID
-    const authorId = resource?.userId;
+    const authorId = resource?.uploaderId;
     // 当前登录用户 ID
     const currentUserId = userId;
 
@@ -340,7 +339,7 @@
   // 判断该资源是否已被购买, 返回不同的购买按钮
   const isPurchase = () => {
     // 作者本人查看资源,不显示购买按钮
-    if (resource?.userId == userId) {
+    if (resource?.uploaderId == userId) {
       return;
     }
 
@@ -405,7 +404,7 @@
       if (newCollectionState) {
         // 收藏操作
         await axios.post(process.env.PUBLIC_URL + `/resource/collection`, {
-          params: { resourceId: resourceId, userId }
+          resourceId: resourceId, userId 
         });
         console.log('收藏资源');
       } else {
@@ -442,7 +441,7 @@
       if (newLikeState) {
         // 点赞操作
         await axios.post(process.env.PUBLIC_URL + `/resource/like`, {
-          params: { resourceId: resourceId, userId }
+          resourceId: resourceId, userId 
         });
         console.log('点赞资源');
       } else {
@@ -488,7 +487,7 @@
   useEffect(() => {
     if (!resource) return;
     // 发帖人
-    axios.get(process.env.PUBLIC_URL + `/user/info?userId=${resource?.userId}`)
+    axios.get(process.env.PUBLIC_URL + `/user/info?userId=${resource?.uploaderId}`)
       .then(res => setUserInfo(res.data))
       .catch(console.error);
   }, [resource]);
@@ -515,7 +514,7 @@
       const pageNumber = first / rows + 1;
       console.log("当前页" + pageNumber + "size" + rows);
       const response = await axios.get<CommentList>(
-        process.env.PUBLIC_URL + `/comments`, {
+        process.env.PUBLIC_URL + `/comment`, {
         params: { id: resourceId, pageNumber, rows, type: 'resource' }
       }
       );
@@ -547,12 +546,12 @@
     try {
       const newComment: NewComment = {
         userId,
-        rewardId: 0,
-        threadId: 0,
+        rewardId: null,
+        threadId: null,
         resourceId: resource.resourceId,
         replyId: commentId,
         content: commentValue,
-        createAt: new Date().toISOString().slice(0, 19).replace('T', ' ')
+        createAt: new Date().toISOString().slice(0, 10).replace('T', ' ')
       };
 
       const response = await axios.post(process.env.PUBLIC_URL + '/comment', newComment);
@@ -578,12 +577,12 @@
     try {
       const newComment: NewComment = {
         userId,
-        rewardId: 0,
-        threadId: 0,
+        rewardId: null,
+        threadId: null,
         resourceId: resource.resourceId,
-        replyId: 0, // 直接评论,不是回复
+        replyId: null, // 直接评论,不是回复
         content: commentValue,
-        createAt: new Date().toISOString().slice(0, 19).replace('T', ' ')
+        createAt: new Date().toISOString().slice(0, 10).replace('T', ' ')
       };
 
       const response = await axios.post(process.env.PUBLIC_URL + '/comment', newComment);
@@ -763,7 +762,7 @@
           <Link href="/community" className="no-underline">进入社区</Link>
         </div>
         <div className="comments-input">
-          <Avatar image={process.env.NEXT_PUBLIC_NGINX_URL + "users/" + userInfo.avatar} size="large" shape="circle" />
+          <Avatar image={ "users/" + userInfo.avatar} size="large" shape="circle" />
           <InputText value={commentValue} placeholder="发布你的评论" onChange={(e) => setCommentValue(e.target.value)} />
           <Button label="发布评论" onClick={publishComment} disabled={!commentValue.trim()} />
         </div>
@@ -772,7 +771,7 @@
             <div key={comment.commentId} className="comment-item">
               <div className="comment-user">
                 <Avatar
-                  image={comment.userId ? process.env.NEXT_PUBLIC_NGINX_URL + "users/" + commentUserInfos.get(comment.userId)?.avatar : '/default-avatar.png'}
+                  image={comment.userId ?  "users/" + commentUserInfos.get(comment.userId)?.avatar : '/default-avatar.png'}
                   size="normal"
                   shape="circle"
                 />
@@ -807,7 +806,7 @@
               </OverlayPanel>
               <Sidebar className='reply' header={ReplyHeader} visible={visibleReply} position="bottom" onHide={() => setVisibleReply(false)}>
                 <div className="reply-input">
-                  <Avatar image={process.env.NEXT_PUBLIC_NGINX_URL + "users/" + userInfo.avatar} size="large" shape="circle" />
+                  <Avatar image={ "users/" + userInfo.avatar} size="large" shape="circle" />
                   <InputText value={replyValue} placeholder="发布你的评论" onChange={(e) => setReplyValue(e.target.value)} />
                   <Button label="发布评论" onClick={() => publishReply(comment.commentId)} disabled={!replyValue.trim()} />
                 </div>