diff --git a/api/dms/service/v1/data_export_workflow.go b/api/dms/service/v1/data_export_workflow.go index 5a51d943..3e3c8151 100644 --- a/api/dms/service/v1/data_export_workflow.go +++ b/api/dms/service/v1/data_export_workflow.go @@ -116,6 +116,15 @@ type FilterGlobalDataExportWorkflowReq struct { // filter fuzzy key word for id/name // in:query FuzzyKeyword string `json:"fuzzy_keyword" query:"fuzzy_keyword"` + // enable OR-based self-relevant filtering (creator OR assignee OR viewable db_service) + // in:query + CheckUserCanAccess bool `json:"check_user_can_access" query:"check_user_can_access"` + // current user id for check_user_can_access filter + // in:query + CurrentUserID string `json:"current_user_id" query:"current_user_id"` + // db_service UIDs with view_others_workflow permission for check_user_can_access + // in:query + ViewableDBServiceUids []string `json:"viewable_db_service_uids" query:"viewable_db_service_uids"` } // swagger:model GetGlobalDataExportWorkflowsReply diff --git a/pkg/dms-common/api/dms/v1/workflow.go b/pkg/dms-common/api/dms/v1/workflow.go index 22c6505a..e0cf5dbb 100644 --- a/pkg/dms-common/api/dms/v1/workflow.go +++ b/pkg/dms-common/api/dms/v1/workflow.go @@ -19,6 +19,14 @@ type FilterGlobalDataExportWorkflowReq struct { FilterCurrentStepAssigneeUserUid string `json:"filter_current_step_assignee_user_uid" query:"filter_current_step_assignee_user_uid"` FilterByDBServiceUid string `json:"filter_by_db_service_uid" query:"filter_by_db_service_uid"` FuzzyKeyword string `json:"fuzzy_keyword" query:"fuzzy_keyword"` + + // CheckUserCanAccess enables OR-based self-relevant filtering: + // (creator OR current assignee OR viewable db_service). When true, + // CurrentUserID must be set. This replaces the broken AND approach of + // setting both FilterByCreateUserUid and FilterCurrentStepAssigneeUserId. + CheckUserCanAccess bool `json:"check_user_can_access" query:"check_user_can_access"` + CurrentUserID string `json:"current_user_id" query:"current_user_id"` + ViewableDBServiceUids []string `json:"viewable_db_service_uids" query:"viewable_db_service_uids"` } type DataExportWorkflowStatus string diff --git a/pkg/dms-common/dmsobject/data_export_workflow.go b/pkg/dms-common/dmsobject/data_export_workflow.go index 9f95d1d1..2ab8799f 100644 --- a/pkg/dms-common/dmsobject/data_export_workflow.go +++ b/pkg/dms-common/dmsobject/data_export_workflow.go @@ -58,6 +58,26 @@ func GetGlobalDataExportWorkflowsList(ctx context.Context, dmsAddr string, req d query.Set("filter_current_step_assignee_user_id", req.FilterCurrentStepAssigneeUserId) } + if req.FuzzyKeyword != "" { + query.Set("fuzzy_keyword", req.FuzzyKeyword) + } + + if req.CheckUserCanAccess { + query.Set("check_user_can_access", "true") + } + + if req.CurrentUserID != "" { + query.Set("current_user_id", req.CurrentUserID) + } + + if len(req.ViewableDBServiceUids) > 0 { + for _, v := range req.ViewableDBServiceUids { + if v != "" { + query.Add("viewable_db_service_uids", v) + } + } + } + // 将查询参数附加到 URL baseURL.RawQuery = query.Encode()