fix(keystone): fix usage empty projectTags

This commit is contained in:
马鸿飞
2023-11-09 15:31:07 +08:00
parent 0d66ffcaf6
commit 6412887fce
+17 -14
View File
@@ -35,22 +35,25 @@ func Usage(result rbacutils.SPolicyResult) map[string]int {
pq = db.ObjectIdQueryWithPolicyResult(pq, ProjectManager, result)
// 根据项目标签过滤
tagFilters := tagutils.STagFilters{}
tagFilters.AddFilters(result.ProjectTags)
orConditions := []sqlchemy.ICondition{}
metadataResSQ := db.Metadata.Query().SubQuery()
for _, filter := range tagFilters.Filters {
for key, val := range filter {
orConditions = append(orConditions,
sqlchemy.AND(
sqlchemy.Equals(metadataResSQ.Field("key"), key),
sqlchemy.In(metadataResSQ.Field("value"), val),
),
)
if result.ProjectTags.Len() > 0 {
tagFilters := tagutils.STagFilters{}
tagFilters.AddFilters(result.ProjectTags)
orConditions := []sqlchemy.ICondition{}
metadataResSQ := db.Metadata.Query().SubQuery()
for _, filter := range tagFilters.Filters {
for key, val := range filter {
orConditions = append(orConditions,
sqlchemy.AND(
sqlchemy.Equals(metadataResSQ.Field("key"), key),
sqlchemy.In(metadataResSQ.Field("value"), val),
),
)
}
}
metadataResSQ = metadataResSQ.Query().Filter(sqlchemy.OR(orConditions...)).SubQuery()
pq = pq.Join(metadataResSQ, sqlchemy.Equals(pq.Field("id"), metadataResSQ.Field("obj_id")))
}
metadataResSQ = metadataResSQ.Query().Filter(sqlchemy.OR(orConditions...)).SubQuery()
pq = pq.Join(metadataResSQ, sqlchemy.Equals(pq.Field("id"), metadataResSQ.Field("obj_id")))
projCnt, _ := pq.IsFalse("is_domain").CountWithError()
results["projects"] = projCnt