| @@ -203,15 +203,20 @@ func FindAvailableSpecs(userId int64, opts models.FindSpecsOptions) ([]*models.S | |||||
| //distinct by sourceSpecId | //distinct by sourceSpecId | ||||
| specs = distinctSpecs(specs) | specs = distinctSpecs(specs) | ||||
| return specs, nil | |||||
| return specs, err | |||||
| } | } | ||||
| func filterExclusiveSpecs(r []*models.Specification, userId int64) []*models.Specification { | func filterExclusiveSpecs(r []*models.Specification, userId int64) []*models.Specification { | ||||
| specs := make([]*models.Specification, 0, len(r)) | specs := make([]*models.Specification, 0, len(r)) | ||||
| specMap := make(map[int64]string, 0) | |||||
| for i := 0; i < len(r); i++ { | for i := 0; i < len(r); i++ { | ||||
| spec := r[i] | spec := r[i] | ||||
| if _, has := specMap[spec.ID]; has { | |||||
| continue | |||||
| } | |||||
| if !spec.IsExclusive { | if !spec.IsExclusive { | ||||
| specs = append(specs, spec) | specs = append(specs, spec) | ||||
| specMap[spec.ID] = "" | |||||
| continue | continue | ||||
| } | } | ||||
| orgs := strings.Split(spec.ExclusiveOrg, ";") | orgs := strings.Split(spec.ExclusiveOrg, ";") | ||||
| @@ -219,6 +224,7 @@ func filterExclusiveSpecs(r []*models.Specification, userId int64) []*models.Spe | |||||
| isMember, _ := models.IsOrganizationMemberByOrgName(org, userId) | isMember, _ := models.IsOrganizationMemberByOrgName(org, userId) | ||||
| if isMember { | if isMember { | ||||
| specs = append(specs, spec) | specs = append(specs, spec) | ||||
| specMap[spec.ID] = "" | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||