controller.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from typing import Annotated
  2. from fastapi import APIRouter, Depends
  3. from starlette.responses import JSONResponse
  4. from app.core.dependencies import db_getter
  5. from app.core.router_class import OperationLogRoute
  6. from app.common.response import ResponseSchema, SuccessResponse, ErrorResponse
  7. from app.core.apikey import TenantApiKeyAuth
  8. from app.plugin.module_payment.account import AccountService
  9. from app.plugin.module_payment.account.schema import AccountTransferSchema
  10. from app.api.v1.module_system.auth.schema import AuthSchema
  11. from sqlalchemy.ext.asyncio import AsyncSession
  12. from app.core.logger import log
  13. from app.plugin.module_payment.apikey.schema import ApiKeyPayload
  14. OpenapiRouter = APIRouter(
  15. route_class=OperationLogRoute,
  16. prefix="/openapi",
  17. tags=["开放接口"],
  18. )
  19. @OpenapiRouter.post(
  20. "/account/transfer",
  21. summary="资金专户转账",
  22. description="从资金专户转账到支付宝账户/银行卡/资金专户",
  23. response_model=ResponseSchema[dict],
  24. )
  25. async def openapi_transfer_controller(
  26. apikey: Annotated[ApiKeyPayload[AccountTransferSchema], Depends(TenantApiKeyAuth(AccountTransferSchema))],
  27. ) -> JSONResponse:
  28. """
  29. 租户资金专户转账接口
  30. 支持通过API Key进行认证,适用于平台租户调用
  31. """
  32. auth = apikey.auth
  33. transfer_data = apikey.data
  34. if transfer_data is None:
  35. return ErrorResponse(msg="缺少必需参数")
  36. # 执行转账
  37. result = await AccountService.transfer_service(auth=auth, data=transfer_data)
  38. log.info(f"租户资金专户转账发起成功: 企业: {transfer_data.enterprise_id}, 金额: {transfer_data.amount}")
  39. return SuccessResponse(data=result, msg="转账申请已提交")