Files
game_server/docs/按狀態批量刪除鏈接接口說明.md
zyh 0801394999 feat: 新增按状态批量删除链接功能
主要修改:
1. 在LinkController中新增按状态批量删除链接的接口,允许用户根据指定状态批量删除自己创建的链接。
2. 在LinkStatusService中实现批量删除逻辑,确保用户只能删除自己的链接,并进行状态验证。
3. 更新LinkTaskMapper和对应的XML文件,增加查询和删除链接任务的相关方法。

技术细节:
- 通过新增的批量删除功能,提升了用户对链接的管理能力,确保操作的安全性和有效性,同时优化了数据库操作的灵活性。
2025-08-28 12:41:44 +08:00

141 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 按狀態批量刪除鏈接接口說明
## 功能概述
新增了一個按鏈接狀態批量刪除鏈接的接口,允許用戶根據指定的狀態列表批量刪除自己的鏈接。
## 接口詳情
### 請求路徑
`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` - 服務器內部錯誤
## 日誌記錄
系統會記錄以下關鍵信息:
- 刪除操作的發起用戶
- 指定的狀態列表
- 實際刪除的鏈接數量
- 操作結果(成功/失敗)
- 失敗原因(如有)
這些日誌有助於問題排查和操作審計。