npm钉钉脚手架,支持考勤信息获取
钉钉官方并未提供nodejs包,第一次调用接口的时候非常费事,而且尝试去寻找相关的钉钉考勤数据模块的时候只找到了一些消息啊,只能办公啊,免登啊之类的模块,有关考勤数据的似乎没有
关于dd的npm包中一个有较全面,但是这个包似乎是egg的模块,我没有尝试单独使用
不得不说钉钉小程序的服务端api真的恶心,为了获得考勤数据要拿access_tonken然后再拿员工id列表,然后再拿员工id列表对应的员工姓名和部门,然后才能拿员工考勤数据,这个考勤数据还有限制,不能查询半年以前的,一次获取的结果还有限制,真的让人很无语,而且服务端还不支持websocket,也就是说每次查询还得
使用方法
需要拿考勤信息的人请注意因为拿下来的数据要放到内存当中处理,所以这个脚手架需要一点启动时间(100人大概3秒左右)才能拿到数据,3秒后随便调用考勤信息
如果仅仅是需要获取用户/部门信息,发送工作消息,则不需要准备时间(但是这这包会自动准备到用户id/姓名部门的对应表阶段,)
安装
npm install ddinit
构建并使用,后三位选填,不填的话不会缓存周/月考勤数据,最后一位是每日考勤数据的更新速度,单位是毫秒
import DDdata from 'ddinit'
const dd = new DDdata('这里换成你的appkey', '这里换成你的appsecret', 4, 2, 500)
尽管这个包是用es6,7语法书写的,它仍然支持commonjs调用,这意味着你可以再例如koa2这种较为先进的node服务中使用,也可以在express中使用
考勤api
我猜你很忙,所以这里先展示核心api,另外,所有的api参数都是选填,不传参数可以使用
构建时传入周/月数据缓存大小大于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)
npm钉钉脚手架,支持考勤信息获取的更多相关文章
- WinForm调用钉钉获取考勤结果
关注点: 1.钉钉AccessToken的获取和防止过期 2.使用TPL并行编程调用钉钉接口 需求详解 公司前台有个大屏,领导想显示全部员工的考勤结果统计情况和车间的实时监控视频,还有车间的看板.简单 ...
- 钉钉开发入门,微应用识别用户身份,获取用户免登授权码code,获取用户userid,获取用户详细信息
最近有个需求,在钉钉内,点击微应用,获取用户身份,根据获取到的用户身份去企业内部的用户中心做校验,校验通过,相关子系统直接登陆; 就是在获取这个用户身份的时候,网上的资料七零八落的,找的人烦躁的很,所 ...
- 钉钉开发第三方H5微应用入门详细教程[ISV][免登流程][授权码][HTTP回调推送][识别用户身份][获取用户信息]
转载请注明原文地址:https://www.cnblogs.com/applerosa/p/11509512.html (by lnexin@aliyun.com 世间草木) 此教程注意点: 适用于第 ...
- 使用python对mysql主从进行监控,并调用钉钉发送报警信息
1.编写python的监控脚本 A.通过获取mysql库中的状态值来判断这个mysql主从状态是否正常 B.进行两个状态值的判断 C.进行调取钉钉机器人,发送消息 2.设置定时任务进行脚本运行 cro ...
- 使用python uiautomation从钉钉网页版提取公司所有联系人信息
之前写了一个提取QQ群里所有人信息的脚本 https://www.cnblogs.com/Yinkaisheng/p/5114932.html 今天写一个从钉钉网页版提取公司所有人通讯录的脚本,,本脚 ...
- .NET平台下,钉钉微应用开发之:获取userid
工作需求,开发钉钉微应用和小程序,之前有接触过支付宝小程序和生活号的开发,流程没有很大的差别,这里记录下我用ASP.NET MVC实现钉钉微应用的开发,并实现获取用户的userid.小弟我技术有限,本 ...
- springmvc请求参数异常统一处理,结合钉钉报告信息定位bug位置
参考之前一篇博客:springmvc请求参数异常统一处理 1.ExceptionHandlerController package com.oy.controller; import java.tex ...
- 使用 Prometheus Alertmanager 模块发送 Doris 异常信息至钉钉报警群
基础环境 1.Prometheus 版本:2.22.2 下载地址: https://github.com/prometheus/prometheus/releases/download/v2.22.2 ...
- 钉钉开发获取APPKEY, APPSECRET, CorpId和SSOSecret
首先用自己的钉钉账号注册一个企业: https://oa.dingtalk.com/index.htm 一.获取应用APPKEY及APPSECRET方法: 1.登录钉钉开放平台创建应用: https: ...
随机推荐
- 个人永久性免费-Excel催化剂功能第36波-新增序列函数用于生成规律性的循环重复或间隔序列
啃过Excel函数的表哥表姐们,一定对函数的嵌套.数组公式等高级的应用有很深的体会,威力是大,但也烧死不少脑细胞,不少人就在这样的绕函数中光荣地牺牲了,走向从入门到放弃.Excel催化剂的创立,初衷就 ...
- 我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc
我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3cp8ng15g94wc
- C#3.0新增功能07 查询表达式
连载目录 [已更新最新开发文章,点击查看详细] 查询是什么及其作用是什么 查询是一组指令,描述要从给定数据源(或源)检索的数据以及返回的数据应具有的形状和组织. 查询与它生成的结果不同. 通常情 ...
- C#3.0新增功能09 LINQ 标准查询运算符 03 按执行方式的分类
连载目录 [已更新最新开发文章,点击查看详细] 标准查询运算符方法的 LINQ to Objects 实现主要通过两种方法之一执行:立即执行和延迟执行.使用延迟执行的查询运算符可以进一步分为两种 ...
- [leetcode] 11. Container With Most Water (medium)
原题链接 以Y坐标长度作为木桶边界,以X坐标差为桶底,找出可装多少水. 思路: 前后遍历. Runtime: 5 ms, faster than 95.28% of Java class Soluti ...
- HTML&CSS兼容性总结
对目前所遇见的兼容性笔记进行整理分类: 不兼容浏览器 问题概要 问题描述 解决方法 IE6,IE7 3px 并列一行的元素左侧第一个元素没浮动,第二个元素左浮动,则两个元素之间会多3像素空隙 并在一 ...
- MyBatis在Spring环境下的事务管理
MyBatis的设计思想很简单,可以看做是对JDBC的一次封装,并提供强大的动态SQL映射功能.但是由于它本身也有一些缓存.事务管理等功能,所以实际使用中还是会碰到一些问题--另外,最近接触了JFin ...
- 工业物联网网关在线探测之TraceRoute
佰马工业物联网网关BMG500在线探测通常有Ping.DNS.TraceRoute三种技术方式,这三种方式的区别与联系是什么?本文着重介绍工业物联网网关在线探测的工作原理,以图文形式介绍无线网关在线探 ...
- 虚拟机ip地址从ipv6改为ipv4相关问题
有一次打开虚拟机时,Xshell连接不上虚拟机,就很奇怪,然后查看虚拟机的ip地址,发现显示为ipv6格式,然后总结了两种情况如下: 第一种情况: onboot为no时显示ipv6地址, 改为yes即 ...
- hdoj 1753 (Java)
刚刚开始用Java,代码难免不够简洁. import java.math.BigDecimal; import java.util.Scanner; public class Main { publi ...