fix: assign_permissions 删除逻辑对齐 get_user_permissions 查询逻辑 — 公司定制+全局模板一起替换

This commit is contained in:
yueli
2026-07-17 15:38:14 +08:00
parent 9c3fcbca4c
commit efe04c5d42

View File

@ -130,13 +130,20 @@ class PermissionService:
session = db.session
try:
# 1. 删除该角色+该公司的旧权限(只删同公司的,不影响全局模板和其他公司)
# 1. 删除该角色的旧权限
# 删除逻辑需与 get_user_permissions 的查询逻辑对齐:
# - company_name 为空 → 删 company_name IS NULL OR ''(超管/全局模板)
# - company_name 有值 → 删 公司定制 + 全局模板(确保能完整替换)
if company_name:
old_perms = SysRolePermission.query.filter_by(
role_code=role_code, company_name=company_name
old_perms = SysRolePermission.query.filter(
SysRolePermission.role_code == role_code,
or_(
SysRolePermission.company_name == company_name,
SysRolePermission.company_name.is_(None),
SysRolePermission.company_name == '',
)
).all()
else:
# 公司为空时兼容旧逻辑:删除 company_name 为 NULL 的旧权限
old_perms = SysRolePermission.query.filter(
SysRolePermission.role_code == role_code,
or_(