重构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 }> => {
|
export const deleteRecords = async (pagetype: string, names: string[]): Promise<{ success: boolean; message?: string }> => {
|
||||||
try {
|
try {
|
||||||
const results = []
|
if (!names || names.length === 0) {
|
||||||
const failed = []
|
return { success: false, message: '未提供要删除的记录' }
|
||||||
|
}
|
||||||
|
|
||||||
// 循环调用单个删除接口
|
const response = await axios.post(
|
||||||
for (const name of names) {
|
`/jingrow/bulk-delete`,
|
||||||
try {
|
|
||||||
await axios.post(
|
|
||||||
`/api/action/jingrow.client.delete`,
|
|
||||||
{
|
{
|
||||||
pagetype: pagetype,
|
pagetype: pagetype,
|
||||||
name: name
|
names: names
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
headers: get_session_api_headers(),
|
headers: get_session_api_headers(),
|
||||||
withCredentials: true
|
withCredentials: true,
|
||||||
|
validateStatus: (status) => status === 200 || status === 207 // 允许207状态码
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
results.push(name)
|
|
||||||
} catch (error: any) {
|
|
||||||
failed.push(name)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (failed.length === 0) {
|
const result = response.data
|
||||||
return { success: true, message: `成功删除 ${results.length} 条记录` }
|
// 207 状态码表示部分成功
|
||||||
} else if (results.length > 0) {
|
const isPartialSuccess = response.status === 207
|
||||||
return { success: false, message: `部分删除成功:${results.length} 条成功,${failed.length} 条失败` }
|
|
||||||
} else {
|
return {
|
||||||
return { success: false, message: '删除失败' }
|
success: !isPartialSuccess,
|
||||||
|
message: result?.message || (isPartialSuccess ? '部分删除成功' : '删除完成')
|
||||||
}
|
}
|
||||||
} catch (error: any) {
|
} 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:
|
except Exception as e:
|
||||||
raise HTTPException(status_code=500, detail=str(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]):
|
async def batch_delete_records(request: Request, data: Dict[str, Any]):
|
||||||
"""批量删除记录"""
|
"""批量删除记录"""
|
||||||
try:
|
|
||||||
pagetype = data.get('pagetype')
|
pagetype = data.get('pagetype')
|
||||||
name = data.get('name')
|
name = data.get('name')
|
||||||
|
names = data.get('names', [])
|
||||||
|
|
||||||
if not pagetype or not name:
|
if not pagetype:
|
||||||
raise HTTPException(status_code=400, detail="缺少必要参数")
|
raise HTTPException(status_code=400, detail="缺少必要参数 pagetype")
|
||||||
|
|
||||||
return await delete_record_api(request, pagetype, name)
|
# 统一处理:如果提供了单个 name,转换为列表
|
||||||
|
if name and not names:
|
||||||
|
names = [name]
|
||||||
|
|
||||||
except Exception as e:
|
if not names:
|
||||||
raise HTTPException(status_code=500, detail=str(e))
|
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")
|
@router.post("/api/action/jingrow.client.get_count")
|
||||||
async def get_record_count(request: Request, pagetype: str):
|
async def get_record_count(request: Request, pagetype: str):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user