diff --git a/pkg/apis/compute/project_mappings.go b/pkg/apis/compute/project_mappings.go index a3992907f4..807657e102 100644 --- a/pkg/apis/compute/project_mappings.go +++ b/pkg/apis/compute/project_mappings.go @@ -153,6 +153,9 @@ type ProjectMappingDetails struct { // 所绑定的云账号列表 Accounts []SProjectMappingAccount `json:"accounts"` + + // 所绑定的云订阅列表 + Managers []SProjectMappingAccount `json:"managers"` } type ProjectMappingCreateInput struct { diff --git a/pkg/compute/models/project_mappings.go b/pkg/compute/models/project_mappings.go index b5f15a305e..e77a41466b 100644 --- a/pkg/compute/models/project_mappings.go +++ b/pkg/compute/models/project_mappings.go @@ -141,16 +141,22 @@ func (manager *SProjectMappingManager) FetchCustomizeColumns( mp := objs[i].(*SProjectMapping) mpIds[i] = mp.Id } - accounts := []struct { + type sBind struct { Id string Name string ProjectMappingId string - }{} + } + accounts, managers := []sBind{}, []sBind{} q := CloudaccountManager.Query().In("project_mapping_id", mpIds) err := q.All(&accounts) if err != nil { return rows } + q = CloudproviderManager.Query().In("project_mapping_id", mpIds) + err = q.All(&managers) + if err != nil { + return rows + } accountMapping := map[string][]api.SProjectMappingAccount{} for i := range accounts { _, ok := accountMapping[accounts[i].ProjectMappingId] @@ -163,9 +169,22 @@ func (manager *SProjectMappingManager) FetchCustomizeColumns( } accountMapping[accounts[i].ProjectMappingId] = append(accountMapping[accounts[i].ProjectMappingId], account) } + managerMapping := map[string][]api.SProjectMappingAccount{} + for i := range managers { + _, ok := managerMapping[managers[i].ProjectMappingId] + if !ok { + managerMapping[managers[i].ProjectMappingId] = []api.SProjectMappingAccount{} + } + manager := api.SProjectMappingAccount{ + Id: managers[i].Id, + Name: managers[i].Name, + } + managerMapping[managers[i].ProjectMappingId] = append(managerMapping[managers[i].ProjectMappingId], manager) + } for i := range rows { rows[i].Accounts, _ = accountMapping[mpIds[i]] + rows[i].Managers, _ = managerMapping[mpIds[i]] } return rows }