blob: 8270145968043b777b0ba9c6cb77a4a033eecd51 [file] [log] [blame]
22301009afbcf4b2025-04-10 16:08:39 +08001import React, { useEffect, useState } from 'react';
Krishya3dc6b352025-06-07 19:02:25 +08002import axios from 'axios';
22301009ecc1c1c2025-04-09 21:56:23 +08003import './Recommend.css';
Krishya3dc6b352025-06-07 19:02:25 +08004import { useUser } from '../../../context/UserContext';
22301009ecc1c1c2025-04-09 21:56:23 +08005
22301009ecc1c1c2025-04-09 21:56:23 +08006const Recommend = () => {
Krishya3dc6b352025-06-07 19:02:25 +08007 const { user } = useUser();
8 const [popularSeeds, setPopularSeeds] = useState([]);
9 const [recommendedSeeds, setRecommendedSeeds] = useState([]);
22301009afbcf4b2025-04-10 16:08:39 +080010
11 useEffect(() => {
Krishya3dc6b352025-06-07 19:02:25 +080012 // 获取热门资源
13 axios
14 .get('/echo/recommendation/popular', { params: { limit: 16 } })
15 .then((res) => setPopularSeeds(res.data))
16 .catch((err) => console.error('获取热门资源失败', err));
22301009afbcf4b2025-04-10 16:08:39 +080017 }, []);
18
Krishya3dc6b352025-06-07 19:02:25 +080019 useEffect(() => {
20 // 获取个性化推荐
21 if (user && user.userId) {
22 axios
23 .get(`/echo/recommendation/seeds/${user.userId}`)
24 .then((res) => setRecommendedSeeds(res.data))
25 .catch((err) => console.error('获取个性化推荐失败', err));
26 }
27 }, [user]);
28
29 const renderSeedCard = (seed) => (
30 <div className="seed-card" key={seed.id}>
31 <img src={seed.coverUrl || '/default-cover.jpg'} alt={seed.title} />
32 <div className="title">{seed.title}</div>
33 </div>
34 );
35
22301009ecc1c1c2025-04-09 21:56:23 +080036 return (
Krishya3dc6b352025-06-07 19:02:25 +080037 <div className="recommendation-page">
38 <h2>🎬 正在热映</h2>
39 <div className="seed-list">{popularSeeds.map(renderSeedCard)}</div>
40
41 <h2>🎯 个性化推荐</h2>
42 {user ? (
43 <div className="seed-list">{recommendedSeeds.map(renderSeedCard)}</div>
22301009afbcf4b2025-04-10 16:08:39 +080044 ) : (
Krishya3dc6b352025-06-07 19:02:25 +080045 <div className="login-reminder">请登录以获取个性化推荐</div>
22301009afbcf4b2025-04-10 16:08:39 +080046 )}
22301009ecc1c1c2025-04-09 21:56:23 +080047 </div>
48 );
49};
50
51export default Recommend;