吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3899|回复: 7
收起左侧

[其他原创] 钉钉开放平台基础功能PHP源码 企业内部应用 html免密登录 考勤报表

[复制链接]
勤勤学长 发表于 2020-1-10 15:15
本帖最后由 勤勤学长 于 2020-1-10 15:18 编辑

小弟暂时负责某个公司的考核和工资计算,我只想知道当月有多少天,考勤多少天,迟到多少分钟,请假多少天。输入该员工的基础工资,按照公司的工资计算公式就可以一目了然谁法多少工资了。
钉钉自带考勤报表稍稍有点复杂,我不需要这么多信息。
项目已搁浅,就到当前文章的进度,原因是,可以,但没必要,就只有几个人的公司,在手机钉钉的月统计就可以直接看到了,还不如直接在弄个管理系统,手动收入这些值还快点,甚至可以有易语言写个文本生成工具,计算好之后,生成指定的文本格式逐一发送。

没什么技术含量,逻辑对了按照官方提供的api接口就可以获取到对应的数据了。
进入工作台,自建应用,我选的是h5企业内部应用。
image.png
image.png

先找到appsecret和appkey 才能获取access_token
官方教程 https://ding-doc.dingtalk.com/doc#/serverapi2/eev437 (应该调式工具没更新,会提示缺少参数,直接用文档的url就可以了)


由于需要频繁curl调用接口,所以先写个curl函数
[PHP] 纯文本查看 复制代码
function http_get($url,$post_data=null)
    {


        $con=curl_init((string)$url);
        curl_setopt($con,CURLOPT_HEADER,False);
        curl_setopt($con,CURLOPT_SSL_VERIFYPEER,False);
        curl_setopt($con,CURLOPT_RETURNTRANSFER,true);
        if ($post_data!=null) {
            curl_setopt($con, CURLOPT_POSTFIELDS, $post_data);
        }
        curl_setopt($con,CURLOPT_TIMEOUT,2);
        $result = curl_exec($con);
        return $result;

    }

能获取access_token
[PHP] 纯文本查看 复制代码
$appsecret ='xxx';
        $appkey = 'xxx';
        $url = 'https://oapi.dingtalk.com/gettoken?appkey='.$appkey.'&appsecret='.$appsecret;
        $resArr = json_decode($this->http_get($url), true);
        $access_token = $resArr['access_token'];

考勤报表开发文档https://ding-doc.dingtalk.com/doc#/serverapi2/vg7ned
启用智能报表
[PHP] 纯文本查看 复制代码
$url ='https://oapi.dingtalk.com/topapi/attendance/isopensmartreport?access_token='.$access_token;
       var_dump(json_decode(http_get($url), true));

获取对应值列表ID(不确定不同企业获取到的值是不是一直的。)
[PHP] 纯文本查看 复制代码
$url ='https://oapi.dingtalk.com/topapi/attendance/getattcolumns?access_token='.$access_token;
var_dump(json_decode(http_get($url), true));

image.png

由于还目前还是开发阶段,我是直接查看在通讯录提取的员工UserID
image.png
到这里基本信息都获取完了,提交查询信息。
[PHP] 纯文本查看 复制代码
$post_arr['userid']='301267888880401772';
        $post_arr['column_id_list']='68370871,68370874,68370875';
        //68370871应出勤天数
        //68370874出勤天数
        //68370875休息天数
        $post_arr['from_date']= "2019-12-01 08:00:00";
        $post_arr['to_date']="2019-12-31 23:00:00";

$url ='https://oapi.dingtalk.com/topapi/attendance/getcolumnval?access_token='.$access_token;

        $resArr =json_decode(http_get($url,$post_arr), true);
        if ($resArr['errcode'] == 0) {
            $result =$resArr['result']["column_vals"] ;
var_dump($result);
        }

image.png
然后再进行数据统计就可以知道具体多少天了。

企业内部免密获取自己的userID
他提供的示例代码是通过html的js文件提取的,下面这个代码在手机点进去就会弹出他的名字。
[HTML] 纯文本查看 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/1.9.1/jquery.min.js"></script>
    <script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.7.13/dingtalk.open.js"></script>
    <script>
        dd.ready(function() {
            // dd.ready参数为回调函数,在环境准备就绪时触发,jsapi的调用需要保证在该回调函数触发后调用,否则无效。
            //corpId在这里获取 https://open-dev.dingtalk.com/#/index
            dd.runtime.permission.requestAuthCode({
                corpId: "corpId",
                onSuccess: function(result) {
                    var code = result.code;
                    var url = "index.php?code="+code;
                    $.get(url, function(result){
                        //提交的页面获取到对应信息
                        alert(result);
                    });

                    /*{
                        code: 'hYLK98jkf0m' //string authCode
                    }*/
                },
                onFail : function(err) {
                    alert('dd error: ' + JSON.stringify(error));
                }

            });
        });
    </script>
</head>
<body>
</body>
</html>

php部分
[PHP] 纯文本查看 复制代码
if (!empty($_GET['code'])) {
            $code = $_GET['code'];
$appsecret ='xxx';
$appkey = 'xxx';

            $url = 'https://oapi.dingtalk.com/gettoken?appkey='.$appkey.'&appsecret='.$appsecret;
            $resArr = json_decode(http_get($url), true);
            $access_token = $resArr['access_token'];
            $url = 'https://oapi.dingtalk.com/user/getuserinfo?access_token='.$access_token.'&code='.$code;
            $resArr = json_decode(http_get($url), true);
            $userid = $resArr['userid'];

            $url = 'https://oapi.dingtalk.com/user/get?access_token='.$access_token.'&userid='.$userid;

            //$res =$this->http_get($url);
            $resArr = json_decode(http_get($url), true);
            if (empty($resArr['name'])) {
                return  $resArr['errmsg'];
            }
            return $resArr['name'];
        }


这个需要一定的php基础才能看得懂。因为还在开发阶段,所以没有成品直接修改使用,抱歉咯~
你好,我是勤勤学长。
如果文章对你有用,请给个免费的评分。
image.png

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
苏浩 + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

miqi1314 发表于 2020-1-10 15:36
厉害,支持大佬!
a361690548 发表于 2020-1-10 15:37
渐变heart 发表于 2020-1-10 15:51
huangzy97 发表于 2020-1-10 16:19
楼主很强
 楼主| 勤勤学长 发表于 2020-1-10 17:23
a361690548 发表于 2020-1-10 15:37
加油楼主   我学了这么就的php  还没入门

按照自己的需求做项目,很快就会搬砖了(复制粘贴)。入门容易学精难。
hdzrmlm 发表于 2020-1-10 20:39
很优秀,点赞
吹风哥 发表于 2020-1-11 21:05
跟随学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-7 19:46

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表