修复节点市场无法获取节点列表的问题
This commit is contained in:
parent
c26391d874
commit
0a54e1500e
@ -209,7 +209,7 @@ async def get_node_marketplace(
|
|||||||
):
|
):
|
||||||
"""获取节点市场数据,支持搜索、分页和排序"""
|
"""获取节点市场数据,支持搜索、分页和排序"""
|
||||||
try:
|
try:
|
||||||
url = f"{get_jingrow_cloud_url()}/api/action/jcloud.api.local_node.get_local_nodes"
|
url = f"{get_jingrow_cloud_url()}/api/action/jcloud.api.jlocal.get_local_node_list"
|
||||||
|
|
||||||
# 构建过滤条件
|
# 构建过滤条件
|
||||||
filters = {"public": 1}
|
filters = {"public": 1}
|
||||||
@ -217,78 +217,53 @@ async def get_node_marketplace(
|
|||||||
filters["title"] = ["like", f"%{search}%"]
|
filters["title"] = ["like", f"%{search}%"]
|
||||||
filters["node_type"] = ["like", f"%{search}%"]
|
filters["node_type"] = ["like", f"%{search}%"]
|
||||||
|
|
||||||
# 1. 先获取总数
|
# 1. 先获取总数(不分页)
|
||||||
total_params = {
|
total_params = {
|
||||||
'filters': json.dumps(filters, ensure_ascii=False),
|
'filters': json.dumps(filters, ensure_ascii=False),
|
||||||
'limit_start': 0,
|
'limit_start': 0,
|
||||||
'limit_page_length': 0
|
'limit_page_length': 0 # 不限制数量,获取所有数据来计算总数
|
||||||
}
|
}
|
||||||
|
|
||||||
headers = get_jingrow_cloud_api_headers()
|
headers = get_jingrow_cloud_api_headers()
|
||||||
|
total_response = requests.get(url, params=total_params, headers=headers, timeout=20)
|
||||||
|
|
||||||
try:
|
total_count = 0
|
||||||
total_response = requests.get(url, params=total_params, headers=headers, timeout=20)
|
if total_response.status_code == 200:
|
||||||
|
total_data = total_response.json()
|
||||||
|
total_count = len(total_data.get('message', []))
|
||||||
|
|
||||||
|
# 2. 获取分页数据
|
||||||
|
params = {
|
||||||
|
'filters': json.dumps(filters, ensure_ascii=False)
|
||||||
|
}
|
||||||
|
|
||||||
|
# 排序参数
|
||||||
|
if sort_by:
|
||||||
|
params['order_by'] = sort_by
|
||||||
|
|
||||||
|
# 分页参数
|
||||||
|
limit_start = (page - 1) * page_size
|
||||||
|
params['limit_start'] = limit_start
|
||||||
|
params['limit_page_length'] = page_size
|
||||||
|
|
||||||
|
response = requests.get(url, params=params, headers=headers, timeout=20)
|
||||||
|
|
||||||
|
if response.status_code == 200:
|
||||||
|
data = response.json()
|
||||||
|
nodes = data.get('message', [])
|
||||||
|
|
||||||
total_count = 0
|
# 返回分页格式的数据
|
||||||
if total_response.status_code == 200:
|
|
||||||
total_data = total_response.json()
|
|
||||||
total_count = len(total_data.get('message', []))
|
|
||||||
|
|
||||||
# 2. 获取分页数据
|
|
||||||
params = {
|
|
||||||
'filters': json.dumps(filters, ensure_ascii=False)
|
|
||||||
}
|
|
||||||
|
|
||||||
# 排序参数
|
|
||||||
if sort_by:
|
|
||||||
params['order_by'] = sort_by
|
|
||||||
|
|
||||||
# 分页参数
|
|
||||||
limit_start = (page - 1) * page_size
|
|
||||||
params['limit_start'] = limit_start
|
|
||||||
params['limit_page_length'] = page_size
|
|
||||||
|
|
||||||
response = requests.get(url, params=params, headers=headers, timeout=20)
|
|
||||||
|
|
||||||
if response.status_code == 200:
|
|
||||||
data = response.json()
|
|
||||||
nodes = data.get('message', [])
|
|
||||||
|
|
||||||
return {
|
|
||||||
"items": nodes,
|
|
||||||
"total": total_count,
|
|
||||||
"page": page,
|
|
||||||
"page_size": page_size
|
|
||||||
}
|
|
||||||
else:
|
|
||||||
# 如果API不存在或失败,返回空列表
|
|
||||||
logger.warning(f"获取节点市场数据失败: HTTP {response.status_code}, 返回空列表")
|
|
||||||
return {
|
|
||||||
"items": [],
|
|
||||||
"total": 0,
|
|
||||||
"page": page,
|
|
||||||
"page_size": page_size
|
|
||||||
}
|
|
||||||
except requests.exceptions.RequestException as e:
|
|
||||||
# 网络错误或API不存在时返回空列表
|
|
||||||
logger.warning(f"节点市场API请求失败: {str(e)}, 返回空列表")
|
|
||||||
return {
|
return {
|
||||||
"items": [],
|
"items": nodes,
|
||||||
"total": 0,
|
"total": total_count,
|
||||||
"page": page,
|
"page": page,
|
||||||
"page_size": page_size
|
"page_size": page_size
|
||||||
}
|
}
|
||||||
|
else:
|
||||||
|
raise HTTPException(status_code=response.status_code, detail="获取节点市场数据失败")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"获取节点市场数据异常: {str(e)}")
|
raise HTTPException(status_code=500, detail=f"获取节点市场数据失败: {str(e)}")
|
||||||
logger.error(f"Traceback: {traceback.format_exc()}")
|
|
||||||
# 即使出错也返回空列表,而不是抛出500错误
|
|
||||||
return {
|
|
||||||
"items": [],
|
|
||||||
"total": 0,
|
|
||||||
"page": page,
|
|
||||||
"page_size": page_size
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@router.get("/jingrow/check-node/{node_type}")
|
@router.get("/jingrow/check-node/{node_type}")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user