Merge pull request #7042 from swordqiu/feature/qj-filter-jointable-project-for-user-group

feature: project filter that list jointable projects for user or group
This commit is contained in:
Zexi Li
2020-07-04 12:11:13 +08:00
committed by GitHub
2 changed files with 25 additions and 2 deletions
+3
View File
@@ -151,6 +151,9 @@ type ProjectListInput struct {
UserFilterListInput
GroupFilterListInput
// 过滤出指定用户或者组可以加入的项目
Jointable *bool `json:"jointable"`
}
type DomainListInput struct {
+22 -2
View File
@@ -233,7 +233,17 @@ func (manager *SProjectManager) ListItemFilter(
}
}
subq := AssignmentManager.fetchUserProjectIdsQuery(userObj.GetId())
q = q.In("id", subq.SubQuery())
if query.Jointable != nil && *query.Jointable {
user := userObj.(*SUser)
if user.DomainId == api.DEFAULT_DOMAIN_ID {
q = q.Equals("domain_id", api.DEFAULT_DOMAIN_ID)
} else {
q = q.In("domain_id", []string{user.DomainId, api.DEFAULT_DOMAIN_ID})
}
q = q.NotIn("id", subq.SubQuery())
} else {
q = q.In("id", subq.SubQuery())
}
}
groupStr := query.Group
@@ -247,7 +257,17 @@ func (manager *SProjectManager) ListItemFilter(
}
}
subq := AssignmentManager.fetchGroupProjectIdsQuery(groupObj.GetId())
q = q.In("id", subq.SubQuery())
if query.Jointable != nil && *query.Jointable {
group := groupObj.(*SGroup)
if group.DomainId == api.DEFAULT_DOMAIN_ID {
q = q.Equals("domain_id", api.DEFAULT_DOMAIN_ID)
} else {
q = q.In("domain_id", []string{group.DomainId, api.DEFAULT_DOMAIN_ID})
}
q = q.NotIn("id", subq.SubQuery())
} else {
q = q.In("id", subq.SubQuery())
}
}
return q, nil