fix: de-dup role permission binding and use raw sql replace

This commit is contained in:
2025-12-06 22:52:02 +08:00
parent 33a3b349c4
commit cf9927c078
2 changed files with 18 additions and 15 deletions

View File

@@ -19,7 +19,12 @@ public sealed class BindRolePermissionsCommandHandler(
var tenantId = request.TenantId ?? tenantProvider.GetCurrentTenantId();
// 2. 覆盖式绑定权限
await rolePermissionRepository.ReplaceRolePermissionsAsync(tenantId, request.RoleId, request.PermissionIds, cancellationToken);
var distinctPermissionIds = request.PermissionIds
.Where(id => id > 0)
.Distinct()
.ToArray();
await rolePermissionRepository.ReplaceRolePermissionsAsync(tenantId, request.RoleId, distinctPermissionIds, cancellationToken);
await rolePermissionRepository.SaveChangesAsync(cancellationToken);
// 3. 返回执行结果