Springboot整合并调用钉钉SDK
在做企业内部考勤的时候需要调取钉钉的打卡和考勤信息,这里写一下调用的测试方法
首先是官方的文档连接 - >
https://developers.dingtalk.com/document/app/server-api-overview
获取钉钉的APP_KEY
public static String APP_KEY = "企业申请的KRY";
获取钉钉的APP_SECRET
public static String APP_SECRET = "企业申请的秘钥";
拿到上面的内容使我们就可以去看API进行接口调用
当然 , 前提是要先下载并配置好钉钉的maven或者下载jar
我们就先以钉钉提供的获取指定日期用户考勤数据为例子
首先 要通过上面两个变量获取钉钉的Token认证
/**
* 不通过redis的方式获取 钉钉的token认证
*
* @author NEON
* @date 2021/5/26 19:17
*/
public static String getAccessToken(){
String token = null;
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest request = new OapiGettokenRequest();
request.setAppkey(APP_KEY);
request.setAppsecret(APP_SECRET);
request.setHttpMethod("GET");
OapiGettokenResponse response = client.execute(request);
token = response.getAccessToken();
} catch (Exception e) {
e.printStackTrace();
}
return token;
}
直接封装成Util类
然后 , 我们通过文档提供的案例调用方法
/**
* @description -> 获取指定日期用户考勤数据
* @author NEON
* @date 2021/5/26 10:54
*/
public static String getUserAttendanceDetails() throws ApiException {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getupdatedata");
OapiAttendanceGetupdatedataRequest req = new OapiAttendanceGetupdatedataRequest();
req.setUserid("你要传入的钉钉ID");
req.setWorkDate(StringUtils.parseDateTime("2021-04-07 09:00:00"));
OapiAttendanceGetupdatedataResponse rsp = client.execute(req, getAccessToken());
System.out.println(rsp.getBody());
return rsp.getBody();
}
然后我们查看获取的结果
{
"errcode": 0,
"result": {
"approve_list": [],
"attendance_result_list": [{
"check_type": "OffDuty",
"class_id": 11111111,
"group_id": 11111111,
"location_method": "MAP",
"location_result": "Normal",
"plan_check_time": "2021-04-07 18:00:00",
"plan_id": 11111111,
"record_id": 11111111,
"source_type": "USER",
"time_result": "Normal",
"user_address": "网络科技有限公司",
"user_check_time": "2021-04-07 22:40:46"
}, {
"check_type": "OnDuty",
"class_id": 11111111,
"group_id": 11111111,
"location_method": "MAP",
"location_result": "Normal",
"plan_check_time": "2021-04-07 09:00:00",
"plan_id": 11111111,
"record_id": 11111111,
"source_type": "AUTO_CHECK",
"time_result": "Normal",
"user_address": "网络科技有限公司",
"user_check_time": "2021-04-07 08:53:05"
}],
"check_record_list": [{
"base_accuracy": "0.0",
"base_address": "网络科技有限公司",
"record_id": 11111111,
"source_type": "USER",
"user_accuracy": "11111111.0",
"user_check_time": "2021-04-07 22:40:46",
"user_latitude": "11111111.11111111",
"user_longitude": "11111111.11111111",
"valid_matched": true
}, {
"base_accuracy": "0.0",
"base_address": "网络科技有限公司",
"record_id": 11111111,
"source_type": "AUTO_CHECK",
"user_accuracy": "11111111.0",
"user_check_time": "2021-04-07 08:53:05",
"user_latitude": "11111111.11111111",
"user_longitude": "11111111.11111111",
"valid_matched": true
}],
"class_setting_info": {
"rest_time_vo_list": [{
"rest_begin_time": 11111111,
"rest_end_time": 11111111
}]
},
"corpId": "11111111",
"userid": "11111111",
"work_date": "2021-04-07 09:00:00"
},
"success": true,
"request_id": "11111111"
}
可以看到其实Java调用钉钉API接口是非常方便的