# 按狀態批量刪除鏈接接口說明 ## 功能概述 新增了一個按鏈接狀態批量刪除鏈接的接口,允許用戶根據指定的狀態列表批量刪除自己的鏈接。 ## 接口詳情 ### 請求路徑 `POST /api/link/batch-delete-by-status` ### 請求參數 ```json { "statusList": ["EXPIRED", "REFUNDED"], "confirmDelete": true } ``` #### 參數說明 - `statusList`: 要刪除的鏈接狀態列表,支持的狀態值: - `NEW`: 新建 - `USING`: 使用中 - `LOGGED_IN`: 已登錄 - `COMPLETED`: 已完成 - `REFUNDED`: 已退款 - `EXPIRED`: 已過期 - `confirmDelete`: 是否確認刪除操作,必須設置為 `true` 才能執行刪除 #### 驗證規則 - 狀態列表不能為空 - 單次最多指定10個狀態 - 必須確認刪除操作(`confirmDelete = true`) - 只能刪除用戶自己創建的鏈接 ### 響應格式 ```json { "successCount": 15, "failedCount": 0, "totalCount": 15, "successCodeNos": ["ABC123", "DEF456", "..."], "failedCodeNos": [], "failedReasons": [], "allSuccess": true } ``` #### 響應字段說明 - `successCount`: 成功刪除的數量 - `failedCount`: 刪除失敗的數量 - `totalCount`: 總數量 - `successCodeNos`: 成功刪除的鏈接編號列表 - `failedCodeNos`: 刪除失敗的鏈接編號列表 - `failedReasons`: 刪除失敗的原因列表 - `allSuccess`: 是否全部成功 ## 實現細節 ### 新增文件 1. `BatchDeleteByStatusRequest.java` - 請求DTO 2. `test_batch_delete_by_status.http` - 接口測試文件 3. `docs/按狀態批量刪除鏈接接口說明.md` - 接口說明文檔 ### 修改文件 1. `LinkTaskMapper.java` - 添加數據庫查詢方法 2. `LinkTaskMapper.xml` - 添加SQL映射 3. `LinkStatusService.java` - 添加業務邏輯方法 4. `LinkController.java` - 添加控制器接口 ### 數據庫操作 - `findByStatusListAndAgentId`: 查詢指定狀態和用戶的鏈接列表 - `countByStatusListAndAgentId`: 統計指定狀態和用戶的鏈接數量 - `batchDeleteByStatusListAndAgentId`: 批量刪除指定狀態和用戶的鏈接 ## 安全考慮 ### 權限控制 - 用戶只能刪除自己創建的鏈接 - 通過JWT token進行用戶身份驗證 - 通過 `agentId` 過濾確保數據隔離 ### 操作確認 - 必須設置 `confirmDelete = true` 才能執行刪除操作 - 避免誤操作導致的數據丟失 ### 參數驗證 - 驗證狀態值的有效性 - 限制單次操作的狀態數量(最多10個) - 參數非空驗證 ## 使用示例 ### 1. 刪除過期鏈接 ```http POST /api/link/batch-delete-by-status Authorization: Bearer {token} Content-Type: application/json { "statusList": ["EXPIRED"], "confirmDelete": true } ``` ### 2. 清理已退款和已過期的鏈接 ```http POST /api/link/batch-delete-by-status Authorization: Bearer {token} Content-Type: application/json { "statusList": ["EXPIRED", "REFUNDED"], "confirmDelete": true } ``` ## 錯誤處理 ### 常見錯誤 - `用戶未認證` - JWT token無效或過期 - `必須確認刪除操作` - confirmDelete不為true - `要删除的状态列表不能为空` - statusList為空 - `无效的状态值` - 狀態值不在允許範圍內 - `单次最多只能指定10个状态` - 狀態數量超過限制 ### 響應狀態碼 - `200` - 操作成功 - `400` - 請求參數錯誤 - `401` - 用戶未認證 - `500` - 服務器內部錯誤 ## 日誌記錄 系統會記錄以下關鍵信息: - 刪除操作的發起用戶 - 指定的狀態列表 - 實際刪除的鏈接數量 - 操作結果(成功/失敗) - 失敗原因(如有) 這些日誌有助於問題排查和操作審計。