Signed-off-by: Daniel <845765@qq.com>
This commit is contained in:
Daniel 2025-10-16 23:12:27 +08:00
parent 251d5e012c
commit 1a56f872be
No known key found for this signature in database
GPG key ID: 86211BA83DF03017

View file

@ -233,18 +233,16 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
} }
return true return true
case FilterQuantifierNone: case FilterQuantifierNone:
if len(value.Rollup.Contents) < len(relVal.Relation.Contents) { if FilterOperatorIsEmpty == filter.Operator {
if FilterOperatorIsEmpty == filter.Operator { if len(value.Rollup.Contents) < len(relVal.Relation.Contents) || 1 > len(value.Rollup.Contents) {
return false return false
} else if FilterOperatorIsNotEmpty == filter.Operator { }
} else if FilterOperatorIsNotEmpty == filter.Operator {
if 1 > len(value.Rollup.Contents) {
return true return true
} }
} }
if 1 > len(filter.Value.Rollup.Contents) {
return true
}
for _, content := range value.Rollup.Contents { for _, content := range value.Rollup.Contents {
if content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) { if content.filter(filter.Value.Rollup.Contents[0], filter.RelativeDate, filter.RelativeDate2, filter.Operator) {
return false return false
@ -304,12 +302,28 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
switch filter.Qualifier { switch filter.Qualifier {
case FilterQuantifierUndefined, FilterQuantifierAny: case FilterQuantifierUndefined, FilterQuantifierAny:
if 1 > len(value.MAsset) { // 说明资源字段为空 if FilterOperatorIsEmpty == filter.Operator {
if FilterOperatorIsEmpty == filter.Operator { if 1 > len(value.MAsset) {
return true return true
} else if FilterOperatorIsNotEmpty == filter.Operator { }
for _, asset := range value.MAsset {
if "" == strings.TrimSpace(asset.Content) {
return true
}
}
return false
} else if FilterOperatorIsNotEmpty == filter.Operator {
if 1 > len(value.MAsset) {
return false return false
} }
for _, asset := range value.MAsset {
if "" != strings.TrimSpace(asset.Content) {
return true
}
}
return false
} }
for _, asset := range value.MAsset { for _, asset := range value.MAsset {
@ -326,12 +340,28 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
} }
} }
case FilterQuantifierAll: case FilterQuantifierAll:
if 1 > len(value.MAsset) { if FilterOperatorIsEmpty == filter.Operator {
if FilterOperatorIsEmpty == filter.Operator { if 1 > len(value.MAsset) {
return true return true
} else if FilterOperatorIsNotEmpty == filter.Operator { }
for _, asset := range value.MAsset {
if "" != strings.TrimSpace(asset.Content) {
return false
}
}
return true
} else if FilterOperatorIsNotEmpty == filter.Operator {
if 1 > len(value.MAsset) {
return false return false
} }
for _, asset := range value.MAsset {
if "" == strings.TrimSpace(asset.Content) {
return false
}
}
return true
} }
for _, asset := range value.MAsset { for _, asset := range value.MAsset {
@ -349,26 +379,38 @@ func (value *Value) Filter(filter *ViewFilter, attrView *AttributeView, itemID s
} }
return true return true
case FilterQuantifierNone: case FilterQuantifierNone:
if 1 > len(value.MAsset) { if FilterOperatorIsEmpty == filter.Operator {
if FilterOperatorIsEmpty == filter.Operator { if 1 > len(value.MAsset) {
return false
} else if FilterOperatorIsNotEmpty == filter.Operator {
return true return true
} }
for _, asset := range value.MAsset {
if "" == strings.TrimSpace(asset.Content) {
return false
}
}
return true
} else if FilterOperatorIsNotEmpty == filter.Operator {
if 1 > len(value.MAsset) {
return false
}
for _, asset := range value.MAsset {
if "" != strings.TrimSpace(asset.Content) {
return false
}
}
return true
} }
for _, asset := range value.MAsset { for _, asset := range value.MAsset {
switch asset.Type { switch asset.Type {
case AssetTypeFile: case AssetTypeFile:
if "" != strings.TrimSpace(asset.Name) { if filterTextContent(filter.Operator, asset.Name, filterContent) {
if filterTextContent(filter.Operator, asset.Name, filterContent) { return false
return false
}
} }
if "" != strings.TrimSpace(asset.Content) { if filterTextContent(filter.Operator, asset.Content, filterContent) {
if filterTextContent(filter.Operator, asset.Content, filterContent) { return false
return false
}
} }
case AssetTypeImage: case AssetTypeImage:
if filterTextContent(filter.Operator, asset.Content, filterContent) { if filterTextContent(filter.Operator, asset.Content, filterContent) {