ddinit
Version:
封装了一些常用的钉钉小程序服务端API,获取员工周期性打卡结果(每日,任意时间,上周,上月...),在/离职员工列表,获取用户/部门信息、发送工作消息、审批流等
284 lines (283 loc) • 10.5 kB
TypeScript
interface IMessage {
agent_id: number;
userid_list: string;
dept_id_list?: string;
to_all_user?: boolean;
msg: object;
}
interface ITask {
agent_id: number;
task_id: number;
}
interface IInstance {
process_code: string;
originator_user_id: string;
dept_id: number;
approvers: string;
form_component_values: any;
}
interface IRegisterCallBack {
call_back_tag: string[];
token: string;
aes_key: string;
url: string;
}
interface ICrypto {
timestamp: number;
nonce: string;
token: string;
userid: string;
encodingAESKey: string;
CorpId: string;
}
declare class DDinit {
weekdata: any[];
moondata: any[];
daliyData: any[];
holidayData: {};
data: {
userIdList: any[];
employee: any[];
};
cooldata: {
dimissionList: any[];
employee: any[];
};
private Key;
private Secret;
private AccessToken;
/**
* 构建主要参数
* @param {string} appKey
* @param {string} appSecre
* @param {number} 周数据缓存大小,默认为1,传0不缓存
* @param {number} 月数据缓存大小,默认为1,传0不缓存
*/
constructor(key: string, Secret: string, week?: number, moon?: number, speed?: number);
/**
* 启动时刷新数据
*/
refreshen(week: number, moon: number, speed: number): Promise<void>;
/**
* 不传参时,默认以最高速度获取在职员工id信息
* @param speed 获取速度
* @param Substate 员工子状态
* @param offsetis 分页值,默认从0开始
* @param sizeis 单页数据大小
* @param token 秘钥
* @returns array 离职员工列表
*/
getStatusList(Substate?: string, offsetis?: string | number, sizeis?: string | number, token?: string): Promise<any[]>;
/**
* 不传参时,默认以最高速度获取离职员工id信息
* @param speed 获取速度
* @param offsetis 分页值
* @param sizeis 单词取得数据大小
* @param token 秘钥
* @returns array 离职员工id信息
*/
getdimission(offsetis?: string | number, sizeis?: string | number, token?: string): Promise<any[]>;
/**
* 不传参时,函数默认调用在职(待离职也算)员工列表,并获取其id,姓名,职位,部门信息
* @param list 员工id列表
* @param token 秘钥
* @returns array 返回员工部门职位,姓名和id信息
*/
getemployee(list?: {
[x: string]: any;
}, token?: string): Promise<any[]>;
/**
* 不传参时,默认以3秒一次获取在职员工每日打卡结果
* @param offsetis 分页值,不传参默认以0开始
* @param limitis 分页大小,也就是每一次查询时的返回数据条数,默认为50
* @param list 员工列表,默认使用在职员工信息
* @param token 秘钥
* @returns array 返回在职员工打卡结果
*/
gettoDayData(offsetis?: number, limitis?: number, list?: any[], token?: string): Promise<any[]>;
/**
* 返回上num周的数据,不传数据默认获取上周在职员工的打卡数据(不会解析离职员工信息,返回'已离职')
* @param num 获取上num周的数据默认为1,传或不传为上周数据,传2位上第二周数据
* @param ix 暂存下标
* @param offsetis 分页值
* @param limitis 分页数据大小
* @param list 员工id:名字信息表
* @param token 秘钥
*/
getWeekData(num?: number, ix?: number, offsetis?: number, limitis?: number, list?: any[], token?: string): Promise<any[]>;
/**
* 返回上num月的数据,不传数据默认获取上月在职员工的打卡数据(不会解析离职员工信息,返回'已离职')
* @param num 获取上num月的数据,默认为1,传或不传为上月数据,传2位上第二月数据
* @param ix 暂存下标
* @param offsetis 分页值
* @param limitis 分页数据大小
* @param list 员工id:名字信息表
* @param token 秘钥
*/
getMoonData(num?: number, ix?: number, offsetis?: number, limitis?: number, list?: any[], token?: string): Promise<any[]>;
/**
* 获取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 秘钥
*/
getKaoqingLists(time1: string, time2: string, useridList?: any[], employeeList?: any[], offsetis?: number, limitis?: number, apiUrl?: string, start?: number, token?: string): Promise<any[]>;
/**
* 立即获取秘钥并保存在对象中
*/
getToken(): Promise<any>;
/**
* 每(两小时-5s)获取一次token,对象被创建时即被引用
*/
getAccessTonken(): Promise<void>;
/**
* 获取用户ID
* @param code 授权码
* @param token 秘钥
*/
getUserId(code: string, token?: string): Promise<any>;
/**
* 获取用户信息
* @param userid 用户id
* @param token 秘钥
*/
getUser(userid: string, token?: string): Promise<any>;
/**
* 获取子部门列表
* @param id 父部门id。根部门传1
* @param token 秘钥
*/
childDepartment(id: number, token?: string): Promise<any>;
/**
* 获取部门列表
* @param id 父部门id(如果不传,默认部门为根部门,根部门ID为1)
* @param token 秘钥
*/
department(id: number, token?: string): Promise<any>;
/**
* 查询部门的所有上级父部门路径
* @param id 希望查询的部门的id,包含查询的部门本身
* @param token 秘钥
*/
getAllDepartment(id: number, token?: string): Promise<any>;
/**
* 查询指定用户的所有上级父部门路径
* @param userId 希望查询的用户的id
* @param token 秘钥
*/
departmentListParentDepts(userId: string, token?: string): Promise<any>;
/**
* 获取企业员工人数
* @param onlyActive 0:包含未激活钉钉的人员数量 1:不包含未激活钉钉的人员数量
* @param token 秘钥
*/
getOrgUserCount(onlyActive: number, token?: string): Promise<any>;
/**
* 发送工作消息
* @param data IMessage {
* @param agent_id: number; // 应用agent_id,
* @param userid_list: string; // 可选(userid_list,dept_id_list, to_all_user必须有一个不能为空) 最大列表长度:100
* @param dept_id_list?: string; // 接收者的部门id列表, 最大长度20
* @param to_all_user?: boolean; // 是否发送给企业全部用户
* @param msg: object; // json对象
* }
* @param token 秘钥
*/
setWorkerMessage(data: IMessage, token?: string): Promise<any>;
/**
* 查询工作通知消息的发送进度
* @param data ITask {
* @param agent_id: number; // 应用agent_id,
* @param task_id: number; // 发送消息时钉钉返回的任务id
* }
* @param token 秘钥
*/
viewWorkerMessage(data: ITask, token?: string): Promise<any>;
/**
* 查询工作通知消息的发送结果
* @param data ITask {
* @param agent_id: number; // 应用agent_id,
* @param task_id: number; // 发送消息时钉钉返回的任务id
* }
* @param token 秘钥
*/
resultWorkerMessage(data: ITask, token?: string): Promise<any>;
/**
* 创建一个审批实例
* @param data IInstance {
* @param process_code: string; // 审批流的唯一码,process_code就在审批流编辑的页面URL中
* @param originator_user_id: string; // 审批实例发起人的userid
* @param dept_id: number; // 发起人所在的部门,如果发起人属于根部门,传-1
* @param approvers: string; // 审批人userid列表,最大列表长度:20。
* @param form_component_values: any; // 审批流表单参数
* }
* @param token 秘钥
*/
createProcessInstance(data: IInstance, token?: string): Promise<any>;
/**
* 获取审批实例
* @param id 审批实例ID
* @param token 秘钥
*/
getProcessInstance(id: string, token?: string): Promise<any>;
/**
* 注册审批回调
* @param data IRegisterCallBack{
* @param call_back_tag: string[]; 需要监听的事件类型
* @param token: 加解密需要用到的token;
* @param aes_key: 数据加密密钥。用于回调数据的加密,长度固定为43个字符,从a-z, A-Z, 0-9共62个字符中选取,您可以随机生成,ISV(服务提供商)推荐使用注册套件时填写的EncodingAESKey;
* @param url: 接收事件回调的url,必须是公网可以访问的url地址
* }
* @param token
*/
registerCallBack(data: IRegisterCallBack, token?: string): Promise<any>;
/**
* 实例化crypto
* @param token
* @param encodingAESKey
* @param CorpId
*/
instanceCrypto(data: ICrypto): {
userid: string;
msg_signature: any;
timeStamp: number;
nonce: string;
encrypt: any;
};
/**
* 获取事件回调
* @param token 秘钥
*/
getCallBack(token?: string): Promise<any>;
/**
* 删除回调注册事件
* @param token 秘钥
*/
deleteCallBack(token?: string): Promise<any>;
job(speed?: number): Promise<void>;
getDoubleIndex: (arr: {
[x: string]: any;
}, start: number, end: number) => any[];
getHoliday(year?: number): Promise<{}>;
destroy(): any;
}
/**
* 授权登录
* @param accessKey 扫码登录应用的appId
* @param appSecret 扫码登录应用的appSecret
* @param code 临时授权码
*/
export declare function authEncrypto(accessKey: string, appSecret: string, code: string): Promise<any>;
/**
* 发送钉钉通知 消息类型 https://open-doc.dingtalk.com/microapp/serverapi2/qf2nxq
* @param Token
* @param msg
*/
export declare function ddNotification(Token: string, msg: any): Promise<any>;
export default DDinit;