主要修改: 1. 在LinkController中新增按状态批量删除链接的接口,允许用户根据指定状态批量删除自己创建的链接。 2. 在LinkStatusService中实现批量删除逻辑,确保用户只能删除自己的链接,并进行状态验证。 3. 更新LinkTaskMapper和对应的XML文件,增加查询和删除链接任务的相关方法。 技术细节: - 通过新增的批量删除功能,提升了用户对链接的管理能力,确保操作的安全性和有效性,同时优化了数据库操作的灵活性。
3.5 KiB
3.5 KiB
按狀態批量刪除鏈接接口說明
功能概述
新增了一個按鏈接狀態批量刪除鏈接的接口,允許用戶根據指定的狀態列表批量刪除自己的鏈接。
接口詳情
請求路徑
POST /api/link/batch-delete-by-status
請求參數
{
"statusList": ["EXPIRED", "REFUNDED"],
"confirmDelete": true
}
參數說明
statusList: 要刪除的鏈接狀態列表,支持的狀態值:NEW: 新建USING: 使用中LOGGED_IN: 已登錄COMPLETED: 已完成REFUNDED: 已退款EXPIRED: 已過期
confirmDelete: 是否確認刪除操作,必須設置為true才能執行刪除
驗證規則
- 狀態列表不能為空
- 單次最多指定10個狀態
- 必須確認刪除操作(
confirmDelete = true) - 只能刪除用戶自己創建的鏈接
響應格式
{
"successCount": 15,
"failedCount": 0,
"totalCount": 15,
"successCodeNos": ["ABC123", "DEF456", "..."],
"failedCodeNos": [],
"failedReasons": [],
"allSuccess": true
}
響應字段說明
successCount: 成功刪除的數量failedCount: 刪除失敗的數量totalCount: 總數量successCodeNos: 成功刪除的鏈接編號列表failedCodeNos: 刪除失敗的鏈接編號列表failedReasons: 刪除失敗的原因列表allSuccess: 是否全部成功
實現細節
新增文件
BatchDeleteByStatusRequest.java- 請求DTOtest_batch_delete_by_status.http- 接口測試文件docs/按狀態批量刪除鏈接接口說明.md- 接口說明文檔
修改文件
LinkTaskMapper.java- 添加數據庫查詢方法LinkTaskMapper.xml- 添加SQL映射LinkStatusService.java- 添加業務邏輯方法LinkController.java- 添加控制器接口
數據庫操作
findByStatusListAndAgentId: 查詢指定狀態和用戶的鏈接列表countByStatusListAndAgentId: 統計指定狀態和用戶的鏈接數量batchDeleteByStatusListAndAgentId: 批量刪除指定狀態和用戶的鏈接
安全考慮
權限控制
- 用戶只能刪除自己創建的鏈接
- 通過JWT token進行用戶身份驗證
- 通過
agentId過濾確保數據隔離
操作確認
- 必須設置
confirmDelete = true才能執行刪除操作 - 避免誤操作導致的數據丟失
參數驗證
- 驗證狀態值的有效性
- 限制單次操作的狀態數量(最多10個)
- 參數非空驗證
使用示例
1. 刪除過期鏈接
POST /api/link/batch-delete-by-status
Authorization: Bearer {token}
Content-Type: application/json
{
"statusList": ["EXPIRED"],
"confirmDelete": true
}
2. 清理已退款和已過期的鏈接
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- 服務器內部錯誤
日誌記錄
系統會記錄以下關鍵信息:
- 刪除操作的發起用戶
- 指定的狀態列表
- 實際刪除的鏈接數量
- 操作結果(成功/失敗)
- 失敗原因(如有)
這些日誌有助於問題排查和操作審計。