add webuser API
Change-Id: I525da55355631991fd9554346b539c1c09593113
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('删除失败,请重试');
}