企业微信远程打卡(企业微信怎么虚拟位置打卡)
需求:
对接企业微信的打卡记录到系统中;
前期准备:
先实现企业微信成员id的绑定,才能实现对应上打卡记录对应的是哪个白码账号,参考系统账号绑定企业微信成员id ,本文使用的接口请参考:
    https://work.weixin.qq.com/api/doc/90000/90135/90262
实现步骤:
1. 登录企业微信管理后台,在应用管理找到打卡应用,点击“API”,获取一下Secret(需要到企业微信客户端查看);
2. 再到我的企业页面,复制下面的企业ID;
3. 回到白码低代码开发平台的工作台,创建一个数据表,用于存储打卡记录,字段如下,分别对应接口的多个参数;
4. 新建一个API,使用企业微信(内部应用)的模板,选择基础,填写上刚才复制的企业id和secret;
然后配置好输入输出参数,如下图所示;
5. 编写API代码,代码如下;
async function run($input, $output, $modules = modules) {
    const wxworkApi = $modules.wxworkApi;
    let userlist = $input.userlist;
    let useridlist = userlist.map(v=>v["608a51b617f01720c7525723"]);//用户表企业微信成员id字段field
    let data = {
        "opencheckindatatype": 3,
        "starttime": new Date($input.start_date).getTime() / 1000,
        "endtime": new Date($input.end_date).getTime() / 1000,
        "useridlist": useridlist.join(',')
    };
    //$output.data = data;
    let res = await wxworkApi.request({
        method: "post",
        url: "checkin/getcheckindata",
        data
    });
    $output.checkindata = res.checkindata;
}6. 新建一个功能,用于获取打卡记录并录入到系统中;
①第一步使用获取集合的步骤,获取用户列表,不需要设置筛选条件,即可获取到全部用户;
②第二步使用API的步骤,调用前面做好的API,获取打卡记录;
③第三步使用编程,用于处理APi返回的打卡记录数据;
async function runProcess($model = model, $plugin = plugin, $params) {
    let list = $params.list;
    await $model.log(list.length);
    for (let i = 0; i < list.length; i  ) {
        let userid = list[i]["userid"];//成员id
        let checkin_time = list[i]["checkin_time"];//打卡时间戳
        let date = new Date(checkin_time*1000);
        let YY = date.getFullYear();
        let MM = (date.getMonth()   1 < 10 ? '0'   (date.getMonth()   1) : date.getMonth()   1);
        let DD = (date.getDate()   1 <= 10 ? '0'   date.getDate() : date.getDate());
        let hh = (date.getHours()   1 <= 10 ? '0'   date.getHours() : date.getHours());
        let mm = date.getMinutes()   1  0 ? user[0]._id : "";
        await $plugin.data.saveData("608a540fdec57120cee5bb17",{
            "608a545fdec57120cee5bb21":list[i]["exception_type"],//异常类型
            "608a54886d8eaf20d45d65cb":list[i]["location_title"],//打卡地点title
            "608a548019c20e20c8dc5756":datestr,
            "608a54c06d8eaf20d45d65d1":time,
            "608a541f17f01720c752574f":user,
            "608a545717f01720c7525756":list[i]["checkin_type"]//打卡类型
        });
    }
}7. 最后将该功能发布到线上,再创建一个定时任务来调用这个功能,周期设定如下图;
实现效果:
 赞 (0)
                        
