@@ -2,6 +2,7 @@ package dingtalk
2
2
3
3
import (
4
4
"fmt"
5
+ "strconv"
5
6
"strings"
6
7
7
8
"github.com/eryajf/go-ldap-admin/config"
@@ -14,16 +15,69 @@ import (
14
15
func GetAllDepts () (ret []map [string ]interface {}, err error ) {
15
16
depts , err := InitDingTalkClient ().FetchDeptList (1 , true , "zh_CN" )
16
17
if err != nil {
17
- return ret , err
18
- }
19
- ret = make ([]map [string ]interface {}, 0 )
20
- for _ , dept := range depts .Dept {
21
- ele := make (map [string ]interface {})
22
- ele ["id" ] = dept .Id
23
- ele ["name" ] = dept .Name
24
- ele ["parentid" ] = dept .ParentId
25
- ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (dept .Name )
26
- ret = append (ret , ele )
18
+ return ret , err
19
+ }
20
+ if len (config .Conf .DingTalk .DeptList ) == 0 {
21
+
22
+ ret = make ([]map [string ]interface {}, 0 )
23
+ for _ , dept := range depts .Dept {
24
+ ele := make (map [string ]interface {})
25
+ ele ["id" ] = dept .Id
26
+ ele ["name" ] = dept .Name
27
+ ele ["parentid" ] = dept .ParentId
28
+ ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (dept .Name )
29
+ ret = append (ret , ele )
30
+ }
31
+ } else {
32
+
33
+ // 遍历配置的部门ID列表获取数据进行处理
34
+ // 从取得的所有部门列表中将配置的部门ID筛选出来再去请求其子部门过滤为1和为配置值的部门ID
35
+ ret = make ([]map [string ]interface {}, 0 )
36
+
37
+ for _ , dept := range depts .Dept {
38
+ inset := false
39
+ for _ , dep_s := range config .Conf .DingTalk .DeptList {
40
+ if strings .HasPrefix (dep_s , "^" ) {
41
+ continue
42
+ }
43
+ setdepid , _ := strconv .Atoi (dep_s )
44
+ if dept .Id == setdepid {
45
+ inset = true
46
+ break
47
+ }
48
+ }
49
+ if dept .Id == 1 || inset {
50
+ ele := make (map [string ]interface {})
51
+ ele ["id" ] = dept .Id
52
+ ele ["name" ] = dept .Name
53
+ ele ["parentid" ] = dept .ParentId
54
+ ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (dept .Name )
55
+ ret = append (ret , ele )
56
+ }
57
+ }
58
+
59
+ for _ , dep_s := range config .Conf .DingTalk .DeptList {
60
+ dept_id := dep_s
61
+
62
+ if strings .HasPrefix (dep_s , "^" ) || dept_id == "1" {
63
+ continue
64
+ }
65
+ depid , _ := strconv .Atoi (dept_id )
66
+ depts , err := InitDingTalkClient ().FetchDeptList (depid , true , "zh_CN" )
67
+
68
+ if err != nil {
69
+ return ret , err
70
+ }
71
+
72
+ for _ , dept := range depts .Dept {
73
+ ele := make (map [string ]interface {})
74
+ ele ["id" ] = dept .Id
75
+ ele ["name" ] = dept .Name
76
+ ele ["parentid" ] = dept .ParentId
77
+ ele ["custom_name_pinyin" ] = tools .ConvertToPinYin (dept .Name )
78
+ ret = append (ret , ele )
79
+ }
80
+ }
27
81
}
28
82
return
29
83
}
0 commit comments