diff --git a/src/api/torrent.ts b/src/api/torrent.ts
new file mode 100644
index 0000000..2bf412b
--- /dev/null
+++ b/src/api/torrent.ts
@@ -0,0 +1,2 @@
+export const postTorrentUpload = '/torrent/upload'
+export const getTorrentDownload = '/torrent/download/'
\ No newline at end of file
diff --git a/src/api/upload.ts b/src/api/upload.ts
deleted file mode 100644
index cb768bb..0000000
--- a/src/api/upload.ts
+++ /dev/null
@@ -1 +0,0 @@
-export const Upload= '/user/Io';
\ No newline at end of file
diff --git a/src/components/corner/corner.tsx b/src/components/corner/corner.tsx
index 71dd772..ad80476 100644
--- a/src/components/corner/corner.tsx
+++ b/src/components/corner/corner.tsx
@@ -1,13 +1,14 @@
 // src/components/BottomRightUpload.tsx
-import React from 'react';
+import React, { use } from 'react';
 import styles from './corner.module.css';
 import { useNavigate } from 'react-router';
-
+import { useSearchParams } from 'react-router-dom';
 const BottomRightUpload: React.FC = () => {
+  const [searchParams] = useSearchParams();
   const navigate = useNavigate();
-
+  const type = searchParams.get('type');
   const handleUploadClick = () => {
-    navigate('/postDetails', { state: { isNewPost: true } });
+    navigate('/createPost', { state: { isNewPost: true, type} });
   };
 
   return (
diff --git a/src/components/pet/index.tsx b/src/components/pet/index.tsx
new file mode 100644
index 0000000..c859b68
--- /dev/null
+++ b/src/components/pet/index.tsx
@@ -0,0 +1,94 @@
+import React, { useState, useEffect } from 'react';
+
+const petList = [
+  {
+    id: 'cat01',
+    name: '喵喵',
+    image: '/pets/cat.png',
+    mood: '开心',
+    hunger: 50,
+  },
+  {
+    id: 'dog01',
+    name: '汪汪',
+    image: '/pets/dog.png',
+    mood: '饥饿',
+    hunger: 70,
+  }
+];
+
+const PetGame = () => {
+  const [selectedPetIndex, setSelectedPetIndex] = useState(0);
+  const [petStates, setPetStates] = useState(petList);
+
+  // 定时每 5 秒减少一点饥饿值
+  useEffect(() => {
+    const timer = setInterval(() => {
+      setPetStates(prev =>
+        prev.map((pet, index) =>
+          index === selectedPetIndex
+            ? {
+                ...pet,
+                hunger: Math.min(100, pet.hunger + 2),
+                mood: pet.hunger > 80 ? '生气' : pet.mood
+              }
+            : pet
+        )
+      );
+    }, 5000);
+    return () => clearInterval(timer);
+  }, [selectedPetIndex]);
+
+  const handleFeed = () => {
+    setPetStates(prev =>
+      prev.map((pet, index) =>
+        index === selectedPetIndex
+          ? {
+              ...pet,
+              hunger: Math.max(0, pet.hunger - 20),
+              mood: '开心'
+            }
+          : pet
+      )
+    );
+  };
+
+  const handlePet = () => {
+    setPetStates(prev =>
+      prev.map((pet, index) =>
+        index === selectedPetIndex
+          ? { ...pet, mood: '超级开心' }
+          : pet
+      )
+    );
+  };
+
+  const currentPet = petStates[selectedPetIndex];
+
+  return (
+    <div style={{ textAlign: 'center', padding: 20 }}>
+      <h2>当前宠物：{currentPet.name}</h2>
+      <img
+        src={currentPet.image}
+        alt={currentPet.name}
+        style={{ width: 200, height: 200, cursor: 'pointer' }}
+        onClick={handlePet}
+      />
+      <p>情绪：{currentPet.mood}</p>
+      <p>饥饿值：{currentPet.hunger}/100</p>
+
+      <button onClick={handleFeed}>🍖 喂食</button>
+
+      <div style={{ marginTop: 20 }}>
+        <h4>切换宠物：</h4>
+        {petStates.map((pet, index) => (
+          <button key={pet.id} onClick={() => setSelectedPetIndex(index)} style={{ marginRight: 8 }}>
+            {pet.name}
+          </button>
+        ))}
+      </div>
+    </div>
+  );
+};
+
+export default PetGame;
diff --git a/src/components/selfStatus/selfStatus.tsx b/src/components/selfStatus/selfStatus.tsx
index fb25c75..0fd0636 100644
--- a/src/components/selfStatus/selfStatus.tsx
+++ b/src/components/selfStatus/selfStatus.tsx
@@ -21,7 +21,7 @@
     const uploadTraffic = useAppSelector(state => state.user.uploadTraffic);
     const downloadTraffic = useAppSelector(state => state.user.downloadTraffic);
     const downloadPoints = useAppSelector(state => state.user.downloadPoints);
-    const avatar = useAppSelector(state => state.user.avatar);
+    const avatar = useAppSelector(state => state.user.avatar)  || 'https://pic.baike.soso.com/ugc/baikepic2/6664/20220301143956-1127285627_png_800_800_370852.jpg/0';
     const dispatch = useAppDispatch();
     const { data, refresh } = useApi(() => request.get(getUserInfo), false);
     const dataRef = useRef(data);
diff --git a/src/mock/upload.js b/src/mock/upload.js
index c3f2705..a70122c 100644
--- a/src/mock/upload.js
+++ b/src/mock/upload.js
@@ -1,26 +1,26 @@
 import Mock from 'mockjs';
 import MockAdapter from 'axios-mock-adapter';
-import {Upload} from '@/api/upload'; 
+// import {Upload} from '@/api/upload'; 
 
-/**
- * 设置上传种子的 Mock 接口
- * @param {MockAdapter} mock 
- */
+// /**
+//  * 设置上传种子的 Mock 接口
+//  * @param {MockAdapter} mock 
+//  */
 export function setupUploadMock(mock) {
-  mock.onPost(Upload).reply((config) => {
-    const body = JSON.parse(config.data);
+//   mock.onPost(Upload).reply((config) => {
+//     const body = JSON.parse(config.data);
 
-    console.log('收到上传请求，内容如下:');
-    console.log(body);
+//     console.log('收到上传请求，内容如下:');
+//     console.log(body);
 
 
-    return [
-      200,
-      {
-        code: 0,
-        message: '',
-        data: null
-      }
-    ];
-  });
+//     return [
+//       200,
+//       {
+//         code: 0,
+//         message: '',
+//         data: null
+//       }
+//     ];
+//   });
 }
diff --git a/src/route/index.tsx b/src/route/index.tsx
index 857118e..6f76a1e 100644
--- a/src/route/index.tsx
+++ b/src/route/index.tsx
@@ -42,7 +42,7 @@
                         element: <Homepage/>
                     },
                     {
-                        path:'/postDetails',
+                        path:'/createPost',
                         element: <Upload/>
                     },
                     {
diff --git a/src/types/common.ts b/src/types/common.ts
index e1ca2c9..eef331f 100644
--- a/src/types/common.ts
+++ b/src/types/common.ts
@@ -181,4 +181,11 @@
     69: 'music',
     70: 'read',
     71: 'system',
-};
\ No newline at end of file
+};
+
+export const MainTag = [
+    'video',
+    'Game',
+    'music',
+    'software'
+]
\ No newline at end of file
diff --git a/src/utils/common.ts b/src/utils/common.ts
new file mode 100644
index 0000000..cc20522
--- /dev/null
+++ b/src/utils/common.ts
@@ -0,0 +1,13 @@
+import { MainPostTag, MainPostTagParent, MainPostTagName } from '@/types/common';
+
+export const getTagsByMainTag:(main:string)=>Map<string, number> = (main:string)=>{
+    const ans = new Map<string, number>()
+    const mainTagId = MainPostTag[main as keyof typeof MainPostTag];
+    for(const key in MainPostTagParent){
+        if(MainPostTagParent[key] === mainTagId)
+        {
+            ans.set(MainPostTagName[key], Number(key));
+        }
+    }
+    return ans;
+}
\ No newline at end of file
diff --git a/src/views/frame/frame.tsx b/src/views/frame/frame.tsx
index 83106a1..ba17996 100644
--- a/src/views/frame/frame.tsx
+++ b/src/views/frame/frame.tsx
@@ -51,7 +51,7 @@
     return (
         <div style={{ display: 'block', height: '100vh' }}>
             <header className={style.header}>
-                <img className={style.logo} src={logo} alt="website logo"></img>
+                <img className={style.logo} src={logo} alt="website logo" onClick={()=>navigate('/')}></img>
                 {showSearch && (
                     // <input className={style.searchInput} placeholder="输入关键词进行搜索"/>
                     <input
diff --git a/src/views/pet/pet.module.css b/src/views/pet/pet.module.css
deleted file mode 100644
index e69de29..0000000
--- a/src/views/pet/pet.module.css
+++ /dev/null
diff --git a/src/views/pet/pet.tsx b/src/views/pet/pet.tsx
deleted file mode 100644
index e69de29..0000000
--- a/src/views/pet/pet.tsx
+++ /dev/null
diff --git a/src/views/upload/upload.module.css b/src/views/upload/upload.module.css
index 5a9952a..5013522 100644
--- a/src/views/upload/upload.module.css
+++ b/src/views/upload/upload.module.css
@@ -1,8 +1,9 @@
 .container {
   background-color: var(--card-bg);
+  box-sizing: border-box;
   padding: 32px;
   border-radius: 12px;
-  width: 100%;
+  width:100%;
   height: 100%;
   margin: auto;
   border: 1px solid var(--border-color);
@@ -16,7 +17,7 @@
 .input,
 .select,
 .textarea {
-  width: 100%;
+  width: 80%;
   padding: 8px 12px;
   margin-top: 4px;
   border: 1px solid var(--border-color);
@@ -35,6 +36,7 @@
 }
 
 .charCount {
+  width: calc(80px + 80%);
   text-align: right;
   font-size: 12px;
   color: var(--text-color);
@@ -63,7 +65,11 @@
   transition: background-color 0.3s ease;
 }
 
-.submitBtn:hover {
+.submitBtn:disabled {
+  background-color: #999;
+}
+
+.submitBtn:hover :not(:disabled) {
   background-color: var(--primary-hover);
 }
 
@@ -91,7 +97,7 @@
 
 .input,
 .textarea {
-  width: 100%;
+  width: 80%;
   padding: 10px;
   margin-bottom: 16px;
   border-radius: 6px;
@@ -145,6 +151,10 @@
   transition: background-color 0.3s;
 }
 
+.uploadButton :disabled {
+  background-color: #999;
+}
+
 .uploadButton:hover {
   background-color: #317ee7;
 }
diff --git a/src/views/upload/upload.tsx b/src/views/upload/upload.tsx
index 4a60330..1bf096a 100644
--- a/src/views/upload/upload.tsx
+++ b/src/views/upload/upload.tsx
@@ -1,16 +1,46 @@
 import instance from '@/utils/axios';
-import React, { useState } from 'react';
+import React, { useCallback, useEffect, useState } from 'react';
 import styles from './upload.module.css';
-import { Upload } from '@/api/upload';
-import { useNavigate } from 'react-router-dom'; // 用于跳转
+import {postTorrentUpload } from '@/api/torrent';
+import { useLocation, useNavigate } from 'react-router-dom'; // 用于跳转
+import { getTagsByMainTag } from '@/utils/common';
+import { Checkbox, Row, Col } from 'antd'; // 使用 antd 的 Checkbox 组件
+import { MainTag } from '@/types/common';
+import { Select } from 'antd';
+import { UploadOutlined } from '@ant-design/icons';
+import type { UploadProps } from 'antd';
+import { Button, message, Upload as UploadArea } from 'antd';
 
-const PostDetails = () => {
+
+const CreatePost = () => {
+  const location = useLocation();
   const [postTitle, setPostTitle] = useState('');
-  const [postType, setPostType] = useState('');
   const [postContent, setPostContent] = useState('');
   const [isChecked, setIsChecked] = useState(false);
-
+  const {type} = location.state || {type: ''}; // 获取路由传递的参数
+  const [tagIds, setTagIds] = useState<number[]>([]);
+  const [postType, setPostType] = useState<string>(type || ''); // 初始化 postType
   const navigate = useNavigate();
+  const [tags, setTags] = useState<Map<string, number>>(new Map());
+
+  const props: UploadProps = {
+    name: 'file',
+    action: process.env.REACT_APP_BASE_URL + postTorrentUpload, // 替换为实际的上传接口地址
+    headers: {
+      authorization: 'authorization-text',
+    },
+    onChange(info) {
+      if (info.file.status !== 'uploading') {
+        console.log(info.file, info.fileList);
+      }
+      if (info.file.status === 'done') {
+        message.success(`${info.file.name} file uploaded successfully`);
+      } else if (info.file.status === 'error') {
+        message.error(`${info.file.name} file upload failed.`);
+      }
+    },
+  };
+
 
   const handleSubmit = async () => {
     if (!postTitle.trim() || !postType || !postContent.trim()) {
@@ -54,6 +84,17 @@
     }
   };
 
+  useEffect(() => {
+    setTags(getTagsByMainTag(type)); // 获取对应类型的标签
+  },[]);
+
+  const handlePostTypeChange = useCallback((value:string) => {
+    setPostType(value);
+    setTags(getTagsByMainTag(value)); // 更新 tags
+    setTagIds([]); // 清空已选的标签 ID
+  }, [postType, setTags, setTagIds]);
+
+
   return (
     <div className={styles.container}>
       <div className={styles.formGroup}>
@@ -66,29 +107,42 @@
           className={styles.input}
         />
       </div>
+  
+      <div className={styles.formGroup}>
+        <label>种子类型：</label>
+        <Select
+          value={postType}
+          onChange={handlePostTypeChange}
+
+          options ={ MainTag.map((item) => ({
+            label: item,
+            value: item
+          }))} />
+      </div>
 
       <div className={styles.formGroup}>
         <label>类型选择：</label>
-        <select
-          value={postType}
-          onChange={(e) => setPostType(e.target.value)}
-          className={styles.select}
+        <Checkbox.Group
+          value={tagIds}
+          onChange={(checkedValues) => setTagIds(checkedValues as number[])}
         >
-          <option value="">下拉选择</option>
-          <option value="type1">类型一</option>
-          <option value="type2">类型二</option>
-        </select>
+          <Row gutter={[12, 12]}>
+            {[...tags.entries()].map(([name, id]) => (
+              <Col key={id} xs={12} sm={8} md={6} lg={4}>
+                <Checkbox value={id}>{name}</Checkbox>
+              </Col>
+            ))}
+          </Row>
+        </Checkbox.Group>
       </div>
 
       {/* 暂时移除上传文件表单 */}
-      {/* <div className={styles.formGroup}>
+      <div className={styles.formGroup}>
         <label>上传资源：</label>
-        <input
-          type="file"
-          onChange={(e) => setFile(e.target.files?.[0] || null)}
-          className={styles.upload}
-        />
-      </div> */}
+        <UploadArea {...props}>
+          <Button icon={<UploadOutlined />}>Upload</Button>
+        </UploadArea>
+      </div>
 
       <div className={styles.formGroup}>
         <label>内容介绍：</label>
@@ -113,11 +167,11 @@
         <span>我已知晓以上内容</span>
       </div>
 
-      <button onClick={handleSubmit} className={styles.submitBtn}>
+      <button onClick={handleSubmit} className={styles.submitBtn} disabled={!isChecked}>
         我已知晓
       </button>
     </div>
   );
 };
 
-export default PostDetails;
+export default CreatePost;
