|
|
@@ -114,7 +114,7 @@ def _build_menu_tree(menus: list) -> list:
|
|
|
def _menu_to_tree(menu: Menu, menu_set: set) -> MenuOut:
|
|
|
children = []
|
|
|
for child in menu.children:
|
|
|
- if child.id in menu_set and child.del_flag == 0 and user_account_is_active(child.status):
|
|
|
+ if child.id in menu_set and user_account_is_active(child.status):
|
|
|
children.append(_menu_to_tree(child, menu_set))
|
|
|
return MenuOut(
|
|
|
id=menu.id,
|
|
|
@@ -145,7 +145,6 @@ def get_menu_tree(current_user: User = Depends(get_current_user), db: Session =
|
|
|
db.query(Menu)
|
|
|
.filter(
|
|
|
Menu.id.in_(menu_ids),
|
|
|
- Menu.del_flag == 0,
|
|
|
sqlalchemy.or_(Menu.status == "0", Menu.status == 1),
|
|
|
sqlalchemy.or_(Menu.visible == "0", Menu.visible == 1),
|
|
|
)
|
|
|
@@ -407,12 +406,7 @@ def _build_full_menu_tree(menus: list[Menu]) -> list[MenuOut]:
|
|
|
|
|
|
@menu_crud_router.get("/tree", response_model=ApiResponse[List[MenuOut]])
|
|
|
def list_menu_tree(db: Session = Depends(get_db)):
|
|
|
- menus = (
|
|
|
- db.query(Menu)
|
|
|
- .filter(Menu.del_flag == 0)
|
|
|
- .order_by(Menu.sort_order.asc())
|
|
|
- .all()
|
|
|
- )
|
|
|
+ menus = db.query(Menu).order_by(Menu.sort_order.asc()).all()
|
|
|
tree = _build_full_menu_tree(menus)
|
|
|
return ApiResponse(data=tree)
|
|
|
|
|
|
@@ -482,12 +476,14 @@ def update_menu(id: int, body: MenuUpdate, db: Session = Depends(get_db)):
|
|
|
|
|
|
@menu_crud_router.delete("/{id}", response_model=ApiResponse[None])
|
|
|
def delete_menu(id: int, db: Session = Depends(get_db)):
|
|
|
- has_children = db.query(Menu).filter(Menu.parent_id == id, Menu.del_flag == 0).first()
|
|
|
+ has_children = db.query(Menu).filter(Menu.parent_id == id).first()
|
|
|
if has_children:
|
|
|
raise HTTPException(status_code=status.HTTP_400_BAD_REQUEST, detail="存在子菜单,无法删除")
|
|
|
- ok = CrudService.soft_delete(Menu, db, id)
|
|
|
- if not ok:
|
|
|
+ menu = db.query(Menu).filter(Menu.id == id).first()
|
|
|
+ if not menu:
|
|
|
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="菜单不存在")
|
|
|
+ db.query(MenuRole).filter(MenuRole.menu_id == id).delete(synchronize_session=False)
|
|
|
+ db.delete(menu)
|
|
|
return ApiResponse()
|
|
|
|
|
|
|