釘釘官方並未提供nodejs包,第一次調用接口的時候很是費事,並且嘗試去尋找相關的釘釘考勤數據模塊的時候只找到了一些消息啊,只能辦公啊,免登啊之類的模塊,有關考勤數據的彷佛沒有 關於dd的npm包中一個有較全面,可是這個包彷佛是egg的模塊,我沒有嘗試單獨使用javascript
不得不說釘釘小程序的服務端api真的噁心,爲了得到考勤數據要拿access_tonken而後再拿員工id列表,而後再拿員工id列表對應的員工姓名和部門,而後才能拿員工考勤數據,這個考勤數據還有限制,不能查詢半年之前的,一次獲取的結果還有限制,真的讓人很無語,並且服務端還不支持websocket,也就是說每次查詢還得 ## 使用方法 須要拿考勤信息的人請注意由於拿下來的數據要放到內存當中處理,因此這個腳手架須要一點啓動時間(100人大概3秒左右)才能拿到數據,3秒後隨便調用考勤信息 若是僅僅是須要獲取用戶/部門信息,發送工做消息,則不須要準備時間(可是這這包會自動準備到用戶id/姓名部門的對應表階段,)java
安裝node
npm install ddinitgit
構建並使用,後三位選填,不填的話不會緩存周/月考勤數據,最後一位是每日考勤數據的更新速度,單位是毫秒github
import DDdata from 'ddinit'
const dd = new DDdata('這裏換成你的appkey', '這裏換成你的appsecret', 4, 2, 500)
複製代碼
儘管這個包是用es6,7語法書寫的,它仍然支持commonjs調用,這意味着你能夠再例如koa2這種較爲先進的node服務中使用,也能夠在express中使用web
詳細使用能夠參照這裏的示例express
我猜你很忙,因此這裏先展現核心api,另外,全部的api參數都是選填,不傳參數可使用npm
構建時傳入周/月數據緩存大小大於1時,會把請求結果暫存在內存中,方便開發和後續調用,使用時,直接**dd.moondata[0]**便可拿到緩存的上月數據,**dd.moondata[1]便可拿到緩存的上2月數據,以此類推,使用dd.weekdata[0]**獲取緩存的上週的數據小程序
**dd.daliyData[]**返回緩存的每日數據 **dd.data.userIdList[]**返回在職員工id列表,包含(2,試用期;3,正式;5,待離職;-1,無狀態) **dd.data.employee[]**返回在職員工花名冊,包含(id,姓名,部門,職位)信息
dd.cooldata.dimissionList 返回離職員工id列表 dd.cooldata.employee 返回離職員工花名冊,包含(id,姓名,部門,職位)信息
月考勤數據 dd.getMoonData() 傳入參數(
[
{
"name": "張三",
"userId": "234567898765456",
"branch": "法律部",
"checkType": "OffDuty",
"timeResult": "Normal",
"workDay": "0",
"sortTime": 1561111490000,
"baseCheckTime": 1561111200000,
"locationResult": "Normal",
"userCheckTime": "6/21/2019, 6:04:50 PM"
},
{
"name": "代成偉",
"userId": "234567898765456",
"branch": "法律部",
"checkType": "OffDuty",
"timeResult": "Normal",
"workDay": "0",
"sortTime": 1560506875000,
"baseCheckTime": 1560506400000,
"locationResult": "Normal",
"userCheckTime": "6/14/2019, 6:07:55 PM"
},
..more
複製代碼
sortTime是Unix時間戳,單位爲毫秒,能夠以此與baseCheckTime計算遲到時間或先到時間,加班時間等,workDay爲節假日斷定,0表示工做日,1-3法定節假日,67分別表明週六和週日,其他返回值參考釘釘文檔
週考勤數據 dd.getWeekData() 傳入參數(
返回類型同上
每日考勤數據,這裏根據構建時傳入的更新速度自動更新dd.gettoDayData() 傳入參數(
返回類型同上
獲取任意兩個時間之間的用戶考勤信息,最長間隔7天dd.getKaoqingLists() 傳入參數(
返回類型同上
這部分參考了dd-sdk模塊
dd.AccessToken
複製代碼
dd.getUserId(code: string, token?: string)
複製代碼
dd.getUser(userid: string, token?: string)
複製代碼
dd.childDepartment(id: number, token?: string)
複製代碼
dd.department(id: number, token?: string)
複製代碼
dd.departmentInfo(id: number, token?: string)
複製代碼
dd.getAllDepartment(id: number, token?: string)
複製代碼
dd.departmentListParentDepts(userId: string, token?: string)
複製代碼
dd.getOrgUserCount(onlyActive: number, token?: string)
複製代碼
dd.setWorkerMessage(data: IMessage, token?: string)
複製代碼
dd.viewWorkerMessage(data: ITask, token?: string)
複製代碼
dd.resultWorkerMessage(data: ITask, token?: string)
複製代碼
dd.createProcessInstance(data: IInstance, token?: string)
複製代碼
dd.getProcessInstance(id: string, token?: string)
複製代碼
dd.registerCallBack(data: IRegisterCallBack, token?: string)
複製代碼
dd.instanceCrypto(data: ICrypto)
複製代碼
dd.getCallBack(token?: string)
複製代碼
dd.deleteCallBack(token?: string)
複製代碼
import { authEncrypto } from "dd-sdk";
authEncrypto(accessKey: string, appSecret: string, code: string)
複製代碼