以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  钉钉接口  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=173464)

--  作者:BG小白
--  发布时间:2021/12/1 2:04:00
--  钉钉接口
Dim client As DingTalk.Api.IDingTalkClient = New DingTalk.Api.DefaultDingTalkClient("https://oapi.dingtalk.com/department/list")
Dim req As DingTalk.Api.Request.OapiDepartmentListRequest = New DingTalk.Api.Request.OapiDepartmentListRequest()
req.SetHttpMethod("GET")
Dim rsp As DingTalk.Api.Response.OapiDepartmentListResponse = client.Execute(req, access_token)
DataTables("表B").DataRows.Clear
For i As Integer = 0 To rsp.Department.count -1 
Dim r As Row
r = Tables("表B").AddNew
r("第一列") = rsp.Department.Item(I).id
r("第二列") = rsp.Department.Item(I).name
r("第三列") = rsp.Department.Item(I).Parentid
Next
DataTables("表B").Save
MessageBox.Show("读取完成")

上面的是用钉钉提供的sdk获取到的所有部门信息

Dim ul As String = "https://oapi.dingtalk.com/department/list?access_token={0}"
Dim hc As New HttpClient(CExp(ul,Functions.Execute("access_token")))
Dim jo As JObject = JObject.Parse(hc.GetData())
If jo("errcode") = "0" Then
    MessageBox.Show("成功")
Else
    MessageBox.Show(jo.ToString)
End If

怎么用上面这种获取所有部门信息呢?红色的部分不知道该怎么实现?获取到的只有根部门,不是所有部门,要获得所有部门必须提供父部门dept_id
[此贴子已经被作者于2021/12/1 2:09:40编辑过]

--  作者:z769036165
--  发布时间:2021/12/1 8:28:00
--  
建立一个内部函数-同步部门,用递归循环调用
Functions.Execute("同步部门",1)

同步部门:
Dim id As Integer = args(0)
Dim ur As String = "https://oapi.dingtalk.com/topapi/v2/department/listsub"
Dim hc As New HttpClient(ur)
hc.FormData.Add("access_token",Functions.Execute("access_token"))
hc.FormData.Add("dept_id",id)
hc.FormData.Add("language","zh_CN")
Dim jo As JObject = JObject.Parse(hc.GetData())
Dim dt As DataTable = DataTables("dept")
Dim w As DataRow
If jo("errcode") = "0" Then
    For Each jt As JToken In jo("result")
            w = dt.Find("dept_id = \'"& jt("dept_id").tostring &"\'")
            If w IsNot Nothing Then
                w("name") = jt("name").tostring
                w("parent_id") = jt("parent_id").tostring
                Functions.Execute("同步部门",jt("dept_id").tostring)
            Else
                w = dt.AddNew
                w("dept_id") = jt("dept_id").tostring
                w("name") = jt("name").tostring
                w("parent_id") = jt("parent_id").tostring
                Functions.Execute("同步部门",jt("dept_id").tostring)
            End If
    Next
else
    Output.show(jo("errmsg").Tostring)
End If
[此贴子已经被作者于2021/12/1 8:30:01编辑过]