from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from Schemas.UserSchemas import TokenData from Utils.AuthUtils import token_data_depend, check_auth, registered_depend from Models.DailyModel import Daily from Utils.CrudUtils import auto_create_crud import json from Schemas import DailySchemas from Crud import DailyCrud from Utils.SqlAlchemyUtils import get_db router = APIRouter( tags=["日报"], prefix="/api/daily/daily", dependencies=[Depends(registered_depend)] ) # crud = auto_create_crud(Daily, 'daily', "日报", auto_create_keys=['create_time', 'update_time', 'id'], # array_keys=['department', 'post']) # crud.mount(router) @router.post("/daily_get", response_model=DailySchemas.DailyGetRes, summary="获取日报") def daily_get(req: DailySchemas.DailyGetReq, db: Session = Depends(get_db), token_data: TokenData = Depends(registered_depend)): return DailySchemas.DailyGetRes(**DailyCrud.daily_get(db, req.id).to_dict()) @router.post("/daily_add", response_model=DailySchemas.DailyAddRes, summary="添加日报") def daily_add(req: DailySchemas.DailyAddReq, db: Session = Depends(get_db), token_data: TokenData = Depends(token_data_depend)): if req.fill_user != token_data.openid: raise HTTPException(detail="填报人与id不符", 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) new_daily=DailyCrud.daily_add(db, req.dict()) return DailySchemas.DailyAddRes(**new_daily.to_dict()) @router.post("/daily_change", response_model=DailySchemas.DailyChangeRes, summary="修改日报") 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) return DailyCrud.daily_change(db, req.id, req.dict()) @router.post("/daily_query", response_model=DailySchemas.DailyQueryRes, summary="查询日报") def daily_query(req: DailySchemas.DailyQuery, db: Session = Depends(get_db), token_data: TokenData = Depends(registered_depend)): print(req,"req") if not req.department and not check_auth(token_data.auth_data, [2]): raise HTTPException(detail="无所有部门动态查看权限", status_code=305) else: same_department = set([req.department]) < set([int(item) for item in token_data.department.split(',')]) if same_department and not check_auth(token_data.auth_data, [3]): raise HTTPException(detail="没有本部门动态查看权限", status_code=305) count, items = DailyCrud.daily_query(db, req) items = [DailySchemas.DailyInfo(**item.to_dict()) for item in items] return DailySchemas.DailyQueryRes(count=count, items=items) @router.post("/daily_delete", response_model=DailySchemas.DailyDeleteRes, summary="删除日报") def daily_delete(req: DailySchemas.DailyDeleteReq): DailyCrud.daily_delete(req.id) return DailySchemas.DailyDeleteRes(msg="删除成功", state=1)