管理員發布新聞 → 寫入資料庫 → 用戶瀏覽
發現問題 → 登入後台 → 編輯修改新聞
cat_id, cat_name, parent_id, sort_order(支援無限級分類)news_id, cat_id, title, content, author_id, status, created_at, updated_atcat_id 外鍵關聯實現分類與內容分離,避免單表冗餘,提升維護性與擴展性需求:上級部門僅能授權直屬下級,不可越級。產品分類樹狀結構映射部門樹。
對策:RBAC 模型 + 資源樹。每個角色綁定節點權限,授權操作實為在節點上掛載角色。避免硬編碼層級判斷,改用遞歸查詢獲取用戶可管轄節點集合。
場景:多人同時編輯同一新聞,最後提交者覆蓋前者修改。
方案對比:
| 策略 | 實現 | 優點 | 缺點 |
|---|---|---|---|
| 悲觀鎖(Cookie/DB 旗標) | 進入編輯鎖定,退出釋放 | 強一致性,簡單直觀 | 用戶關閉瀏覽器不釋放鎖,需超時機制 |
| 樂觀鎖(版本號/時間戳) | 提交時比對 version,不匹配拒絕 | 無鎖等待,高併發友好 | 衝突時需用戶手動合併,體驗稍差 |
建議:結合兩者——編輯頁載入時記錄版本號(樂觀),同時在資料表設 locked_by, locked_at 字段(悲觀),超時自動釋放(如 30 分鐘)。
刪除分類時,其下新聞如何處理?
deleted_at 標記,前台不顯示,保留歷史LIMIT 分頁 + 索引覆蓋查詢(INDEX(cat_id, status, created_at))