chore: remove legacy inventory stocktake menu and permission configs
This commit is contained in:
@ -157,6 +157,8 @@ def create_app():
|
||||
try:
|
||||
from app.services.permission_service import PermissionService
|
||||
with app.app_context():
|
||||
# 先清理旧版菜单,再初始化新版
|
||||
PermissionService.cleanup_legacy_stocktake_menus()
|
||||
PermissionService.init_audit_menu()
|
||||
PermissionService.init_stocktake_menus()
|
||||
except Exception as e:
|
||||
|
||||
@ -358,3 +358,33 @@ class PermissionService:
|
||||
db.session.rollback()
|
||||
print(f"❌ 初始化盘点管理菜单失败: {str(e)}")
|
||||
raise e
|
||||
|
||||
@staticmethod
|
||||
def cleanup_legacy_stocktake_menus():
|
||||
"""
|
||||
清理残留的旧版库存盘点菜单
|
||||
如果数据库中存在挂在入库管理下的旧版库存盘点菜单,清理掉
|
||||
"""
|
||||
try:
|
||||
# 查找可能存在的旧版库存盘点菜单(入库管理下的 stocktake)
|
||||
# 旧版可能在入库管理 (path like '%inventory%stocktake') 或者 code 包含 stocktake 但不是新的
|
||||
legacy_menus = SysMenu.query.filter(
|
||||
SysMenu.code.in_(['stocktake', 'inventory_stocktake_old'])
|
||||
).all()
|
||||
|
||||
for menu in legacy_menus:
|
||||
# 删除关联的权限
|
||||
SysRolePermission.query.filter_by(target_code=menu.code).delete()
|
||||
# 删除关联的元素
|
||||
SysElement.query.filter_by(menu_code=menu.code).delete()
|
||||
# 删除菜单
|
||||
db.session.delete(menu)
|
||||
print(f"🗑️ 已清理旧版库存盘点菜单: {menu.code} ({menu.name})")
|
||||
|
||||
db.session.commit()
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
db.session.rollback()
|
||||
print(f"⚠️ 清理旧版菜单失败: {str(e)}")
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user