diff --git a/models/org_team.go b/models/org_team.go index 1786376d0..799716679 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -760,11 +760,14 @@ func IsUserInTeams(userID int64, teamIDs []int64) (bool, error) { } // UsersInTeamsCount counts the number of users which are in userIDs and teamIDs -func UsersInTeamsCount(userIDs []int64, teamIDs []int64) (count int64, err error) { - if count, err = x.In("uid", userIDs).In("team_id", teamIDs).Count(new(TeamUser)); err != nil { +func UsersInTeamsCount(userIDs []int64, teamIDs []int64) (int64, error) { + var ids []int64 + if err := x.In("uid", userIDs).In("team_id", teamIDs). + Table("team_user"). + Cols("uid").GroupBy("uid").Find(&ids); err != nil { return 0, err } - return + return int64(len(ids)), nil } // ___________ __________ diff --git a/models/org_team_test.go b/models/org_team_test.go index a81f9c074..06ab4637d 100644 --- a/models/org_team_test.go +++ b/models/org_team_test.go @@ -370,7 +370,7 @@ func TestUsersInTeamsCount(t *testing.T) { assert.Equal(t, expected, count) } - test([]int64{2}, []int64{1, 2, 3, 4}, 2) - test([]int64{1, 2, 3, 4, 5}, []int64{2, 5}, 2) - test([]int64{1, 2, 3, 4, 5}, []int64{2, 3, 5}, 3) + test([]int64{2}, []int64{1, 2, 3, 4}, 1) // only userid 2 + test([]int64{1, 2, 3, 4, 5}, []int64{2, 5}, 2) // userid 2,4 + test([]int64{1, 2, 3, 4, 5}, []int64{2, 3, 5}, 3) // userid 2,4,5 }