"""企查查控制器。""" 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)