添加客户端的文件上传和上传信息获取功能

This commit is contained in:
wcq 2023-12-12 18:59:36 +08:00
parent f131d33fe3
commit 66aef60f9d
5 changed files with 39 additions and 6 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@
**.pyc **.pyc
static/2.json static/2.json
static/填报模板1.xlsx static/填报模板1.xlsx
/static/smebiz2013/

View File

@ -1,4 +1,5 @@
import json import json
from datetime import datetime
from typing import List, Tuple from typing import List, Tuple
from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, Form from fastapi import APIRouter, Depends, HTTPException, UploadFile, File, Form
@ -15,10 +16,10 @@ from . import schemas
router = APIRouter(tags=["接收文件"], prefix='/receive_file') router = APIRouter(tags=["接收文件"], prefix='/receive_file')
@router.post("/update_file", summary="修改主题文件模板附带文件") @router.post("/update_file", summary="上传提交文件")
def update_file(file: UploadFile = File(...), data: str = Form(...), def update_file(file: UploadFile = File(...), data: str = Form(...),
db: Session = Depends(get_db), db: Session = Depends(get_db),
auth_info = Depends(get_url_code_and_code), ): auth_info=Depends(get_url_code_and_code), ):
[order, _, _] = auth_info [order, _, _] = auth_info
order: ReceiveOrder order: ReceiveOrder
data = json.loads(data) data = json.loads(data)
@ -39,6 +40,25 @@ def update_file(file: UploadFile = File(...), data: str = Form(...),
folder_name = subject.folder_name folder_name = subject.folder_name
file_path = file_upload(file, static_path / folder_name, db) file_path = file_upload(file, static_path / folder_name, db)
req.file_path = file_path req.file_path = file_path
req.upload_time = datetime.now()
item = crud.receive_file_update(db, req) item = crud.receive_file_update(db, req)
return schemas.ReceiveFileUpdateRes(**item.to_dict()) return schemas.ReceiveFileUpdateRes(**item.to_dict())
@router.post("/remove_file", summary="删除文件")
def remove_file(req: schemas.ReceiveFileId,
db: Session = Depends(get_db),
auth_info=Depends(get_url_code_and_code), ):
[order, _, _] = auth_info
order: ReceiveOrder
file = db.query(ReceiveFile).filter(ReceiveFile.receive_order_id == order.id, ReceiveFile.id == req.id).first()
if not file:
raise HTTPException(status_code=303, detail="未查询到文件")
file: ReceiveFile
# 文件不删
file.name = None
file.file_path = None
file.upload_time = None
db.commit()
return "成功"
######### #########

View File

@ -14,6 +14,7 @@ class ReceiveFileAdd(BaseModel):
receive_order_id: str receive_order_id: str
receive_subject_file_id: int receive_subject_file_id: int
file_path: Optional[str] = None file_path: Optional[str] = None
upload_time: Optional[datetime] = None
class ReceiveFileAddOptional(ReceiveFileAdd, metaclass=AllOptional): class ReceiveFileAddOptional(ReceiveFileAdd, metaclass=AllOptional):

View File

@ -1,5 +1,15 @@
from fastapi import APIRouter from fastapi import APIRouter, Depends
from .mods.receive_order.router import router as receive_order_router from .mods.receive_order.router import router as receive_order_router
from .mods.receive_file.router import router as receive_file_router from .mods.receive_file.router import router as receive_file_router
from .utils import get_url_code_and_code
router = APIRouter(prefix="/client") router = APIRouter(prefix="/receive_client", tags=['客户端'])
@router.post('/check', summary='链接验证')
def check(auth_info=Depends(get_url_code_and_code)):
return '成功'
router.include_router(receive_file_router)
router.include_router(receive_order_router)

View File

@ -6,14 +6,15 @@ from ..models import ReceiveOrder
def get_url_code_and_code( def get_url_code_and_code(
db: Session = Depends(get_db), db: Session = Depends(get_db),
url_code: str = Header(None), urlcode: str = Header(None),
code: str = Header(None) code: str = Header(None)
): ):
url_code = urlcode
if url_code is None or code is None: if url_code is None or code is None:
raise HTTPException(status_code=303, detail="缺少链接或密码") raise HTTPException(status_code=303, detail="缺少链接或密码")
order = db.query(ReceiveOrder).filter( order = db.query(ReceiveOrder).filter(
ReceiveOrder.url_code == url_code, ReceiveOrder.code == code).first() ReceiveOrder.url_code == url_code, ReceiveOrder.code == code).first()
if not order: if not order:
raise HTTPException(status_code=303, detail="错误的链接或密码") raise HTTPException(status_code=403, detail="错误的链接或密码")
return order, url_code, code return order, url_code, code