zlwu 5 ماه پیش
والد
کامیت
e069f1d302
2فایلهای تغییر یافته به همراه12 افزوده شده و 13 حذف شده
  1. 5 2
      portal/backend/app/modules/system/models.py
  2. 7 11
      portal/backend/app/modules/system/router.py

+ 5 - 2
portal/backend/app/modules/system/models.py

@@ -60,7 +60,9 @@ class Role(BaseModel, SoftDeleteMixin):
     )
 
 
-class Menu(BaseModel, SoftDeleteMixin):
+class Menu(BaseModel):
+    """与主库 RuoYi sys_menu 一致:无 del_flag 逻辑删除列。"""
+
     __tablename__ = "sys_menu"
 
     id: Mapped[int] = mapped_column(BigInteger, primary_key=True, autoincrement=True)
@@ -73,7 +75,8 @@ class Menu(BaseModel, SoftDeleteMixin):
     menu_type: Mapped[int] = mapped_column(SmallInteger, nullable=False)
     path: Mapped[str | None] = mapped_column(String(256))
     icon: Mapped[str | None] = mapped_column(String(64))
-    sort_order: Mapped[int] = mapped_column(Integer, nullable=False, default=0, server_default="0")
+    # 与 RuoYi-Vue-Plus / 主库 sys_menu 列名一致:order_num(非 sort_order)
+    sort_order: Mapped[int] = mapped_column("order_num", Integer, nullable=False, default=0, server_default="0")
     visible: Mapped[int] = mapped_column(SmallInteger, nullable=False, default=1, server_default="1")
     status: Mapped[int] = mapped_column(SmallInteger, nullable=False, default=1, server_default="1")
     remark: Mapped[str | None] = mapped_column(String(512))

+ 7 - 11
portal/backend/app/modules/system/router.py

@@ -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()