用户等级

Change-Id: Id7f963f2e6a048caf05570b097755fa5a8ea37d1
diff --git a/src/pages/Forum/promotion-part/Promotion.jsx b/src/pages/Forum/promotion-part/Promotion.jsx
index fd79cec..36d6319 100644
--- a/src/pages/Forum/promotion-part/Promotion.jsx
+++ b/src/pages/Forum/promotion-part/Promotion.jsx
@@ -1,148 +1,3 @@
-// import React, { useEffect, useState, useRef } from 'react';
-// import './Promotion.css';
-
-
-
-// const Promotion = () => {
-//   const [promotions, setPromotions] = useState([]);
-//   const [coldResources, setColdResources] = useState([]);
-//   const [loading, setLoading] = useState(true);
-
-//   // 轮播索引
-//   const [promoIndex, setPromoIndex] = useState(0);
-//   const [coldIndex, setColdIndex] = useState(0);
-
-//   // 计时器引用,用于清理
-//   const promoTimerRef = useRef(null);
-//   const coldTimerRef = useRef(null);
-
-//   useEffect(() => {
-//     fetchData();
-//   }, []);
-
-//   // 自动轮播:促销活动
-//   useEffect(() => {
-//     if (promotions.length === 0) return;
-//     // 清理旧的计时器
-//     clearInterval(promoTimerRef.current);
-//     promoTimerRef.current = setInterval(() => {
-//       setPromoIndex(prev => (prev + 1) % promotions.length);
-//     }, 5000);
-//     return () => clearInterval(promoTimerRef.current);
-//   }, [promotions]);
-
-//   // 自动轮播:冷门资源
-//   useEffect(() => {
-//     if (coldResources.length === 0) return;
-//     clearInterval(coldTimerRef.current);
-//     coldTimerRef.current = setInterval(() => {
-//       setColdIndex(prev => (prev + 1) % coldResources.length);
-//     }, 5000);
-//     return () => clearInterval(coldTimerRef.current);
-//   }, [coldResources]);
-
-//   const fetchData = async () => {
-//     try {
-//       const promoResponse = await fetch(`/echo/promotions/active`);
-//       const promoData = await promoResponse.json();
-//       setPromotions(promoData);
-
-//       const coldResponse = await fetch(`/echo/resources/cold`);
-//       const coldData = await coldResponse.json();
-//       setColdResources(coldData);
-//     } catch (error) {
-//       console.error('获取数据失败:', error);
-//     } finally {
-//       setLoading(false);
-//     }
-//   };
-
-//   if (loading) {
-//     return <div className="promotion-container">加载中...</div>;
-//   }
-
-//   // 手动切换
-//   const prevPromo = () => setPromoIndex((promoIndex - 1 + promotions.length) % promotions.length);
-//   const nextPromo = () => setPromoIndex((promoIndex + 1) % promotions.length);
-//   const prevCold = () => setColdIndex((coldIndex - 1 + coldResources.length) % coldResources.length);
-//   const nextCold = () => setColdIndex((coldIndex + 1) % coldResources.length);
-
-//   const currentPromo = promotions[promoIndex];
-//   const currentCold = coldResources[coldIndex];
-
-//   return (
-//     <div className="promotion-container carousel-container">
-//       {/* 促销活动轮播 */}
-//       <section className="carousel-section">
-//         <h2>当前促销活动</h2>
-//         {promotions.length === 0 ? (
-//           <div className="empty-state">暂无促销活动</div>
-//         ) : (
-//           <div
-//             className="carousel"
-//             onMouseEnter={() => clearInterval(promoTimerRef.current)}
-//             onMouseLeave={() => {
-//               promoTimerRef.current = setInterval(() => {
-//                 setPromoIndex(prev => (prev + 1) % promotions.length);
-//               }, 3000);
-//             }}
-//           >
-//             <button className="arrow left" onClick={prevPromo}>&lt;</button>
-//             <div className="slide">
-//               <div><strong>种子类型:</strong>{currentPromo.category}</div>
-//               <div><strong>促销时间:</strong>
-//                 {new Date(currentPromo.promotion_start_time).toLocaleString()} ~{' '}
-//                 {new Date(currentPromo.promotion_end_time).toLocaleString()}
-//               </div>
-//               <div><strong>下载折扣:</strong>{currentPromo.download_discount ?? '无'}</div>
-//               <div><strong>上传奖励:</strong>{currentPromo.upload_reward ?? '无'}</div>
-//               {currentPromo.description && (
-//                 <div><strong>详细描述:</strong>{currentPromo.description}</div>
-//               )}
-//             </div>
-//             <button className="arrow right" onClick={nextPromo}>&gt;</button>
-//           </div>
-//         )}
-//       </section>
-
-//       {/* 冷门资源轮播 */}
-//       <section className="carousel-section">
-//         <h2>冷门资源推荐</h2>
-//         {coldResources.length === 0 ? (
-//           <div className="empty-state">暂无冷门资源推荐</div>
-//         ) : (
-//           <div
-//             className="carousel"
-//             onMouseEnter={() => clearInterval(coldTimerRef.current)}
-//             onMouseLeave={() => {
-//               coldTimerRef.current = setInterval(() => {
-//                 setColdIndex(prev => (prev + 1) % coldResources.length);
-//               }, 3000);
-//             }}
-//           >
-//             <button className="arrow left" onClick={prevCold}>&lt;</button>
-//             <div className="slide cold-slide">
-//               <img src={currentCold.poster} alt={currentCold.title} className="resource-poster" />
-//               <div className="resource-info">
-//                 <div><strong>标题:</strong>{currentCold.title}</div>
-//                 <div><strong>下载量:</strong>{currentCold.download_count}  |  <strong>种子数:</strong>{currentCold.seed_count}</div>
-//                 <div><strong>激励:</strong>
-//                   {currentCold.incentives?.download_exempt && <span className="incentive-badge">免下载量</span>}
-//                   {currentCold.incentives?.extra_seed_bonus && <span className="incentive-badge">做种加成</span>}
-//                   {!(currentCold.incentives?.download_exempt || currentCold.incentives?.extra_seed_bonus) && '无'}
-//                 </div>
-//               </div>
-//             </div>
-//             <button className="arrow right" onClick={nextCold}>&gt;</button>
-//           </div>
-//         )}
-//       </section>
-//     </div>
-//   );
-// };
-
-// export default Promotion;
-
 import React, { useEffect, useState, useRef } from 'react';
 import './Promotion.css';
 
