From c832f0eef7a114bc2ee4fae22b959a9ed90e2a18 Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Wed, 7 Aug 2019 12:22:41 +0800
Subject: [PATCH] Fix approvals counting (#7757)

* fix approvals counting

* fix tests

* fmt
---
 models/org_team.go      | 9 ++++++---
 models/org_team_test.go | 6 +++---
 2 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/models/org_team.go b/models/org_team.go
index 1786376d02..799716679c 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 a81f9c0749..06ab4637d8 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
 }