@@ -14,35 +14,125 @@ import (
14
14
// GetAllDepts 获取所有部门
15
15
func GetAllDepts () (ret []map [string ]interface {}, err error ) {
16
16
var (
17
- fetchChild bool = true
18
- pageSize int64 = 50
17
+ fetchChild bool = true
18
+ pageSize int64 = 50
19
+ pageToken string = ""
20
+ // DeptID lark.DepartmentIDType = "department_id"
19
21
)
20
22
21
- req := lark.GetDepartmentListReq {
22
- FetchChild : & fetchChild ,
23
- PageSize : & pageSize ,
24
- DepartmentID : "0" }
23
+ if len (config .Conf .FeiShu .DeptList ) == 0 {
24
+ req := lark.GetDepartmentListReq {
25
+ // DepartmentIDType: &DeptID,
26
+ PageToken : & pageToken ,
27
+ FetchChild : & fetchChild ,
28
+ PageSize : & pageSize ,
29
+ DepartmentID : "0" ,
30
+ }
31
+ for {
32
+ res , _ , err := InitFeiShuClient ().Contact .GetDepartmentList (context .TODO (), & req )
33
+ if err != nil {
34
+ return nil , err
35
+ }
25
36
26
- for {
27
- res , _ , err := InitFeiShuClient ().Contact .GetDepartmentList (context .TODO (), & req )
28
- if err != nil {
29
- return nil , err
37
+ for _ , dept := range res .Items {
38
+ ele := make (map [string ]interface {})
39
+ ele ["name" ] = dept .Name
40
+ ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (dept .Name )
41
+ ele ["parent_department_id" ] = dept .ParentDepartmentID
42
+ ele ["department_id" ] = dept .DepartmentID
43
+ ele ["open_department_id" ] = dept .OpenDepartmentID
44
+ ele ["leader_user_id" ] = dept .LeaderUserID
45
+ ele ["unit_ids" ] = dept .UnitIDs
46
+ ret = append (ret , ele )
47
+ }
48
+ if ! res .HasMore {
49
+ break
50
+ }
51
+ pageToken = res .PageToken
30
52
}
31
- for _ , dept := range res .Items {
32
- ele := make (map [string ]interface {})
33
- ele ["name" ] = dept .Name
34
- ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (dept .Name )
35
- ele ["parent_department_id" ] = dept .ParentDepartmentID
36
- ele ["department_id" ] = dept .DepartmentID
37
- ele ["open_department_id" ] = dept .OpenDepartmentID
38
- ele ["leader_user_id" ] = dept .LeaderUserID
39
- ele ["unit_ids" ] = dept .UnitIDs
40
- ret = append (ret , ele )
53
+ } else {
54
+ //使用dept-list来一个一个添加部门,开头为^的不添加子部门
55
+ isInDeptList := func (id string ) bool {
56
+ for _ , v := range config .Conf .FeiShu .DeptList {
57
+ if strings .HasPrefix (v , "^" ) {
58
+ v = v [1 :]
59
+ }
60
+ if id == v {
61
+ return true
62
+ }
63
+ }
64
+ return false
41
65
}
42
- if ! res .HasMore {
43
- break
66
+ dep_append_norepeat := func (ret []map [string ]interface {}, dept map [string ]interface {}) []map [string ]interface {} {
67
+ for _ , v := range ret {
68
+ if v ["open_department_id" ] == dept ["open_department_id" ] {
69
+ return ret
70
+ }
71
+ }
72
+ return append (ret , dept )
73
+ }
74
+ for _ , dep_s := range config .Conf .FeiShu .DeptList {
75
+ dept_id := dep_s
76
+ no_add_children := false
77
+ if strings .HasPrefix (dep_s , "^" ) {
78
+ no_add_children = true
79
+ dept_id = dep_s [1 :]
80
+ }
81
+ req := lark.GetDepartmentReq {
82
+ DepartmentID : dept_id ,
83
+ }
84
+ res , _ , err := InitFeiShuClient ().Contact .GetDepartment (context .TODO (), & req )
85
+ if err != nil {
86
+ return nil , err
87
+ }
88
+ ele := make (map [string ]interface {})
89
+
90
+ ele ["name" ] = res .Department .Name
91
+ ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (res .Department .Name )
92
+ if isInDeptList (res .Department .ParentDepartmentID ) {
93
+ ele ["parent_department_id" ] = res .Department .ParentDepartmentID
94
+ } else {
95
+ ele ["parent_department_id" ] = "0"
96
+ }
97
+ ele ["department_id" ] = res .Department .DepartmentID
98
+ ele ["open_department_id" ] = res .Department .OpenDepartmentID
99
+ ele ["leader_user_id" ] = res .Department .LeaderUserID
100
+ ele ["unit_ids" ] = res .Department .UnitIDs
101
+ ret = dep_append_norepeat (ret , ele )
102
+
103
+ if ! no_add_children {
104
+ pageToken = ""
105
+ req := lark.GetDepartmentListReq {
106
+ // DepartmentIDType: &DeptID,
107
+ PageToken : & pageToken ,
108
+ FetchChild : & fetchChild ,
109
+ PageSize : & pageSize ,
110
+ DepartmentID : dept_id ,
111
+ }
112
+ for {
113
+ res , _ , err := InitFeiShuClient ().Contact .GetDepartmentList (context .TODO (), & req )
114
+ if err != nil {
115
+ return nil , err
116
+ }
117
+
118
+ for _ , dept := range res .Items {
119
+ ele := make (map [string ]interface {})
120
+ ele ["name" ] = dept .Name
121
+ ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (dept .Name )
122
+ ele ["parent_department_id" ] = dept .ParentDepartmentID
123
+ ele ["department_id" ] = dept .DepartmentID
124
+ ele ["open_department_id" ] = dept .OpenDepartmentID
125
+ ele ["leader_user_id" ] = dept .LeaderUserID
126
+ ele ["unit_ids" ] = dept .UnitIDs
127
+ ret = dep_append_norepeat (ret , ele )
128
+ }
129
+ if ! res .HasMore {
130
+ break
131
+ }
132
+ pageToken = res .PageToken
133
+ }
134
+ }
44
135
}
45
- req .PageToken = & res .PageToken
46
136
}
47
137
return
48
138
}
@@ -51,23 +141,26 @@ func GetAllDepts() (ret []map[string]interface{}, err error) {
51
141
// GetAllUsers 获取所有员工信息
52
142
func GetAllUsers () (ret []map [string ]interface {}, err error ) {
53
143
var (
54
- pageSize int64 = 50
144
+ pageSize int64 = 50
145
+ pageToken string = ""
146
+ // deptidtype lark.DepartmentIDType = "department_id"
55
147
)
56
148
depts , err := GetAllDepts ()
57
149
if err != nil {
58
150
return nil , err
59
151
}
60
152
61
153
deptids := make ([]string , 0 )
62
- deptids = append (deptids , "0" ) // 0 代表根部门
154
+ // deptids = append(deptids, "0")
63
155
for _ , dept := range depts {
64
156
deptids = append (deptids , dept ["open_department_id" ].(string ))
65
157
}
66
158
67
159
for _ , deptid := range deptids {
68
160
req := lark.GetUserListReq {
69
- PageSize : & pageSize ,
70
- PageToken : new (string ),
161
+ PageSize : & pageSize ,
162
+ PageToken : & pageToken ,
163
+ // DepartmentIDType: &deptidtype,
71
164
DepartmentID : deptid ,
72
165
}
73
166
for {
@@ -112,7 +205,7 @@ func GetAllUsers() (ret []map[string]interface{}, err error) {
112
205
if ! res .HasMore {
113
206
break
114
207
}
115
- req . PageToken = & res .PageToken
208
+ pageToken = res .PageToken
116
209
}
117
210
}
118
211
return
0 commit comments