田爽 6 месяцев назад
Родитель
Сommit
f30d29ad0c

+ 6 - 2
src/Hotline.Repository.SqlSugar/Extensions/DataPermissionExtensions.cs

@@ -24,7 +24,9 @@ namespace Hotline.Repository.SqlSugar.Extensions
                     .Where(step => step.ExternalId == d.Id &&
                             ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == session.RequiredUserId) ||
                                (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == session.RequiredOrgId) ||
-                               (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId))))
+                               (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId))||
+                               (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId) && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == session.RequiredOrgId)
+							   ))
                     .Any());
 
             //return queryable.LeftJoin<WorkflowTrace>((d, step) => d.Id == step.ExternalId)
@@ -71,7 +73,9 @@ namespace Hotline.Repository.SqlSugar.Extensions
                                    step.TraceState != EWorkflowTraceState.StepRemoveByRecall) &&
                                ((step.FlowAssignType == EFlowAssignType.User && !string.IsNullOrEmpty(step.HandlerId) && step.HandlerId == session.RequiredUserId) ||
                                 (step.FlowAssignType == EFlowAssignType.Org && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == session.RequiredOrgId) ||
-                                (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId))))
+                                (step.FlowAssignType == EFlowAssignType.Role && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId)) ||
+                                (step.FlowAssignType == EFlowAssignType.OrgAndRole && !string.IsNullOrEmpty(step.RoleId) && session.Roles.Contains(step.RoleId) && !string.IsNullOrEmpty(step.HandlerOrgId) && step.HandlerOrgId == session.RequiredOrgId )
+								))
                 .Any()
             );
             //return queryable.LeftJoin<WorkflowStep>((d, step) => d.Id == step.ExternalId)