| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from typing import Annotated
- from fastapi import APIRouter, Depends
- from starlette.responses import JSONResponse
- from app.core.dependencies import db_getter
- from app.core.router_class import OperationLogRoute
- from app.common.response import ResponseSchema, SuccessResponse, ErrorResponse
- from app.core.apikey import TenantApiKeyAuth
- from app.plugin.module_payment.account import AccountService
- from app.plugin.module_payment.account.schema import AccountTransferSchema
- from app.api.v1.module_system.auth.schema import AuthSchema
- from sqlalchemy.ext.asyncio import AsyncSession
- from app.core.logger import log
- from app.plugin.module_payment.apikey.schema import ApiKeyPayload
- OpenapiRouter = APIRouter(
- route_class=OperationLogRoute,
- prefix="/openapi",
- tags=["开放接口"],
- )
- @OpenapiRouter.post(
- "/account/transfer",
- summary="资金专户转账",
- description="从资金专户转账到支付宝账户/银行卡/资金专户",
- response_model=ResponseSchema[dict],
- )
- async def openapi_transfer_controller(
- apikey: Annotated[ApiKeyPayload[AccountTransferSchema], Depends(TenantApiKeyAuth(AccountTransferSchema))],
- ) -> JSONResponse:
- """
- 租户资金专户转账接口
- 支持通过API Key进行认证,适用于平台租户调用
- """
- auth = apikey.auth
- transfer_data = apikey.data
- if transfer_data is None:
- return ErrorResponse(msg="缺少必需参数")
- # 执行转账
- result = await AccountService.transfer_service(auth=auth, data=transfer_data)
- log.info(f"租户资金专户转账发起成功: 企业: {transfer_data.enterprise_id}, 金额: {transfer_data.amount}")
- return SuccessResponse(data=result, msg="转账申请已提交")
|