diff --git a/Crud/DepartmentCrud.py b/Crud/DepartmentCrud.py index 2b0eef6..220cf53 100644 --- a/Crud/DepartmentCrud.py +++ b/Crud/DepartmentCrud.py @@ -52,3 +52,25 @@ def set_user_department(db: Session, user_id: str, department_id_list: List[int] db.commit() db.refresh(User) return User.department + + +def get_department_tree(db: Session) -> dict: + item_list = db.query(Department).all() + node_list = [] + for item in item_list: + item_dic = item.to_dict() + item_dic['children'] = [] + node_list.append(item_dic) + + nodes_dic = {node["id"]: node for node in node_list} + tree = [] + for node in node_list: + belong = node['belong'] + if belong: + if belong in nodes_dic: + nodes_dic[belong]['children'].append(node) + else: + print(f"不存在{belong}") + else: + tree.append(node) + return tree diff --git a/CrudModel/DefaultAuthRule.py b/CrudModel/DefaultAuthRule.py new file mode 100644 index 0000000..d4a6f12 --- /dev/null +++ b/CrudModel/DefaultAuthRule.py @@ -0,0 +1,4 @@ +from Utils.CrudUtils import auto_create_crud +from Model.AuthRuleModel import DefaultAuthRuleConfig + +default_auth_rule_crud = auto_create_crud(DefaultAuthRuleConfig, 'defaultAuthRuleConfig', '默认权限配置') diff --git a/Router/AuthRuleRouter.py b/Router/AuthRuleRouter.py index 6ae3235..f73ebf7 100644 --- a/Router/AuthRuleRouter.py +++ b/Router/AuthRuleRouter.py @@ -1,6 +1,7 @@ from fastapi import APIRouter, Depends from sqlalchemy.orm import Session +from CrudModel.DefaultAuthRule import default_auth_rule_crud from Schemas import AuthRuleSchemas from Crud import AuthRuleCrud from Utils.AuthUtils import admin_auth_token_depend @@ -11,7 +12,7 @@ router = APIRouter( prefix="/api/user_mod/auth_rule", dependencies=[Depends(admin_auth_token_depend)] ) - +default_auth_rule_crud.mount(router) @router.post("/add_auth_rule", summary="添加权限规则", response_model=AuthRuleSchemas.AuthRuleInfo) def add_auth_rule(body: AuthRuleSchemas.AuthRuleAddInfo, db: Session = Depends(get_db)): diff --git a/Router/DepartmentRouter.py b/Router/DepartmentRouter.py index 58833d4..617c815 100644 --- a/Router/DepartmentRouter.py +++ b/Router/DepartmentRouter.py @@ -3,21 +3,21 @@ from sqlalchemy.orm import Session from Crud import DepartmentCrud from Schemas import DepartmentSchemas from Schemas.UserSchemas import TokenData -from Utils.AuthUtils import admin_auth_token_depend +from Utils.AuthUtils import admin_auth_token_depend,token_data_depend from Utils.SqlAlchemyUtils import get_db router = APIRouter( tags=["部门操作"], prefix="/api/user_mod/department", - dependencies=[Depends(admin_auth_token_depend)] + dependencies=[Depends(token_data_depend)] ) @router.post("/get_department_list", summary="获取部门列表", response_model=DepartmentSchemas.DepartmentInfoList) -def get_department_list(params:DepartmentSchemas.DepartmentListQueryParams,db: Session = Depends(get_db)): - count,department_list = DepartmentCrud.get_department_list(db,params) +def get_department_list(params: DepartmentSchemas.DepartmentListQueryParams,db: Session = Depends(get_db)): + count, department_list = DepartmentCrud.get_department_list(db, params) items = [item.to_dict() for item in department_list] - department_info_list = DepartmentSchemas.DepartmentInfoList(department_info_list=items,count=count) + department_info_list = DepartmentSchemas.DepartmentInfoList(department_info_list=items, count=count) return department_info_list @@ -27,19 +27,26 @@ def add_department(department: DepartmentSchemas.DepartmentBaseInfo, db: Session return {"msg": "操作成功", "state": 1} +@router.post("/get_department_tree", summary="获取部门树") +def get_department_tree(db: Session = Depends(get_db)): + tree = DepartmentCrud.get_department_tree(db) + return tree + + @router.post("/change_department", summary="修改部门") -def change_department(department: DepartmentSchemas.DepartmentInfo, db: Session = Depends(get_db)): - DepartmentCrud.change_department(db,department.id, department.name, department.belong) +def change_department(department: DepartmentSchemas.DepartmentInfo, admin=Depends(admin_auth_token_depend), db: Session = Depends(get_db)): + DepartmentCrud.change_department(db, department.id, department.name, department.belong) return {"msg": "操作成功", "state": 1} @router.post("/delete_department", summary="删除部门") -def delete_department(department_id: DepartmentSchemas.DepartmentId, db: Session = Depends(get_db)): +def delete_department(department_id: DepartmentSchemas.DepartmentId,admin=Depends(admin_auth_token_depend), db: Session = Depends(get_db)): DepartmentCrud.delete_department(db, department_id.id) return {"msg": "操作成功", "state": 1} @router.post("/set_user_department", summary="用户设置部门") -def set_user_department(user_department_info: DepartmentSchemas.UserDepartmentInfo, db: Session = Depends(get_db)): +def set_user_department(user_department_info: DepartmentSchemas.UserDepartmentInfo,admin=Depends(admin_auth_token_depend), db: Session = Depends(get_db)): DepartmentCrud.set_user_department(db, user_department_info.user_id, user_department_info.department_id_list) return {"msg": "操作成功", "state": 1} + diff --git a/main.py b/main.py index b501ce5..0c50878 100644 --- a/main.py +++ b/main.py @@ -9,9 +9,6 @@ from Utils.SqlAlchemyUtils import Base, init_database from Context.common import ctx from Utils.TestUtils import init_test_env from fastapi.staticfiles import StaticFiles -from crud import item_crud - -item_crud.mount(AppRouter.router) init_common_config() init_database()