重构deleteRecords
This commit is contained in:
parent
9c1b235bdc
commit
27b2dead71
@ -6,38 +6,33 @@ import { get_session_api_headers } from './auth'
|
||||
// 删除记录的通用函数
|
||||
export const deleteRecords = async (pagetype: string, names: string[]): Promise<{ success: boolean; message?: string }> => {
|
||||
try {
|
||||
const results = []
|
||||
const failed = []
|
||||
|
||||
// 循环调用单个删除接口
|
||||
for (const name of names) {
|
||||
try {
|
||||
await axios.post(
|
||||
`/api/action/jingrow.client.delete`,
|
||||
{
|
||||
pagetype: pagetype,
|
||||
name: name
|
||||
},
|
||||
{
|
||||
headers: get_session_api_headers(),
|
||||
withCredentials: true
|
||||
}
|
||||
)
|
||||
results.push(name)
|
||||
} catch (error: any) {
|
||||
failed.push(name)
|
||||
}
|
||||
if (!names || names.length === 0) {
|
||||
return { success: false, message: '未提供要删除的记录' }
|
||||
}
|
||||
|
||||
if (failed.length === 0) {
|
||||
return { success: true, message: `成功删除 ${results.length} 条记录` }
|
||||
} else if (results.length > 0) {
|
||||
return { success: false, message: `部分删除成功:${results.length} 条成功,${failed.length} 条失败` }
|
||||
} else {
|
||||
return { success: false, message: '删除失败' }
|
||||
const response = await axios.post(
|
||||
`/jingrow/bulk-delete`,
|
||||
{
|
||||
pagetype: pagetype,
|
||||
names: names
|
||||
},
|
||||
{
|
||||
headers: get_session_api_headers(),
|
||||
withCredentials: true,
|
||||
validateStatus: (status) => status === 200 || status === 207 // 允许207状态码
|
||||
}
|
||||
)
|
||||
|
||||
const result = response.data
|
||||
// 207 状态码表示部分成功
|
||||
const isPartialSuccess = response.status === 207
|
||||
|
||||
return {
|
||||
success: !isPartialSuccess,
|
||||
message: result?.message || (isPartialSuccess ? '部分删除成功' : '删除完成')
|
||||
}
|
||||
} catch (error: any) {
|
||||
return { success: false, message: error.message || '删除失败' }
|
||||
return { success: false, message: error.response?.data?.detail || error.message || '删除失败' }
|
||||
}
|
||||
}
|
||||
|
||||
@ -386,3 +381,4 @@ export const uploadFileToJingrow = async (
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -132,20 +132,54 @@ async def delete_record_api(request: Request, pagetype: str, name: str):
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
|
||||
@router.post("/api/action/jingrow.client.delete")
|
||||
@router.post("/jingrow/bulk-delete")
|
||||
async def batch_delete_records(request: Request, data: Dict[str, Any]):
|
||||
"""批量删除记录"""
|
||||
try:
|
||||
pagetype = data.get('pagetype')
|
||||
name = data.get('name')
|
||||
|
||||
if not pagetype or not name:
|
||||
raise HTTPException(status_code=400, detail="缺少必要参数")
|
||||
|
||||
return await delete_record_api(request, pagetype, name)
|
||||
|
||||
except Exception as e:
|
||||
raise HTTPException(status_code=500, detail=str(e))
|
||||
pagetype = data.get('pagetype')
|
||||
name = data.get('name')
|
||||
names = data.get('names', [])
|
||||
|
||||
if not pagetype:
|
||||
raise HTTPException(status_code=400, detail="缺少必要参数 pagetype")
|
||||
|
||||
# 统一处理:如果提供了单个 name,转换为列表
|
||||
if name and not names:
|
||||
names = [name]
|
||||
|
||||
if not names:
|
||||
raise HTTPException(status_code=400, detail="缺少必要参数 name 或 names")
|
||||
|
||||
# 批量删除
|
||||
success_count = 0
|
||||
failed_names = []
|
||||
|
||||
for name_item in names:
|
||||
try:
|
||||
if jingrow.delete_pg(pagetype, name_item):
|
||||
success_count += 1
|
||||
else:
|
||||
failed_names.append(name_item)
|
||||
except Exception:
|
||||
failed_names.append(name_item)
|
||||
|
||||
failed_count = len(failed_names)
|
||||
|
||||
# 根据结果返回响应
|
||||
if failed_count == 0:
|
||||
return JSONResponse(content={
|
||||
"message": f"成功删除 {success_count} 条记录",
|
||||
"success_count": success_count,
|
||||
"failed_count": 0
|
||||
})
|
||||
elif success_count > 0:
|
||||
return JSONResponse(content={
|
||||
"message": f"部分删除成功:{success_count} 条成功,{failed_count} 条失败",
|
||||
"success_count": success_count,
|
||||
"failed_count": failed_count,
|
||||
"failed_names": failed_names
|
||||
}, status_code=207) # 207 Multi-Status
|
||||
else:
|
||||
raise HTTPException(status_code=400, detail="所有记录删除失败")
|
||||
|
||||
@router.post("/api/action/jingrow.client.get_count")
|
||||
async def get_record_count(request: Request, pagetype: str):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user