diff --git a/.gitignore b/.gitignore
index bbf5ca6..1928d6a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,4 @@
 target/
 .vscode/
 torrents/
-front/node_moduels
\ No newline at end of file
+front/node_moduels
diff --git a/front/package-lock.json b/front/package-lock.json
index 0adbc29..60ee600 100644
--- a/front/package-lock.json
+++ b/front/package-lock.json
@@ -5267,7 +5267,6 @@
       "version": "5.25.4",
       "resolved": "https://registry.npmjs.org/antd/-/antd-5.25.4.tgz",
       "integrity": "sha512-yXdWqq1NJSZnD1HoPZWnWuQJGVYYnB3h0Ufsz4sbt3T0N9SdJ4G9GPpLMk8Gn9zWtwBekfR4THPVZ9uzAyhBHQ==",
-      "license": "MIT",
       "dependencies": {
         "@ant-design/colors": "^7.2.1",
         "@ant-design/cssinjs": "^1.23.0",
@@ -17909,6 +17908,7 @@
       },
       "engines": {
         "node": ">=4.2.0"
+        "node": ">=4.2.0"
       }
     },
     "node_modules/unbox-primitive": {
diff --git a/front/src/AnimePage.js b/front/src/AnimePage.js
index d17f3cc..118d8fb 100644
--- a/front/src/AnimePage.js
+++ b/front/src/AnimePage.js
@@ -9,6 +9,7 @@
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import "./App.css";
 import { useNavigate } from "react-router-dom";
+import { API_BASE_URL } from "./config";
 
 const navItems = [
   { label: "电影", icon: <MovieIcon />, path: "/movie" },
@@ -55,7 +56,7 @@
   React.useEffect(() => {
     // 假设后端接口为 /api/animes?area=大陆
     const area = areaTabs[activeTab].label;
-    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
       .then(data => setAnimeList(data))
       .catch(() => setAnimeList([]));
diff --git a/front/src/GamePage.js b/front/src/GamePage.js
index 2528acd..1de4d30 100644
--- a/front/src/GamePage.js
+++ b/front/src/GamePage.js
@@ -9,6 +9,7 @@
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import "./App.css";
 import { useNavigate } from "react-router-dom";
+import { API_BASE_URL } from "./config";
 
 const navItems = [
   { label: "电影", icon: <MovieIcon />, path: "/movie" },
@@ -46,7 +47,7 @@
 
   React.useEffect(() => {
     const area = areaTabs[activeTab].label;
-    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
       .then(data => setGameList(data))
       .catch(() => setGameList([]));
diff --git a/front/src/InfoPage.js b/front/src/InfoPage.js
index 755d922..0ed6ade 100644
--- a/front/src/InfoPage.js
+++ b/front/src/InfoPage.js
@@ -9,6 +9,7 @@
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import "./App.css";
 import { useNavigate } from "react-router-dom";
+import { API_BASE_URL } from "./config";
 
 const navItems = [
   { label: "电影", icon: <MovieIcon />, path: "/movie" },
@@ -55,7 +56,7 @@
   React.useEffect(() => {
     // 这里假设后端接口为 /api/get-seed-list-by-tag?tag=大陆
     const area = areaTabs[activeTab].label;
-    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
       .then(data => {
         console.log('资料区返回数据:', data);
diff --git a/front/src/LoginPage.js b/front/src/LoginPage.js
index 59a1b2b..acbde03 100644
--- a/front/src/LoginPage.js
+++ b/front/src/LoginPage.js
@@ -21,7 +21,7 @@
 
     // Simulate successful login
     setErrorMessage('');
-    navigate('/');
+    navigate('/movie');
   };
 
   const handleRegister = () => {
diff --git a/front/src/MoviePage.js b/front/src/MoviePage.js
index c84797b..83ccad1 100644
--- a/front/src/MoviePage.js
+++ b/front/src/MoviePage.js
@@ -9,6 +9,7 @@
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import { useNavigate } from "react-router-dom";
 import "./App.css";
+import { API_BASE_URL } from "./config";
 
 const navItems = [
   { label: "电影", icon: <MovieIcon />, path: "/movie" },
@@ -53,7 +54,7 @@
   React.useEffect(() => {
     // 这里假设后端接口为 /api/get-seed-list-by-tag?tag=大陆
     const area = areaTabs[activeTab].label;
-    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
       .then(data => {
         console.log('电影区返回数据:', data);
diff --git a/front/src/MusicPage.js b/front/src/MusicPage.js
index b39b0ee..fb03fe1 100644
--- a/front/src/MusicPage.js
+++ b/front/src/MusicPage.js
@@ -9,6 +9,7 @@
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import "./App.css";
 import { useNavigate } from "react-router-dom";
+import { API_BASE_URL } from "./config";
 
 const navItems = [
   { label: "电影", icon: <MovieIcon />, path: "/movie" },
@@ -53,7 +54,7 @@
   React.useEffect(() => {
     // 假设后端接口为 /api/musics?area=大陆
     const area = areaTabs[activeTab].label;
-    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
       .then(data => setMusicList(data))
       .catch(() => setMusicList([]));
diff --git a/front/src/PublishPage.js b/front/src/PublishPage.js
index abd4ee2..c6b80c4 100644
--- a/front/src/PublishPage.js
+++ b/front/src/PublishPage.js
@@ -1,6 +1,7 @@
 import React, { useState } from 'react';
 import './App.css';
 import './PublishPage.css';
+import { API_BASE_URL } from "./config";
 
 const PublishPage = () => {
   const [formData, setFormData] = useState({
@@ -36,8 +37,11 @@
     }
   };
 
-  const handleSubmit = (e) => {
+  const handleSubmit = async (e) => {
     e.preventDefault();
+
+    console.log('Form Data Submitted:', formData);
+
     // 假设userid和tag可以从表单或用户信息中获取，这里用示例数据
     const userid = '550e8400-e29b-41d4-a716-446655440000';
     const tag = formData.type ? formData.type : '高清';
@@ -55,7 +59,17 @@
     // console.log(data.get('tag'));
 
     try {
+
       const response = await fetch('http://192.168.5.9:8080/api/save-torrent', {
+
+      // console.log(data.get('userid'));
+      // console.log(data.get('title'));
+      const response = await fetch(`${API_BASE_URL}/api/save-torrent`, {
+
+      // console.log(data.get('userid'));
+      // console.log(data.get('title'));
+      const response = await fetch(`${API_BASE_URL}/api/save-torrent`, {
+
         method: 'POST',
         body: data,
       });
@@ -67,6 +81,7 @@
     } catch (err) {
       alert('网络错误');
     }
+
   };
 
   return (
diff --git a/front/src/SportPage.js b/front/src/SportPage.js
index 3299a93..4c9d17d 100644
--- a/front/src/SportPage.js
+++ b/front/src/SportPage.js
@@ -9,6 +9,7 @@
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import "./App.css";
 import { useNavigate } from "react-router-dom";
+import { API_BASE_URL } from "./config";
 
 const navItems = [
   { label: "电影", icon: <MovieIcon />, path: "/movie" },
@@ -55,7 +56,7 @@
   React.useEffect(() => {
     // 假设后端接口为 /api/sports?area=篮球
     const area = areaTabs[activeTab].label;
-    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
       .then(data => setSportList(data))
       .catch(() => setSportList([]));
diff --git a/front/src/TVPage.js b/front/src/TVPage.js
index bf1db6c..216dfcc 100644
--- a/front/src/TVPage.js
+++ b/front/src/TVPage.js
@@ -9,6 +9,7 @@
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import { useNavigate } from "react-router-dom";
 import "./App.css";
+import { API_BASE_URL } from "./config";
 
 const navItems = [
   { label: "电影", icon: <MovieIcon />, path: "/movie" },
@@ -45,7 +46,7 @@
   React.useEffect(() => {
     // 假设后端接口为 /api/tvs?area=大陆
     const area = areaTabs[activeTab].label;
-    fetch(`http://192.168.5.9:8080/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
+    fetch(`${API_BASE_URL}/api/get-seed-list-by-tag?tag=${encodeURIComponent(area)}`)
       .then(res => res.json())
       .then(data => setTvList(data))
       .catch(() => setTvList([]));
diff --git a/front/src/TorrentDetailPage.js b/front/src/TorrentDetailPage.js
index 8d3ee43..cc2dd24 100644
--- a/front/src/TorrentDetailPage.js
+++ b/front/src/TorrentDetailPage.js
@@ -1,6 +1,7 @@
 import React from 'react';
 import { useParams } from 'react-router-dom';
 import './App.css';
+import { API_BASE_URL } from "./config";
 
 export default function TorrentDetailPage() {
   const { torrentId } = useParams();
@@ -13,7 +14,7 @@
   const handleClick = () => {
     // 构造下载 URL，包含 userId 和 torrentId 参数
     console.log(torrentId)
-    const downloadUrl = `http://192.168.5.9:8080/api/get-torrent?userId=${encodeURIComponent(userId)}&torrentId=${encodeURIComponent(torrentId)}`;
+    const downloadUrl = `${API_BASE_URL}/api/get-torrent?userId=${encodeURIComponent(userId)}&torrentId=${encodeURIComponent(torrentId)}`;
     
     // 发起 GET 请求下载文件
     fetch(downloadUrl)
@@ -43,7 +44,7 @@
   React.useEffect(() => {
     setLoading(true);
     setError(null);
-    fetch(`http://192.168.5.9:8080/api/torrent-detail?id=${encodeURIComponent(torrentId)}`)
+    fetch(`${API_BASE_URL}/api/torrent-detail?id=${encodeURIComponent(torrentId)}`)
       .then(res => {
         if (!res.ok) throw new Error('网络错误');
         return res.json();
diff --git a/front/src/UserProfile.js b/front/src/UserProfile.js
index 4737033..753e901 100644
--- a/front/src/UserProfile.js
+++ b/front/src/UserProfile.js
@@ -1,6 +1,7 @@
 import React, { useState, useEffect } from "react";
 import AccountCircleIcon from "@mui/icons-material/AccountCircle";
 import { useNavigate } from "react-router-dom";
+import { API_BASE_URL } from "./config";
 import "./App.css";
 
 export default function UserProfile() {
@@ -31,11 +32,13 @@
       const userid = "550e8400-e29b-41d4-a716-446655440000"; // 示例userid
       if (!userid) return;
       try {
-        const res = await fetch(`/api/user-profile?userid=${userid}`);
+        const res = await fetch(`${API_BASE_URL}/api/user-profile?userid=${userid}`);
+        
         if (res.ok) {
           const data = await res.json();
           setUserInfo(data);
           setTempUserInfo(data);
+          // console.log(data);
         }
       } catch (err) {
         // 可以根据需要处理错误
@@ -52,7 +55,7 @@
       const userid = "550e8400-e29b-41d4-a716-446655440000"; // 示例userid
       if (!userid) return;
       try {
-        const res = await fetch(`/api/user-seeds?userid=${userid}`);
+        const res = await fetch(`${API_BASE_URL}/api/user-seeds?userid=${userid}`);
         if (res.ok) {
           const data = await res.json();
           setUserSeeds(data);
@@ -71,7 +74,7 @@
       const userid = "550e8400-e29b-41d4-a716-446655440000"; // 示例userid
       if (!userid) return;
       try {
-        const res = await fetch(`/api/user-stats?userid=${userid}`);
+        const res = await fetch(`${API_BASE_URL}/api/user-stats?userid=${userid}`);
         if (res.ok) {
           const data = await res.json();
           setUserStats(data);
@@ -88,12 +91,18 @@
   };
 
   const handleSave = async () => {
+    if (tempUserInfo.gender === "男性"){
+      tempUserInfo.gender = "m";
+    }else if (tempUserInfo.gender === "女性"){
+      tempUserInfo.gender = "f";
+    }
     setUserInfo({ ...tempUserInfo });
+    console.log("保存的用户信息：", tempUserInfo);
     // 获取userid
     // const userid = localStorage.getItem("userid");
     const userid = "550e8400-e29b-41d4-a716-446655440000"; // 示例userid
     try {
-      const res = await fetch('/api/change-profile', {
+      const res = await fetch(`${API_BASE_URL}/api/change-profile`, {
         method: 'POST',
         headers: {
           'Content-Type': 'application/json',
@@ -112,9 +121,9 @@
   };
 
   const handleAvatarClick = () => {
-    const avatarUrl = prompt("请输入头像的URL：");
-    if (avatarUrl) {
-      setTempUserInfo({ ...tempUserInfo, avatar: avatarUrl });
+    const pictureUrl = prompt("请输入头像的URL：");
+    if (pictureUrl) {
+      setTempUserInfo({ ...tempUserInfo, avatar_url: pictureUrl });
     }
   };
 
@@ -125,7 +134,7 @@
         <div style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', marginBottom: 16 }}>
           <div onClick={handleAvatarClick} style={{ cursor: 'pointer', position: 'relative' }}>
             <AccountCircleIcon style={{ fontSize: 90, color: '#1a237e', marginBottom: 12 }} />
-            {tempUserInfo.avatar && (
+            {tempUserInfo.avatar_url && (
               <img
                 src={tempUserInfo.avatar_url}
                 alt="用户头像"
@@ -166,7 +175,7 @@
             <span
               style={{ flex: 1, padding: '6px 10px', borderRadius: 7, border: '1px solid #b2b2b2', minWidth: 0, fontSize: 15, backgroundColor: '#f5f5f5', color: '#888' }}
             >
-              {tempUserInfo.invite_left}
+              {tempUserInfo.invite_left || "0"}
             </span>
           </div>
           <div style={{ marginBottom: 18, display: 'flex', alignItems: 'center' }}>
@@ -211,7 +220,9 @@
                   cursor: 'pointer',
                 }}
               >
-                {tempUserInfo.gender || "性别"}
+                {tempUserInfo.gender === 'm' ? '男性'
+                  : tempUserInfo.gender === 'f' ? '女性'
+                  : '性别'}
               </button>
               {tempUserInfo.showGenderOptions && (
                 <ul
@@ -229,20 +240,18 @@
                     zIndex: 10,
                   }}
                 >
-                  {["男", "女", "跨性别男", "跨性别女", "无性别"].map((option) => (
+                  {[{ value: 'm', label: '男性' }, { value: 'f', label: '女性' }].map(opt => (
                     <li
-                      key={option}
-                      onClick={() => {
-                        setTempUserInfo({ ...tempUserInfo, gender: option, showGenderOptions: false });
-                      }}
+                      key={opt.value}
+                      onClick={() => setTempUserInfo({ ...tempUserInfo, gender: opt.value, showGenderOptions: false })}
                       style={{
                         padding: '6px 10px',
                         cursor: 'pointer',
                         borderBottom: '1px solid #e0e0e0',
-                        backgroundColor: option === tempUserInfo.gender ? '#f0f0f0' : '#fff',
+                        backgroundColor: tempUserInfo.gender === opt.value ? '#f0f0f0' : '#fff',
                       }}
                     >
-                      {option}
+                      {opt.label}
                     </li>
                   ))}
                 </ul>
@@ -284,27 +293,29 @@
                   onClick={e => {
                     // 阻止点击删除按钮时跳转
                     if (e.target.classList.contains('delete-btn')) return;
-                    navigate(`/torrent/${seed.seed_id}`);
+                    navigate(`/torrent/${seed.seedid}`);
                   }}
                 >
                   <span style={{ flex: 2, fontWeight: 500, color: '#1a237e', textDecoration: 'underline' }}>{seed.title}</span>
                   <span style={{ flex: 1, color: '#5c6bc0' }}>{seed.tags}</span>
-                  <span style={{ flex: 1, color: '#ff9800', textAlign: 'right' }}>人气: {seed.popularity}</span>
+                  <span style={{ flex: 1, color: '#ff9800', textAlign: 'right' }}>人气: {seed.downloadtimes}</span>
                   <button
                     className="delete-btn"
                     style={{ marginLeft: 18, background: '#e53935', color: '#fff', border: 'none', borderRadius: 6, padding: '4px 14px', cursor: 'pointer', fontSize: 14 }}
                     onClick={async (e) => {
                       e.stopPropagation();
                       // const userid = localStorage.getItem("userid");
-                      const userid = "550e8400-e29b-41d4-a716-446655440000"; // 示例userid
+                      // const userid = "550e8400-e29b-41d4-a716-446655440000"; // 示例userid
                       try {
-                        const res = await fetch('/api/delete-seed', {
+                        
+                        const res = await fetch(`${API_BASE_URL}/api/delete-seed`, {
                           method: 'POST',
                           headers: { 'Content-Type': 'application/json' },
-                          body: JSON.stringify({ seed_id: seed.seed_id, userid }),
+                          body: JSON.stringify({ seedid: seed.seedid }),
                         });
+                        // console.log(seed.seedid);
                         if (res.ok) {
-                          setUserSeeds(userSeeds.filter((s, i) => (s.seed_id || i) !== (seed.seed_id || idx)));
+                          setUserSeeds(userSeeds.filter((s, i) => (s.seedid || i) !== (seed.seedid || idx)));
                         } else {
                           alert('删除失败，请重试');
                         }
diff --git a/front/src/config.js b/front/src/config.js
new file mode 100644
index 0000000..d651f0d
--- /dev/null
+++ b/front/src/config.js
@@ -0,0 +1,2 @@
+// src/config.js
+export const API_BASE_URL = "http://10.126.59.25:8081";
diff --git a/src/main/java/entity/UserStar.java b/src/main/java/entity/UserStar.java
index c0bf225..c47ec24 100644
--- a/src/main/java/entity/UserStar.java
+++ b/src/main/java/entity/UserStar.java
@@ -6,38 +6,38 @@
 import javax.persistence.Id;
 import javax.persistence.IdClass;
 import javax.persistence.JoinColumn;
-import javax.persistence.OneToOne;
+import javax.persistence.ManyToOne;
 import javax.persistence.Table;
 
 @Entity
 @Table(name = "UserFavorite")
-@IdClass(UserStarId.class)  
+@IdClass(UserStarId.class)
 public class UserStar {
     @Id
     @Column(name = "user_id", length = 36, nullable = false)
-    public String userid;  
+    public String userid;
 
     @Id
     @Column(name = "seed_id", length = 64, nullable = false)
     public String seedid;
 
-    @OneToOne(optional = false)
+    @ManyToOne(optional = false)
     @JoinColumn(
         name = "user_id",
         referencedColumnName = "user_id",
-        foreignKey = @ForeignKey(name = "fk_user_id"),
+        foreignKey = @ForeignKey(name = "fk_uf_user"),
         insertable = false, updatable = false
     )
     public User user;
 
-    @OneToOne(optional = false)
+    @ManyToOne(optional = false)
     @JoinColumn(
         name = "seed_id",
         referencedColumnName = "seed_id",
-        foreignKey = @ForeignKey(name = "fk_seed_id"),
+        foreignKey = @ForeignKey(name = "fk_uf_seed"),
         insertable = false, updatable = false
     )
     public Seed seed;
 
-    public UserStar() {}  
+    public UserStar() {}
 }
\ No newline at end of file
diff --git a/src/main/java/entity/config.java b/src/main/java/entity/config.java
index 7ef6ab7..b4b7ea4 100644
--- a/src/main/java/entity/config.java
+++ b/src/main/java/entity/config.java
@@ -6,7 +6,6 @@
     public static final int BegVote=3;
     public static final int CheatTime=5;
     // 请根据实际环境修改为可达的地址
-    // public static final String SqlURL = "192.168.5.9:3306";
     public static final String SqlURL = "10.126.59.25:3306";
     public static final String Database = "pt_database_test";
     public static final String TestDatabase = "pt_database_test";
diff --git a/trackerServer b/trackerServer
new file mode 160000
index 0000000..bbe2ea1
--- /dev/null
+++ b/trackerServer
@@ -0,0 +1 @@
+Subproject commit bbe2ea1f3844c884654fc7f70b641e983c9dfe10
