文件上传

This commit is contained in:
Administrator 2023-04-20 15:34:30 +08:00
parent 4a7cf5e625
commit d6890bf1c1
6 changed files with 58 additions and 14 deletions

View File

@ -18,6 +18,11 @@ def add_file(db: Session, data: FileSechemas.UserFileCreate):
return new_file return new_file
def file_get(db: Session, md: str):
file = db.query(UserFile).filter_by(md=md).first()
return file
def file_query(db: Session, params: FileSechemas.UserFileQuery) -> (int, List[UserFile]): def file_query(db: Session, params: FileSechemas.UserFileQuery) -> (int, List[UserFile]):
query = db.query(UserFile) query = db.query(UserFile)
if params.md: if params.md:

View File

@ -45,8 +45,8 @@ def daily_add(req: DailySchemas.DailyAddReq, db: Session = Depends(get_db),
raise HTTPException(detail="填报人与email不符", status_code=305) raise HTTPException(detail="填报人与email不符", status_code=305)
# 本部门填报权限 # 本部门填报权限
# print(token_data.department, token_data, "token_data.departmentxx") # print(token_data.department, token_data, "token_data.departmentxx")
if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']): # if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']):
raise HTTPException(detail="没有本部门填报权限", status_code=305) # raise HTTPException(detail="没有本部门填报权限", status_code=305)
new_daily = DailyCrud.daily_add(db, req.dict()) new_daily = DailyCrud.daily_add(db, req.dict())
return DailySchemas.DailyAddRes(**new_daily.to_dict()) return DailySchemas.DailyAddRes(**new_daily.to_dict())
@ -55,8 +55,8 @@ def daily_add(req: DailySchemas.DailyAddReq, db: Session = Depends(get_db),
def daily_change(req: DailySchemas.DailyChangeReq, db: Session = Depends(get_db), def daily_change(req: DailySchemas.DailyChangeReq, db: Session = Depends(get_db),
token_data: TokenData = Depends(registered_depend)): token_data: TokenData = Depends(registered_depend)):
# 本部门填报权限 # 本部门填报权限
if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']): # if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']):
raise HTTPException(detail="没有本部门填报权限", status_code=305) # raise HTTPException(detail="没有本部门填报权限", status_code=305)
new_daily = DailyCrud.daily_change(db, req.id, req.dict()) new_daily = DailyCrud.daily_change(db, req.id, req.dict())
return DailySchemas.DailyChangeRes(**new_daily.to_dict()) return DailySchemas.DailyChangeRes(**new_daily.to_dict())

View File

