修改促销、优化页面布局

Change-Id: Iae813b5b6557efa7059fe6d94bc32e96c984e4ea
diff --git a/src/pages/SeedList/Recommend/PlaylistDetailPage.css b/src/pages/SeedList/Recommend/PlaylistDetailPage.css
index 78e7068..f9c09e6 100644
--- a/src/pages/SeedList/Recommend/PlaylistDetailPage.css
+++ b/src/pages/SeedList/Recommend/PlaylistDetailPage.css
@@ -12,7 +12,7 @@
   font-weight: 700;
 }
 
-.cover-image {
+.cover-img {
   width: 100%;
   max-height: 400px;
   object-fit: cover;
diff --git a/src/pages/SeedList/Recommend/PlaylistDetailPage.jsx b/src/pages/SeedList/Recommend/PlaylistDetailPage.jsx
index 07558d6..54380e1 100644
--- a/src/pages/SeedList/Recommend/PlaylistDetailPage.jsx
+++ b/src/pages/SeedList/Recommend/PlaylistDetailPage.jsx
@@ -72,7 +72,7 @@
       src={detail.coverUrl || '/default-cover.jpg'}
       alt={detail.title}
       onError={e => { e.target.src = '/default-cover.jpg'; }}
-      className="cover-image"
+      className="cover-img"
     />
     <p>{detail.description}</p>
 
diff --git a/src/pages/SeedList/Recommend/Recommend.jsx b/src/pages/SeedList/Recommend/Recommend.jsx
index f58c73d..2229bb1 100644
--- a/src/pages/SeedList/Recommend/Recommend.jsx
+++ b/src/pages/SeedList/Recommend/Recommend.jsx
@@ -7,6 +7,7 @@
 import CreatePlaylistModal from './CreatePlaylistModal';
 import { confirmAlert } from 'react-confirm-alert';
 import 'react-confirm-alert/src/react-confirm-alert.css';
+import AuthButton from '../../../components/AuthButton';
 
 const Recommend = () => {
   const { user } = useUser();
@@ -160,15 +161,18 @@
             />
             <div className="paid-title">{list.title}</div>
 
-            {user && user.role === 'admin' ? (
-              <div className="admin-actions">
-                <button onClick={() => handleDelete(list.id)}>删除</button>
-              </div>
-            ) : list.isPaid ? (
-              <button onClick={() => navigate(`/playlist/${list.id}`)}>详情</button>
-            ) : (
-              <button onClick={() => handlePurchase(list.id)}>购买</button>
-            )}
+          {user && user.role === 'admin' ? (
+            <div className="admin-actions">
+              <button onClick={() => handleDelete(list.id)}>删除</button>
+            </div>
+          ) : list.isPaid ? (
+            <button onClick={() => navigate(`/playlist/${list.id}`)}>详情</button>
+          ) : (
+            <AuthButton roles={['chocolate', 'ice-cream']} onClick={() => handlePurchase(list.id)}>
+              购买
+            </AuthButton>
+          )}
+
           </div>
         ))}
       </div>
diff --git a/src/pages/SeedList/SeedDetail/SeedDetail.jsx b/src/pages/SeedList/SeedDetail/SeedDetail.jsx
index 4ab9274..705368a 100644
--- a/src/pages/SeedList/SeedDetail/SeedDetail.jsx
+++ b/src/pages/SeedList/SeedDetail/SeedDetail.jsx
@@ -5,6 +5,7 @@
 import './SeedDetail.css';
 import { useUser } from '../../../context/UserContext';
 import SeedRating from './SeedRating';
+import AuthButton from '../../../components/AuthButton';
 
 const SeedDetail = () => {
   const params = useParams();
@@ -213,12 +214,16 @@
         </div>
 
         <div className="action-buttons">
-          <button className="btn" onClick={() => handleDownload(seed.id)}>下载</button>
-          <button className="btn-outline" onClick={handleCollect}>收藏</button>
-          {/* <button className="btn" onClick={handleCollect}>收藏</button> */}
+          <AuthButton roles={["cookie", "chocolate", "ice-cream"]} onClick={() => handleDownload(seed.id)}>
+            下载
+          </AuthButton>
+          <AuthButton roles={["cookie", "chocolate", "ice-cream"]} onClick={handleCollect}>
+            收藏
+          </AuthButton>
           <SeedRating seedId={seed.id} />
         </div>
 
+
         <hr className="divider" />
         <h3>评论区</h3>
         <div className="comments-section">
diff --git a/src/pages/SeedList/SeedDetail/SeedRating.css b/src/pages/SeedList/SeedDetail/SeedRating.css
index e40c055..f62131c 100644
--- a/src/pages/SeedList/SeedDetail/SeedRating.css
+++ b/src/pages/SeedList/SeedDetail/SeedRating.css
@@ -20,4 +20,8 @@
   margin-left: 10px;
   font-size: 14px;
   color: rgba(222, 91, 111, 0.982);
+} 
+.star.hover {
+  color: rgba(240, 184, 62, 0.916); /* 亮黄色 */
 }
