Files
2026-05-25 09:50:01 +08:00

100 lines
5.1 KiB
Python

"""企查查控制器。"""
from typing import Any
from fastapi import Depends, Query
from fastapi.responses import JSONResponse
from fastapi_common.fastapi_common_security.security import verify_access_token
from fastapi_common.fastapi_common_web.controller import BaseController
from fastapi_common.fastapi_common_web.domain.responses import Result
from fastapi_modules.fastapi_leaudit.domian.Dto.qichachaDto import QichachaBatchQueryDTO, QichachaCompanyQueryDTO
from fastapi_modules.fastapi_leaudit.domian.vo.qichachaVo import (
QichachaBatchQueryVO,
QichachaCompanyQueryVO,
QichachaRecordStatusVO,
)
from fastapi_modules.fastapi_leaudit.services.impl.permissionServiceImpl import PermissionServiceImpl
from fastapi_modules.fastapi_leaudit.services.impl.qichachaServiceImpl import QichachaServiceImpl
from fastapi_modules.fastapi_leaudit.services.permissionService import IPermissionService
from fastapi_modules.fastapi_leaudit.services.qichachaService import IQichachaService
class QichachaController(BaseController):
"""企查查控制器。"""
def __init__(self):
super().__init__(prefix="/v2/qichacha", tags=["企查查"])
self.QichachaService: IQichachaService = QichachaServiceImpl()
self.PermissionService: IPermissionService = PermissionServiceImpl()
@self.router.post("/company", response_model=Result[QichachaCompanyQueryVO])
async def QueryCompany(Body: QichachaCompanyQueryDTO, payload: dict[str, Any] = Depends(verify_access_token)):
"""查询企业完整信息。"""
if not await self.PermissionService.CheckPermission(int(payload["user_id"]), "qichacha:company:query"):
return JSONResponse(
status_code=403,
content={"code": 403, "message": "当前用户没有查询企业信息权限", "data": None},
)
data = await self.QichachaService.QueryCompany(
Keyword=Body.keyword,
ForceRefresh=Body.forceRefresh,
)
return Result.success(data=data)
@self.router.post("/enterprise", response_model=Result[QichachaCompanyQueryVO])
async def QueryEnterprise(Body: QichachaCompanyQueryDTO, payload: dict[str, Any] = Depends(verify_access_token)):
"""仅查询企业工商信息。"""
if not await self.PermissionService.CheckPermission(int(payload["user_id"]), "qichacha:company:query"):
return JSONResponse(
status_code=403,
content={"code": 403, "message": "当前用户没有查询企业信息权限", "data": None},
)
data = await self.QichachaService.QueryEnterpriseOnly(
Keyword=Body.keyword,
ForceRefresh=Body.forceRefresh,
)
return Result.success(data=data)
@self.router.post("/dishonesty", response_model=Result[QichachaCompanyQueryVO])
async def QueryDishonesty(Body: QichachaCompanyQueryDTO, payload: dict[str, Any] = Depends(verify_access_token)):
"""仅查询企业失信信息。"""
if not await self.PermissionService.CheckPermission(int(payload["user_id"]), "qichacha:company:query"):
return JSONResponse(
status_code=403,
content={"code": 403, "message": "当前用户没有查询企业信息权限", "data": None},
)
data = await self.QichachaService.QueryDishonestyOnly(
Keyword=Body.keyword,
ForceRefresh=Body.forceRefresh,
)
return Result.success(data=data)
@self.router.post("/batch", response_model=Result[QichachaBatchQueryVO])
async def BatchQuery(Body: QichachaBatchQueryDTO, payload: dict[str, Any] = Depends(verify_access_token)):
"""批量查询企业信息。"""
if not await self.PermissionService.CheckPermission(int(payload["user_id"]), "qichacha:company:query"):
return JSONResponse(
status_code=403,
content={"code": 403, "message": "当前用户没有查询企业信息权限", "data": None},
)
data = await self.QichachaService.BatchQuery(
Keywords=Body.keywords,
ForceRefresh=Body.forceRefresh,
)
return Result.success(data=data)
@self.router.get("/status", response_model=Result[QichachaRecordStatusVO])
async def GetRecordStatus(
keyword: str = Query(..., min_length=2, description="企业名称或统一社会信用代码"),
payload: dict[str, Any] = Depends(verify_access_token),
):
"""查询企业缓存状态。"""
if not await self.PermissionService.CheckPermission(int(payload["user_id"]), "qichacha:status:read"):
return JSONResponse(
status_code=403,
content={"code": 403, "message": "当前用户没有查看企业缓存状态权限", "data": None},
)
data = await self.QichachaService.GetRecordStatus(Keyword=keyword)
return Result.success(data=data)