@ -18,7 +18,7 @@ allow_file_type = {
} }
@router.post('/file_upload', response_model=FileSechemas.UserFileInfo) @router.post('/file_upload', response_model=FileSechemas.UserFileInfo, summary='文件上次')
def file_upload(file: UploadFile = File(...), def file_upload(file: UploadFile = File(...),
db: Session = Depends(get_db), token_data: TokenData = Depends(token_data_depend)): db: Session = Depends(get_db), token_data: TokenData = Depends(token_data_depend)):
mime_type = file.content_type mime_type = file.content_type
@ -27,9 +27,9 @@ def file_upload(file: UploadFile = File(...),
raise Exception('不允许上传该类型文件') raise Exception('不允许上传该类型文件')
content_start = file.file.read(1024) content_start = file.file.read(1024)
file_md = file_md5(content_start) file_md = file_md5(content_start)
save_path = Path(f"static_data/upload_files/{common_type}") save_path = Path(f"static_data/upload_files/{common_type}/{file_type}")
file_save_path = save_path / file_md file_save_path = save_path / file_md
file_url = f'/static_data/upload_files/{common_type}/{file_md}' file_url = f'/static_data/upload_files/{common_type}/{file_type}/{file_md}'
if not os.path.exists(save_path): if not os.path.exists(save_path):
os.makedirs(save_path) os.makedirs(save_path)
user_file = FileCrud.get_file_by_md(db, file_md) user_file = FileCrud.get_file_by_md(db, file_md)
@ -48,12 +48,10 @@ def file_upload(file: UploadFile = File(...),
mime_type=mime_type, mime_type=mime_type,
user_id=token_data.email, common_type=common_type, user_id=token_data.email, common_type=common_type,
file_url=file_url)) file_url=file_url))
else:
raise HTTPException(detail='文件已经上传', status_code=303)
return user_file.to_dict() return user_file.to_dict()
@router.post("/query", response_model=FileSechemas.UserFileQueryRes) @router.post("/query", response_model=FileSechemas.UserFileQueryRes, summary='文件查询')
def query(req: FileSechemas.UserFileQuery, token_data: TokenData = Depends(token_data_depend), def query(req: FileSechemas.UserFileQuery, token_data: TokenData = Depends(token_data_depend),
db: Session = Depends(get_db)): db: Session = Depends(get_db)):
# if req.user_id and req.user_id != token_data.email: # if req.user_id and req.user_id != token_data.email:
@ -61,3 +59,12 @@ def query(req: FileSechemas.UserFileQuery, token_data: TokenData = Depends(token
count, items = FileCrud.file_query(db, req) count, items = FileCrud.file_query(db, req)
item_list = [item.to_dict() for item in items] item_list = [item.to_dict() for item in items]
return FileSechemas.UserFileQueryRes(count=count, item_list=item_list) return FileSechemas.UserFileQueryRes(count=count, item_list=item_list)
@router.post("/get", response_model=FileSechemas.UserFileInfo, summary='文件获取')
def query(req: FileSechemas.UserFileGet,
db: Session = Depends(get_db)):
file = FileCrud.file_get(db, req.md)
if not file:
raise HTTPException(detail="未找到文件", status_code=404)
return file.to_dict()

View File

@ -9,6 +9,7 @@ from Schemas.UserSchemas import UserInfo
@unique @unique
class DailyTypeEnum(Enum): class DailyTypeEnum(Enum):
董监高日报 = "董监高日报" 董监高日报 = "董监高日报"
运行日报 = "运行日报"
部门子公司日报 = "部门子公司日报" 部门子公司日报 = "部门子公司日报"
监管和同业动态 = "监管和同业动态" 监管和同业动态 = "监管和同业动态"
行业信息专题分析 = "行业信息专题分析" 行业信息专题分析 = "行业信息专题分析"
@ -84,11 +85,11 @@ class DailyQueryRes(BaseModel):
class DailyAddReq(BaseModel): class DailyAddReq(BaseModel):
type: DailyTypeEnum type: DailyTypeEnum
fill_user: Optional[str] fill_user: Optional[str]
department: int department: Optional[int]
content: str content: Optional[str]
post: int post: Optional[int]
daily_time: Optional[datetime] daily_time: Optional[datetime]
file_md:Optional[str] file_md: Optional[str]
title: Optional[str] title: Optional[str]

View File

@ -14,6 +14,10 @@ class UserFileInfo(BaseModel):
create_time: datetime create_time: datetime
class UserFileGet(BaseModel):
md: str
class UserFileCreate(BaseModel): class UserFileCreate(BaseModel):
md: str md: str
file_name: str file_name: str

View File

@ -160,3 +160,30 @@ def load_user_data(db: Session):
new_user.phone = str(int(user_info['phone'])) if user_info['phone'] else None new_user.phone = str(int(user_info['phone'])) if user_info['phone'] else None
db.add(new_user) db.add(new_user)
db.commit() db.commit()
def load_daily_data(db: Session, file):
dt = pd.read_excel(file)
line_count = dt.shape[0]
for i in range(line_count):
row = dt.loc[i]
name = row['姓名']
daily_time = row['日期']
content = row['内容']
user = db.query(User).filter_by(name=name).first()
if not user:
raise Exception(f'{name},无此姓名')
if db.query(Daily).filter_by(type='董监高日报', content=content, daily_time=daily_time,
fill_user=user.email).first():
continue
else:
old_item = db.query(Daily).filter_by(type='董监高日报', fill_user=user.email).first()
new_item = Daily()
new_item.fill_user = user.email
new_item.department = old_item.department
new_item.post = old_item.post
new_item.content = content
new_item.daily_time = daily_time
new_item.type = '董监高日报'
db.add(new_item)
db.commit()