106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
import logging
|
|
from typing import Dict, Any, List, Optional
|
|
|
|
from app.utils.universal_api_manager import universal_api
|
|
from app.schemas.third_party_api import (
|
|
APIProviderInfo,
|
|
APIEndpointInfo,
|
|
APIResponse
|
|
)
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
class ThirdPartyAPIController:
|
|
"""第三方API控制器"""
|
|
|
|
def __init__(self):
|
|
self.api_manager = universal_api
|
|
|
|
async def make_api_request(
|
|
self,
|
|
provider: str,
|
|
endpoint: str,
|
|
params: Dict[str, Any] = None,
|
|
timeout: int = 30
|
|
) -> APIResponse:
|
|
"""通用API请求方法"""
|
|
try:
|
|
result = self.api_manager.make_request(
|
|
provider=provider,
|
|
endpoint=endpoint,
|
|
params=params or {},
|
|
timeout=timeout
|
|
)
|
|
|
|
return APIResponse(
|
|
success=True,
|
|
data=result,
|
|
message="请求成功",
|
|
provider=provider,
|
|
endpoint=endpoint
|
|
)
|
|
except Exception as e:
|
|
logger.error(f"API请求失败: {e}")
|
|
return APIResponse(
|
|
success=False,
|
|
data={},
|
|
message=f"请求失败: {str(e)}",
|
|
provider=provider,
|
|
endpoint=endpoint
|
|
)
|
|
|
|
# 站长之家API便捷方法
|
|
async def query_copyright_software(self, company_name: str, chinaz_ver: str = "1") -> APIResponse:
|
|
"""查询企业软件著作权"""
|
|
return await self.make_api_request(
|
|
provider="chinaz",
|
|
endpoint="copyright_software",
|
|
params={
|
|
"entName": company_name,
|
|
"pageNo": 1,
|
|
"range": 100,
|
|
"ChinazVer": chinaz_ver
|
|
}
|
|
)
|
|
|
|
async def query_patent_info(self, company_name: str, chinaz_ver: str = "1") -> APIResponse:
|
|
"""查询企业专利信息"""
|
|
return await self.make_api_request(
|
|
provider="chinaz",
|
|
endpoint="patent",
|
|
params={
|
|
"searchKey": company_name,
|
|
"pageNo": 1,
|
|
"range": 100,
|
|
"searchType": "0",
|
|
"ChinazVer": chinaz_ver
|
|
}
|
|
)
|
|
|
|
async def query_judicial_data(self, company_name: str, chinaz_ver: str = "1") -> APIResponse:
|
|
"""查询司法综合数据"""
|
|
return await self.make_api_request(
|
|
provider="chinaz",
|
|
endpoint="judgement",
|
|
params={
|
|
"q": company_name,
|
|
"pageNo": 1,
|
|
"ChinazVer": chinaz_ver
|
|
}
|
|
)
|
|
|
|
# 小红书API便捷方法
|
|
async def get_xiaohongshu_note(self, note_id: str) -> APIResponse:
|
|
"""获取小红书笔记详情"""
|
|
params = {"noteId": note_id}
|
|
|
|
return await self.make_api_request(
|
|
provider="justoneapi",
|
|
endpoint="xiaohongshu_note_detail",
|
|
params=params
|
|
)
|
|
|
|
|
|
# 创建全局控制器实例
|
|
third_party_api_controller = ThirdPartyAPIController() |