@@ -181,10 +36,13 @@
 
   const fetchData = async () => {
     try {
-      const promoResponse = await fetch(`/echo/promotions/active`);
-      const promoData = await promoResponse.json();
+      // ✅ 获取促销活动列表(新接口)
+      const promoResponse = await fetch(`seeds/promotions`);
+      const promoJson = await promoResponse.json();
+      const promoData = Array.isArray(promoJson?.result) ? promoJson.result : [];
       setPromotions(promoData);
 
+      // 冷门资源(接口保持不变,若已更换请提供文档)
       const coldResponse = await fetch(`/echo/resources/cold`);
       const coldData = await coldResponse.json();
       setColdResources(coldData);
@@ -226,16 +84,16 @@
           >
             <button className="arrow left" onClick={prevPromo}>&lt;</button>
             <div className="slide">
-              <div><strong>种子类型:</strong>{currentPromo?.category ?? '未知'}</div>
+              <div><strong>促销名称:</strong>{currentPromo?.name ?? '未知'}</div>
               <div><strong>促销时间:</strong>
-                {currentPromo?.promotion_start_time && currentPromo?.promotion_end_time
-                  ? `${new Date(currentPromo.promotion_start_time).toLocaleString()} ~ ${new Date(currentPromo.promotion_end_time).toLocaleString()}`
+                {currentPromo?.pStartTime && currentPromo?.pEndTime
+                  ? `${new Date(currentPromo.pStartTime).toLocaleString()} ~ ${new Date(currentPromo.pEndTime).toLocaleString()}`
                   : '未知'}
               </div>
-              <div><strong>下载折扣:</strong>{currentPromo?.download_discount ?? '无'}</div>
-              <div><strong>上传奖励:</strong>{currentPromo?.upload_reward ?? '无'}</div>
+              <div><strong>上传奖励系数:</strong>{currentPromo?.uploadCoeff ?? '无'}</div>
+              <div><strong>下载折扣系数:</strong>{currentPromo?.downloadCoeff ?? '无'}</div>
               {currentPromo?.description && (
-                <div><strong>详细描述:</strong>{currentPromo.description}</div>
+                <div><strong>描述:</strong>{currentPromo.description}</div>
               )}
             </div>
             <button className="arrow right" onClick={nextPromo}>&gt;</button>
@@ -263,7 +121,7 @@
               <img src={currentCold.poster} alt={currentCold.title} className="resource-poster" />
               <div className="resource-info">
                 <div><strong>标题:</strong>{currentCold.title}</div>
-                <div><strong>下载量:</strong>{currentCold.download_count ?? 0}  |  <strong>种子数:</strong>{currentCold.seed_count ?? 0}</div>
+                <div><strong>下载量:</strong>{currentCold.download_count ?? 0} | <strong>种子数:</strong>{currentCold.seed_count ?? 0}</div>
                 <div><strong>激励:</strong>
                   {currentCold.incentives?.download_exempt && <span className="incentive-badge">免下载量</span>}
                   {currentCold.incentives?.extra_seed_bonus && <span className="incentive-badge">做种加成</span>}