diff --git a/server/internal/api/exports.go b/server/internal/api/exports.go index 95ed0d8..6212503 100644 --- a/server/internal/api/exports.go +++ b/server/internal/api/exports.go @@ -1559,35 +1559,47 @@ func mergePermissionIntoFilters(ds, main string, perm map[string]interface{}, fi if hasNonEmptyIDs(filters["creator_in"]) { return filters } - // try known keys - candidates := []string{"creator_in", "creator_ids", "user_ids", "user_id_in", "user_id", "owner_id"} - ids := []interface{}{} - for _, k := range candidates { - if perm == nil { - break + // 如果传递了 plan_id_eq 或 reseller_id_eq 且不为空,则不再过滤 creator + if ds == "marketing" && (main == "order" || main == "order_info") { + if v, ok := filters["plan_id_eq"]; ok && v != nil && v != "" && v != 0 { + goto skipCreator } - if v, ok := perm[k]; ok { - ids = normalizeIDs(v) - if len(ids) > 0 { - break - } + if v, ok := filters["reseller_id_eq"]; ok && v != nil && v != "" && v != 0 { + goto skipCreator } } - // also check filters incoming alternative keys and normalize into creator_in - if len(ids) == 0 { - alt := []string{"creator_ids", "user_ids", "user_id_in", "user_id", "owner_id"} - for _, k := range alt { - if v, ok := filters[k]; ok { + // try known keys + { + candidates := []string{"creator_in", "creator_ids", "user_ids", "user_id_in", "user_id", "owner_id"} + ids := []interface{}{} + for _, k := range candidates { + if perm == nil { + break + } + if v, ok := perm[k]; ok { ids = normalizeIDs(v) if len(ids) > 0 { break } } } + // also check filters incoming alternative keys and normalize into creator_in + if len(ids) == 0 { + alt := []string{"creator_ids", "user_ids", "user_id_in", "user_id", "owner_id"} + for _, k := range alt { + if v, ok := filters[k]; ok { + ids = normalizeIDs(v) + if len(ids) > 0 { + break + } + } + } + } + if len(ids) > 0 { + filters["creator_in"] = ids + } } - if len(ids) > 0 { - filters["creator_in"] = ids - } +skipCreator: // map alternative permission boundaries to supported filters // reseller/merchant -> reseller_id_eq if v, ok := pickFirst(perm, filters, []string{"reseller_id", "merchant_id"}); ok {