釘釘npm腳手架,支持考勤信息獲取

釘釘官方並未提供nodejs包,第一次調用接口的時候很是費事,並且嘗試去尋找相關的釘釘考勤數據模塊的時候只找到了一些消息啊,只能辦公啊,免登啊之類的模塊,有關考勤數據的彷佛沒有 關於dd的npm包中一個有較全面,可是這個包彷佛是egg的模塊,我沒有嘗試單獨使用javascript

不得不說釘釘小程序的服務端api真的噁心,爲了得到考勤數據要拿access_tonken而後再拿員工id列表,而後再拿員工id列表對應的員工姓名和部門,而後才能拿員工考勤數據,這個考勤數據還有限制,不能查詢半年之前的,一次獲取的結果還有限制,真的讓人很無語,並且服務端還不支持websocket,也就是說每次查詢還得 ## 使用方法 須要拿考勤信息的人請注意由於拿下來的數據要放到內存當中處理,因此這個腳手架須要一點啓動時間(100人大概3秒左右)才能拿到數據,3秒後隨便調用考勤信息 若是僅僅是須要獲取用戶/部門信息,發送工做消息,則不須要準備時間(可是這這包會自動準備到用戶id/姓名部門的對應表階段,)java

安裝node

npm install ddinitgit

以爲好用的話麻煩給個star吧,感激涕零es6

構建並使用,後三位選填,不填的話不會緩存周/月考勤數據,最後一位是每日考勤數據的更新速度,單位是毫秒github

  import DDdata from 'ddinit'
  const dd =  new DDdata('這裏換成你的appkey''這裏換成你的appsecret'42500)
複製代碼

儘管這個包是用es6,7語法書寫的,它仍然支持commonjs調用,這意味着你能夠再例如koa2這種較爲先進的node服務中使用,也能夠在express中使用web

詳細使用能夠參照這裏的示例express

考勤api

我猜你很忙,因此這裏先展現核心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() 傳入參數(

  • 返回上num月的數據,不傳數據默認獲取上月在職員工的打卡數據(不會解析離職員工信息,返回'已離職')
  • @param num 獲取上num月的數據,默認爲1,傳或不傳爲上月數據,傳2位上第二月數據,以此類推,最多查詢至半年之前
  • @param ix 暫存下標
  • @param offsetis 分頁值
  • @param limitis 分頁數據大小
  • @param list 員工id:名字信息表
  • @param token 祕鑰 ) 返回示例
[
  {
    "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() 傳入參數(

  • 返回上num周的數據,不傳數據默認獲取上週在職員工的打卡數據(不會解析離職員工信息,返回'已離職')
  • @param num 獲取上num周的數據默認爲1,傳或不傳爲上週數據,傳2位上第二週數據
  • @param ix 暫存下標
  • @param offsetis 分頁值
  • @param limitis 分頁數據大小
  • @param list 員工id:名字信息表
  • @param token 祕鑰 )

返回類型同上

每日考勤數據,這裏根據構建時傳入的更新速度自動更新dd.gettoDayData() 傳入參數(

  • 不傳參時,默認以3秒一次獲取在職員工每日打卡結果
  • @param offsetis 分頁值,不傳參默認以0開始
  • @param limitis 分頁大小,也就是每一次查詢時的返回數據條數,默認爲50
  • @param list 員工列表,默認使用在職員工信息
  • @param token 祕鑰
  • @returns array 返回在職員工打卡結果 )

返回類型同上

獲取任意兩個時間之間的用戶考勤信息,最長間隔7天dd.getKaoqingLists() 傳入參數(

  • 獲取time1和time2之間的用戶考勤信息,time1和time2最長間隔7天
  • @param useridList 用戶id列表,查詢考勤數據必填選項
  • @param employeeList 用戶id與姓名,部門,職位等信息表,格式爲數組對象[{name:name,branch:branch}]
  • @param time1 查詢所需的開始時間
  • @param time2 查詢所需的結束時間
  • @param offsetis 分頁值,默認從0開始
  • @param limitis 單頁數據大小,默認爲50
  • @param apiUrl 請求的url這裏彷佛是固定的
  • @param start 用戶id列表的查詢起始值,默認從0開始
  • @param token 祕鑰 )

返回類型同上

小程序相關api

這部分參考了dd-sdk模塊

獲取access_token

dd.AccessToken
複製代碼

獲取用戶ID

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)
複製代碼

註冊事件回調時要實例化crypto

dd.instanceCrypto(data: ICrypto)
複製代碼

獲取事件回調

dd.getCallBack(token?: string)
複製代碼

刪除回調註冊事件

dd.deleteCallBack(token?: string)
複製代碼

受權登陸(H5微應用/第三方應用)

import { authEncrypto } from "dd-sdk";

authEncrypto(accessKey: string, appSecret: string, code: string)
複製代碼
相關文章
相關標籤/搜索