From d6890bf1c1f8a0f036f48d001f01580713fbef40 Mon Sep 17 00:00:00 2001 From: Administrator Date: Thu, 20 Apr 2023 15:34:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Crud/FileCrud.py | 5 +++++ Router/DailyRouter.py | 8 ++++---- Router/FileRouter.py | 19 +++++++++++++------ Schemas/DailySchemas.py | 9 +++++---- Schemas/FileSechemas.py | 4 ++++ Utils/DataToDbUtils.py | 27 +++++++++++++++++++++++++++ 6 files changed, 58 insertions(+), 14 deletions(-) diff --git a/Crud/FileCrud.py b/Crud/FileCrud.py index 318918a..1377754 100644 --- a/Crud/FileCrud.py +++ b/Crud/FileCrud.py @@ -18,6 +18,11 @@ def add_file(db: Session, data: FileSechemas.UserFileCreate): 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]): query = db.query(UserFile) if params.md: diff --git a/Router/DailyRouter.py b/Router/DailyRouter.py index 9690954..ce11add 100644 --- a/Router/DailyRouter.py +++ b/Router/DailyRouter.py @@ -45,8 +45,8 @@ def daily_add(req: DailySchemas.DailyAddReq, db: Session = Depends(get_db), raise HTTPException(detail="填报人与email不符", status_code=305) # 本部门填报权限 # 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']): - raise HTTPException(detail="没有本部门填报权限", status_code=305) + # if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']): + # raise HTTPException(detail="没有本部门填报权限", status_code=305) new_daily = DailyCrud.daily_add(db, req.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), token_data: TokenData = Depends(registered_depend)): # 本部门填报权限 - if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']): - raise HTTPException(detail="没有本部门填报权限", status_code=305) + # if str(req.department) not in token_data.department and not check_auth(token_data.auth_data, ['7']): + # raise HTTPException(detail="没有本部门填报权限", status_code=305) new_daily = DailyCrud.daily_change(db, req.id, req.dict()) return DailySchemas.DailyChangeRes(**new_daily.to_dict()) diff --git a/Router/FileRouter.py b/Router/FileRouter.py index 1e6003d..fcae6e0 100644 --- a/Router/FileRouter.py +++ b/Router/FileRouter.py @@ -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(...), db: Session = Depends(get_db), token_data: TokenData = Depends(token_data_depend)): mime_type = file.content_type @@ -27,9 +27,9 @@ def file_upload(file: UploadFile = File(...), raise Exception('不允许上传该类型文件') content_start = file.file.read(1024) 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_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): os.makedirs(save_path) user_file = FileCrud.get_file_by_md(db, file_md) @@ -48,12 +48,10 @@ def file_upload(file: UploadFile = File(...), mime_type=mime_type, user_id=token_data.email, common_type=common_type, file_url=file_url)) - else: - raise HTTPException(detail='文件已经上传', status_code=303) 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), db: Session = Depends(get_db)): # 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) item_list = [item.to_dict() for item in items] 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() diff --git a/Schemas/DailySchemas.py b/Schemas/DailySchemas.py index 4bad9d2..dd10d01 100644 --- a/Schemas/DailySchemas.py +++ b/Schemas/DailySchemas.py @@ -9,6 +9,7 @@ from Schemas.UserSchemas import UserInfo @unique class DailyTypeEnum(Enum): 董监高日报 = "董监高日报" + 运行日报 = "运行日报" 部门子公司日报 = "部门子公司日报" 监管和同业动态 = "监管和同业动态" 行业信息专题分析 = "行业信息专题分析" @@ -84,11 +85,11 @@ class DailyQueryRes(BaseModel): class DailyAddReq(BaseModel): type: DailyTypeEnum fill_user: Optional[str] - department: int - content: str - post: int + department: Optional[int] + content: Optional[str] + post: Optional[int] daily_time: Optional[datetime] - file_md:Optional[str] + file_md: Optional[str] title: Optional[str] diff --git a/Schemas/FileSechemas.py b/Schemas/FileSechemas.py index 2acf68e..b59763c 100644 --- a/Schemas/FileSechemas.py +++ b/Schemas/FileSechemas.py @@ -14,6 +14,10 @@ class UserFileInfo(BaseModel): create_time: datetime +class UserFileGet(BaseModel): + md: str + + class UserFileCreate(BaseModel): md: str file_name: str diff --git a/Utils/DataToDbUtils.py b/Utils/DataToDbUtils.py index 373e457..2b2da95 100644 --- a/Utils/DataToDbUtils.py +++ b/Utils/DataToDbUtils.py @@ -160,3 +160,30 @@ def load_user_data(db: Session): new_user.phone = str(int(user_info['phone'])) if user_info['phone'] else None db.add(new_user) 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()