forked from lightningminers/go-dingtalk
/
open_api_department.go
190 lines (170 loc) · 5.48 KB
/
open_api_department.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
package dingtalk
import (
"fmt"
"net/url"
)
type SubDepartmentListResponse struct {
OpenAPIResponse
SubDeptIdList []int
}
type DepartmentListResponse struct {
OpenAPIResponse
Department []Department
}
type Department struct {
Id int
Name string
ParentId int
CreateDeptGroup bool
AutoAddUser bool
}
type DepartmentDetailResponse struct {
OpenAPIResponse
Id int
Name string
Order int
ParentId int
CreateDeptGroup bool
AutoAddUser bool
DeptHiding bool
DeptPerimits string
UserPerimits string
OuterDept bool
OuterPermitDepts string
OuterPermitUsers string
OrgDeptOwner string
DeptManagerUserIdList string
SourceIdentifier string
}
type DepartmentCreateResponse struct {
OpenAPIResponse
Id int
}
type DepartmentCreateRequest struct {
Name string `json:"name"`
ParentId string `json:"parentid"`
Order string `json:"order,omitempty"`
CreateDeptGroup bool `json:"createDeptGroup,omitempty"`
DeptHiding bool `json:"deptHiding,omitempty"`
DeptPerimits string `json:"deptPerimits,omitempty"`
UserPerimits string `json:"userPerimits,omitempty"`
OuterDept string `json:"outerDept,omitempty"`
OuterPermitDepts string `json:"outerPermitDepts,omitempty"`
OuterPermitUsers string `json:"outerPermitUsers,omitempty"`
SourceIdentifier string `json:"sourceIdentifier,omitempty"`
}
type DepartmentUpdateResponse struct {
OpenAPIResponse
Id int
}
type DepartmentUpdateRequest struct {
Lang string `json:"lang,omitempty"`
Name string `json:"name,omitempty"`
ParentId string `json:"parentid,omitempty"`
Order string `json:"order,omitempty"`
Id string `json:"id"`
CreateDeptGroup bool `json:"createDeptGroup,omitempty"`
AutoAddUser bool `json:"autoAddUser,omitempty"`
DeptManagerUseridList string `json:"deptManagerUseridList,omitempty"`
DeptHiding bool `json:"deptHiding,omitempty"`
DeptPerimits string `json:"deptPerimits,omitempty"`
UserPerimits string `json:"userPerimits,omitempty"`
OuterDept string `json:"outerDept,omitempty"`
OuterPermitDepts string `json:"outerPermitDepts,omitempty"`
OuterPermitUsers string `json:"outerPermitUsers,omitempty"`
OrgDeptOwner string `json:"orgDeptOwner,omitempty"`
SourceIdentifier string `json:"sourceIdentifier,omitempty"`
}
type DepartmentDeleteResponse struct {
OpenAPIResponse
}
type DepartmentListParentDeptsByDeptResponse struct {
OpenAPIResponse
ParentIds []int `json:"parentIds"`
}
type DepartmentListParentDeptsResponse struct {
OpenAPIResponse
ParentIds interface{} `json:"dep"`
}
// 获取子部门Id列表
func (dtc *DingTalkClient) SubDepartmentList(id interface{}) (SubDepartmentListResponse, error) {
var data SubDepartmentListResponse
params := url.Values{}
if id != nil {
if v, ok := id.(string); ok {
params.Add("id", v)
}
}
err := dtc.httpRPC("department/list_ids", params, nil, &data)
return data, err
}
// 获取部门id列表
func (dtc *DingTalkClient) DepartmentList(id interface{}, lang interface{}) (DepartmentListResponse, error) {
var data DepartmentListResponse
params := url.Values{}
if id != nil {
if v, ok := id.(string); ok {
params.Add("id", v)
}
}
if lang != nil {
if v, ok := lang.(string); ok {
params.Add("lang", v)
}
}
err := dtc.httpRPC("department/list", params, nil, &data)
return data, err
}
// 获取部门详情
func (dtc *DingTalkClient) DepartmentDetail(id interface{}, lang interface{}) (DepartmentDetailResponse, error) {
var data DepartmentDetailResponse
params := url.Values{}
if id != nil {
if v, ok := id.(string); ok {
params.Add("id", v)
}
}
if lang != nil {
if v, ok := lang.(string); ok {
params.Add("lang", v)
}
}
err := dtc.httpRPC("department/get", params, nil, &data)
return data, err
}
// 创建部门
func (dtc *DingTalkClient) DepartmentCreate(info *DepartmentCreateRequest) (DepartmentCreateResponse, error) {
var data DepartmentCreateResponse
err := dtc.httpRPC("department/create", nil, info, &data)
return data, err
}
// 更新部门
func (dtc *DingTalkClient) DepartmentUpdate(info *DepartmentUpdateRequest) (DepartmentUpdateResponse, error) {
var data DepartmentUpdateResponse
err := dtc.httpRPC("department/update", nil, info, &data)
return data, err
}
// 删除部门
func (dtc *DingTalkClient) DepartmentDelete(id int) (DepartmentDeleteResponse, error) {
var data DepartmentDeleteResponse
params := url.Values{}
params.Add("id", fmt.Sprintf("%d", id))
err := dtc.httpRPC("department/delete", params, nil, &data)
return data, err
}
// 查询部门的所有上级父部门路径
func (dtc *DingTalkClient) DepartmentListParentDeptsByDept(id int) (DepartmentListParentDeptsByDeptResponse, error) {
var data DepartmentListParentDeptsByDeptResponse
params := url.Values{}
params.Add("id", fmt.Sprintf("%d", id))
err := dtc.httpRPC("department/list_parent_depts_by_dept", params, nil, &data)
return data, err
}
// 查询指定用户的所有上级父部门路径
func (dtc *DingTalkClient) DepartmentListParentDepts(userId string) (DepartmentListParentDeptsResponse, error) {
var data DepartmentListParentDeptsResponse
params := url.Values{}
params.Add("userId", userId)
err := dtc.httpRPC("department/list_parent_depts", params, nil, &data)
return data, err
}