钉钉官方并未提供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)
复制代码