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接口是非常方便的