fix(api): 优化权限过滤器中 plan_id_eq 与 reseller_id_eq 的设置逻辑

- 将 plan_id_eq 和 reseller_id_eq 的赋值提至过滤 creator 判断之前
- 避免重复映射相同的权限边界字段
- 保持营销数据集订单相关过滤条件的正确性
- 简化 skipCreator 标签区域中重复的代码逻辑
This commit is contained in:
zhouyonggao 2025-12-18 23:34:19 +08:00
parent dd559f2f78
commit 13b4ff56df
1 changed files with 7 additions and 9 deletions

View File

@ -1559,6 +1559,13 @@ func mergePermissionIntoFilters(ds, main string, perm map[string]interface{}, fi
if hasNonEmptyIDs(filters["creator_in"]) { if hasNonEmptyIDs(filters["creator_in"]) {
return filters return filters
} }
// 先处理 plan_id_eq 和 reseller_id_eq 的设置
if v, ok := pickFirst(perm, filters, []string{"reseller_id", "merchant_id"}); ok {
filters["reseller_id_eq"] = v
}
if v, ok := pickFirst(perm, filters, []string{"plan_id", "activity_id"}); ok {
filters["plan_id_eq"] = v
}
// 如果传递了 plan_id_eq 或 reseller_id_eq 且不为空,则不再过滤 creator // 如果传递了 plan_id_eq 或 reseller_id_eq 且不为空,则不再过滤 creator
if ds == "marketing" && (main == "order" || main == "order_info") { if ds == "marketing" && (main == "order" || main == "order_info") {
if v, ok := filters["plan_id_eq"]; ok && v != nil && v != "" && v != 0 { if v, ok := filters["plan_id_eq"]; ok && v != nil && v != "" && v != 0 {
@ -1600,15 +1607,6 @@ func mergePermissionIntoFilters(ds, main string, perm map[string]interface{}, fi
} }
} }
skipCreator: 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 {
filters["reseller_id_eq"] = v
}
// plan/activity -> plan_id_eq
if v, ok := pickFirst(perm, filters, []string{"plan_id", "activity_id"}); ok {
filters["plan_id_eq"] = v
}
// account // account
if v, ok := pickFirst(perm, filters, []string{"account", "account_no"}); ok { if v, ok := pickFirst(perm, filters, []string{"account", "account_no"}); ok {
filters["account_eq"] = v filters["account_eq"] = v