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>
