fix(api): 调整权限合并逻辑以支持plan_id_eq和reseller_id_eq过滤
- 在marketing数据源且主资源为order或order_info时 - 若filters包含非空的plan_id_eq或reseller_id_eq,则跳过creator过滤 - 优化了对权限中多个可能user id字段的检测逻辑 - 统一将识别到的用户ID写入filters的creator_in字段 - 保留了对reseller_id和merchant_id的兼容处理逻辑
This commit is contained in:
parent
5608897284
commit
dd559f2f78
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in New Issue