feat(routers): implement all 6 API endpoints

This commit is contained in:
wkc
2026-03-03 09:27:50 +08:00
parent 0d4fcd089b
commit 1bc65f9830
5 changed files with 101 additions and 0 deletions

View File

@@ -1,6 +1,7 @@
fastapi==0.104.1 fastapi==0.104.1
uvicorn[standard]==0.24.0 uvicorn[standard]==0.24.0
pydantic==2.5.0 pydantic==2.5.0
pydantic-settings==2.1.0
python-multipart==0.0.6 python-multipart==0.0.6
pytest>=7.0.0 pytest>=7.0.0
pytest-cov>=4.0.0 pytest-cov>=4.0.0

View File

@@ -0,0 +1 @@
# Routers package

View File

@@ -0,0 +1,99 @@
from fastapi import APIRouter, BackgroundTasks, UploadFile, File, Form
from models.request import (
GetTokenRequest,
FetchInnerFlowRequest,
CheckParseStatusRequest,
GetBankStatementRequest,
DeleteFilesRequest,
)
from services.token_service import TokenService
from services.file_service import FileService
from services.statement_service import StatementService
from utils.error_simulator import ErrorSimulator
from typing import List
# 创建路由器
router = APIRouter()
# 初始化服务实例
token_service = TokenService()
file_service = FileService()
statement_service = StatementService()
# ==================== 接口1获取Token ====================
@router.post("/account/common/getToken")
async def get_token(request: GetTokenRequest):
"""创建项目并获取访问Token
如果 projectNo 包含 error_XXXX 标记,将返回对应的错误响应
"""
# 检测错误标记
error_code = ErrorSimulator.detect_error_marker(request.projectNo)
if error_code:
return ErrorSimulator.build_error_response(error_code)
# 正常流程
return token_service.create_token(request)
# ==================== 接口2上传文件 ====================
@router.post("/watson/api/project/remoteUploadSplitFile")
async def upload_file(
background_tasks: BackgroundTasks,
groupId: int = Form(..., description="项目ID"),
file: UploadFile = File(..., description="流水文件"),
):
"""上传流水文件
文件将立即返回并在后台延迟4秒完成解析
"""
return await file_service.upload_file(groupId, file, background_tasks)
# ==================== 接口3拉取行内流水 ====================
@router.post("/watson/api/project/getJZFileOrZjrcuFile")
async def fetch_inner_flow(request: FetchInnerFlowRequest):
"""拉取行内流水
如果 customerNo 包含 error_XXXX 标记,将返回对应的错误响应
"""
# 检测错误标记
error_code = ErrorSimulator.detect_error_marker(request.customerNo)
if error_code:
return ErrorSimulator.build_error_response(error_code)
# 正常流程
return file_service.fetch_inner_flow(request)
# ==================== 接口4检查文件解析状态 ====================
@router.post("/watson/api/project/upload/getpendings")
async def check_parse_status(request: CheckParseStatusRequest):
"""检查文件解析状态
返回文件是否还在解析中parsing字段
"""
return file_service.check_parse_status(
request.groupId, request.inprogressList
)
# ==================== 接口5删除文件 ====================
@router.post("/watson/api/project/batchDeleteUploadFile")
async def delete_files(request: DeleteFilesRequest):
"""批量删除上传的文件
根据logIds列表删除对应的文件记录
"""
return file_service.delete_files(request.groupId, request.logIds, request.userId)
# ==================== 接口6获取银行流水 ====================
@router.post("/watson/api/project/getBSByLogId")
async def get_bank_statement(request: GetBankStatementRequest):
"""获取银行流水列表
支持分页查询pageNow, pageSize
"""
return statement_service.get_bank_statement(request)