+
diff --git a/src/pages/SeedList/SeedDetail/SeedRating.jsx b/src/pages/SeedList/SeedDetail/SeedRating.jsx
index 1841443..8e2d3f0 100644
--- a/src/pages/SeedList/SeedDetail/SeedRating.jsx
+++ b/src/pages/SeedList/SeedDetail/SeedRating.jsx
@@ -63,6 +63,7 @@
 import axios from 'axios';
 import './SeedRating.css';
 import { useUser } from '../../../context/UserContext';
+import AuthButton from '../../../components/AuthButton';
 
 const SeedRating = ({ seedId }) => {
   const { user } = useUser();
@@ -105,17 +106,28 @@
 
   return (
     <div className="seed-rating">
-      <span>评分:</span>
+      <span style={{color: '#333'}}>评分:</span>
       {[1, 2, 3, 4, 5].map((star) => (
-        <span
-          key={star}
-          className={`star ${star <= (hoverScore || score) ? 'active' : ''}`}
-          onMouseEnter={() => !submitted && setHoverScore(star)}
-          onMouseLeave={() => !submitted && setHoverScore(0)}
-          onClick={() => handleRating(star)}
-        >
-          ★
-        </span>
+      <AuthButton
+        key={star}
+        roles={["cookie", "chocolate", "ice-cream"]}
+        style={{
+          backgroundColor: 'inherit',
+          margin: 0,
+          // color: '#ccc',
+          padding: 0,
+          outline: 'none',
+          border: 'none',
+          cursor: 'pointer'
+        }}
+        className={`star ${(star <= (hoverScore || score) ? 'active' : '')} ${hoverScore >= star ? 'hover' : ''}`}
+        onMouseEnter={() => !submitted && setHoverScore(star)}
+        onMouseLeave={() => !submitted && setHoverScore(0)}
+        onClick={() => handleRating(star)}
+      >
+        ★
+      </AuthButton>
+
       ))}
       {submitted && <span className="thank-you">感谢您的评分!</span>}
     </div>
diff --git a/src/pages/SeedList/SeedList.jsx b/src/pages/SeedList/SeedList.jsx
index 263038b..45b9f8c 100644
--- a/src/pages/SeedList/SeedList.jsx
+++ b/src/pages/SeedList/SeedList.jsx
@@ -169,8 +169,8 @@
 
             <div className="tag-filters">
                 {TAGS.map(tag => (
-                    <AuthButton
-                        roles={["test"]}
+                     <button
+                        // roles={["test"]}
                         key={tag}
                         className={`tag-button ${activeTab === tag ? 'active-tag' : ''}`}
                         onClick={() => {
@@ -180,7 +180,7 @@
                         }}
                     >
                         {tag}
-                    </AuthButton>
+                    </button>
                 ))}
             </div>
 
@@ -257,9 +257,10 @@
                                             </div>
                                             <div className="seed-item-size">{seed.size || '未知'}</div>
                                             <div className="seed-item-upload-time">{seed.upload_time?.split('T')[0] || '未知'}</div>
-                                            <div className="seed-item-downloads">{seed.downloads ?? 0} 次下载</div>
+                                            <div className="seed-item-downloads">{seed.leechers ?? 0} 次下载</div>
                                             <div className="seed-item-actions" onClick={e => e.stopPropagation()}>
-                                                <button
+                                                <AuthButton
+                                                roles={["cookie", "chocolate", "ice-cream"]}
                                                     className="btn-primary"
                                                     onClick={e => {
                                                         e.preventDefault();
@@ -285,8 +286,9 @@
                                                     }}
                                                 >
                                                     下载
-                                                </button>
-                                                <button
+                                                </AuthButton>
+                                                <AuthButton
+                                                    roles={["cookie", "chocolate", "ice-cream"]}
                                                     className="btn-outline"
                                                     onClick={async (e) => {
                                                         e.preventDefault();
@@ -314,7 +316,7 @@
                                                     }}
                                                 >
                                                     收藏
-                                                </button>
+                                                </AuthButton>
                                             </div>
                                         </div>
                                     </Link>