feat(routers): implement all 6 API endpoints
This commit is contained in:
@@ -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
|
||||||
|
|||||||
1
lsfx-mock-server/routers/__init__.py
Normal file
1
lsfx-mock-server/routers/__init__.py
Normal file
@@ -0,0 +1 @@
|
|||||||
|
# Routers package
|
||||||
BIN
lsfx-mock-server/routers/__pycache__/__init__.cpython-313.pyc
Normal file
BIN
lsfx-mock-server/routers/__pycache__/__init__.cpython-313.pyc
Normal file
Binary file not shown.
BIN
lsfx-mock-server/routers/__pycache__/api.cpython-313.pyc
Normal file
BIN
lsfx-mock-server/routers/__pycache__/api.cpython-313.pyc
Normal file
Binary file not shown.
99
lsfx-mock-server/routers/api.py
Normal file
99
lsfx-mock-server/routers/api.py
Normal 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)
|
||||||
Reference in New Issue
Block a user