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

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

3.5 KiB
Raw Blame History

按狀態批量刪除鏈接接口說明

功能概述

新增了一個按鏈接狀態批量刪除鏈接的接口,允許用戶根據指定的狀態列表批量刪除自己的鏈接。

接口詳情

請求路徑

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: 是否全部成功

實現細節

新增文件

  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. 刪除過期鏈接

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 - 服務器內部錯誤

日誌記錄

系統會記錄以下關鍵信息:

  • 刪除操作的發起用戶
  • 指定的狀態列表
  • 實際刪除的鏈接數量
  • 操作結果(成功/失敗)
  • 失敗原因(如有)

這些日誌有助於問題排查和操作審計。