Commit e4e99018 by 胡懿

提交钉钉测试工具项目

parent 6f73a010
123
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.yqd</groupId>
<artifactId>dingding</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>dingding</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.50</version>
</dependency>
<dependency>
<groupId>com.dingtalk.taobao</groupId>
<artifactId>taobao-sdk-java-auto</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.dingtalk.taobao</groupId>
<artifactId>taobao-sdk-java-auto-source</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
package com.yqd.dingding;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DingdingApplication {
public static void main(String[] args) {
SpringApplication.run(DingdingApplication.class, args);
}
}
package com.yqd.dingding.bean;
import java.util.List;
public class ColumnDefintionBean {
private String request_id;
private Integer errcode;
private ColumnsResult result;
public String getRequest_id() {
return request_id;
}
public void setRequest_id(String request_id) {
this.request_id = request_id;
}
public Integer getErrcode() {
return errcode;
}
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}
public ColumnsResult getResult() {
return result;
}
public void setResult(ColumnsResult result) {
this.result = result;
}
@Override
public String toString() {
return "ColumnDefintionBean{" +
"request_id='" + request_id + '\'' +
", errcode=" + errcode +
", result=" + result +
'}';
}
}
package com.yqd.dingding.bean;
public class ColumnsBean {
private Integer id;
private Integer type;
private String name;
private String alias;
private Integer status;
private Integer sub_type;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getType() {
return type;
}
public void setType(Integer type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Integer getSub_type() {
return sub_type;
}
public void setSub_type(Integer sub_type) {
this.sub_type = sub_type;
}
@Override
public String toString() {
return "ColumnsBean{" +
"id=" + id +
", type=" + type +
", name='" + name + '\'' +
", alias='" + alias + '\'' +
", status=" + status +
", sub_type=" + sub_type +
'}';
}
}
package com.yqd.dingding.bean;
import java.util.List;
public class ColumnsResult {
private List<ColumnsBean> columns;
public List<ColumnsBean> getColumns() {
return columns;
}
public void setColumns(List<ColumnsBean> columns) {
this.columns = columns;
}
@Override
public String toString() {
return "ColumnsResult{" +
"columns=" + columns +
'}';
}
}
package com.yqd.dingding.bean;
import java.util.List;
public class RecordDateBean {
private String errcode;
private String errmsg;
private List<Recordresult> recordresult;
public String getErrcode() {
return errcode;
}
public void setErrcode(String errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public List<Recordresult> getRecordresult() {
return recordresult;
}
public void setRecordresult(List<Recordresult> recordresult) {
this.recordresult = recordresult;
}
@Override
public String toString() {
return "RecordDateBean{" +
"errcode='" + errcode + '\'' +
", errmsg='" + errmsg + '\'' +
", recordresult=" + recordresult +
'}';
}
}
package com.yqd.dingding.bean;
public class TokenBean {
private Integer errcode;
private String access_token;
private String errmsg;
private Integer expires_in;
public Integer getErrcode() {
return errcode;
}
public void setErrcode(Integer errcode) {
this.errcode = errcode;
}
public String getAccess_token() {
return access_token;
}
public void setAccess_token(String access_token) {
this.access_token = access_token;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public Integer getExpires_in() {
return expires_in;
}
public void setExpires_in(Integer expires_in) {
this.expires_in = expires_in;
}
@Override
public String toString() {
return "TokenBean{" +
"errcode=" + errcode +
", access_token='" + access_token + '\'' +
", errmsg='" + errmsg + '\'' +
", expires_in=" + expires_in +
'}';
}
}
package com.yqd.dingding.bean;
public class UserIDBean {
private String errcode;
private String errmsg;
private String userid;
public String getErrcode() {
return errcode;
}
public void setErrcode(String errcode) {
this.errcode = errcode;
}
public String getErrmsg() {
return errmsg;
}
public void setErrmsg(String errmsg) {
this.errmsg = errmsg;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
@Override
public String toString() {
return "UserIDBean{" +
"errcode='" + errcode + '\'' +
", errmsg='" + errmsg + '\'' +
", userid='" + userid + '\'' +
'}';
}
}
package com.yqd.dingding.util;
import com.alibaba.fastjson.JSON;
import com.dingtalk.api.DefaultDingTalkClient;
import com.dingtalk.api.DingTalkClient;
import com.dingtalk.api.request.*;
import com.dingtalk.api.response.*;
import com.taobao.api.ApiException;
import com.taobao.api.internal.util.StringUtils;
import com.yqd.dingding.bean.*;
import java.util.*;
public class DingDingUtil {
private static String appKey = "";
private static String appsectet = "";
private static String corpId = "dingf2686e63feb5696135c2f4657eb6378f";
private static String ssoSecret = "PeMFCtG5dAmYHfb03xjib5N03ZMhsi-arCpX6HfpeQMiA6ceBBSq-fU_mHWuKeiL";
public void setKeyAndSectet(String appKey, String appsectet) {
this.appKey = appKey;
this.appsectet = appsectet;
}
public TokenBean getDingDingToken() {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken");
OapiGettokenRequest req = new OapiGettokenRequest();
req.setAppkey(DingDingUtil.appKey);
req.setAppsecret(DingDingUtil.appsectet);
req.setHttpMethod("GET");
OapiGettokenResponse rsp = client.execute(req);
String tokenStr = rsp.getBody();
TokenBean tokenBean = JSON.parseObject(tokenStr, TokenBean.class);
return tokenBean;
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 签到记录
* @param beginTime
* @param endTime
* @param access_token
*/
public void getSignInfo(long beginTime, long endTime, String access_token) {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/checkin/record");
OapiCheckinRecordRequest req = new OapiCheckinRecordRequest();
req.setDepartmentId("1");
req.setEndTime(endTime);
req.setStartTime(beginTime);
req.setOffset(0L);
req.setSize(100L);
req.setOrder("asc");
req.setHttpMethod("GET");
OapiCheckinRecordResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
} catch (ApiException e) {
e.printStackTrace();
}
}
/**
* 考勤信息
* @param access_token
*/
public RecordDateBean getAttendanceInfo(String access_token, String checkDateFrom, String checkDateTo, List<String> userids) {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/attendance/listRecord");
OapiAttendanceListRecordRequest req = new OapiAttendanceListRecordRequest();
req.setUserIds(userids);
req.setCheckDateFrom(checkDateFrom);
req.setCheckDateTo(checkDateTo);
OapiAttendanceListRecordResponse rsp = client.execute(req, access_token);
RecordDateBean resultBean = JSON.parseObject(rsp.getBody(), RecordDateBean.class);
return resultBean;
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 免登陆验证
*/
public void noLoginCheck() {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/sso/gettoken");
OapiSsoGettokenRequest req = new OapiSsoGettokenRequest();
req.setCorpid(DingDingUtil.corpId);
req.setCorpsecret(DingDingUtil.ssoSecret);
req.setHttpMethod("GET");
OapiSsoGettokenResponse rsp = client.execute(req);
System.out.println(rsp.getBody());
} catch (ApiException e) {
e.printStackTrace();
}
}
/**
* 根据手机号获取用户id
* @param access_token
* @param mobile
*/
public UserIDBean getUserIdByMobile(String access_token, String mobile) {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/user/get_by_mobile");
OapiUserGetByMobileRequest req = new OapiUserGetByMobileRequest();
req.setMobile(mobile);
req.setHttpMethod("GET");
OapiUserGetByMobileResponse rsp = client.execute(req, access_token);
UserIDBean userIDBean = JSON.parseObject(rsp.getBody(), UserIDBean.class);
return userIDBean;
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取列定义
* @param access_token
*/
public ColumnDefintionBean getColumnDefinition(String access_token) {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getattcolumns");
OapiAttendanceGetattcolumnsRequest req = new OapiAttendanceGetattcolumnsRequest();
OapiAttendanceGetattcolumnsResponse rsp = client.execute(req, access_token);
ColumnDefintionBean columnDefintionBean = JSON.parseObject(rsp.getBody(), ColumnDefintionBean.class);
return columnDefintionBean;
} catch (ApiException e) {
e.printStackTrace();
}
return null;
}
/**
* 获取报表考情数据
* @param access_token
* @param userid
* @param columnIdList
* @param fromDate
* @param toDate
*/
public void getAttendanceReport(String access_token, String userid, String columnIdList, Date fromDate, Date toDate) {
try {
DingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/attendance/getcolumnval");
OapiAttendanceGetcolumnvalRequest req = new OapiAttendanceGetcolumnvalRequest();
req.setUserid(userid);
req.setColumnIdList(columnIdList);
req.setFromDate(fromDate);
req.setToDate(toDate);
OapiAttendanceGetcolumnvalResponse rsp = client.execute(req, access_token);
System.out.println(rsp.getBody());
} catch (ApiException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
DingDingUtil dingDingUtil = new DingDingUtil();
dingDingUtil.setKeyAndSectet("dingnwjgigolatb7tihb", "dLtF3JE4e-eGI3aiVtRb2WyRQiA9R4Bwks51b6ys7VNvLH9YZZ8oRmctwoJR4pwa");
TokenBean tokenBean = dingDingUtil.getDingDingToken();
System.out.println(tokenBean);
// 获取用户信息
UserIDBean userIDBean_huyi = dingDingUtil.getUserIdByMobile(tokenBean.getAccess_token(), "15234760931");
UserIDBean userIDBean_wangjie = dingDingUtil.getUserIdByMobile(tokenBean.getAccess_token(), "15234190483");
List<String> userids = new ArrayList<>();
userids.add(userIDBean_huyi.getUserid());
userids.add(userIDBean_wangjie.getUserid());
// RecordDateBean recordDateBean = dingDingUtil.getAttendanceInfo(tokenBean.getAccess_token(), "2021-03-17 00:00:00", "2021-03-18 00:00:00", userids);
// StringUtils.parseDateTime("2020-09-07 12:12:12")
ColumnDefintionBean columnDefintionBean = dingDingUtil.getColumnDefinition(tokenBean.getAccess_token());
ColumnsResult columnsResult = columnDefintionBean.getResult();
List<ColumnsBean> columnsBeanList = columnsResult.getColumns();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < columnsBeanList.size(); i++) {
ColumnsBean columnsBean = columnsBeanList.get(i);
System.out.println(columnsBean);
if (null != columnsBean.getId() && !"".equals(columnsBean.getId()) && !"null".equals(columnsBean.getId())) {
sb.append(columnsBean.getId());
if (i != columnsBeanList.size() - 1) {
sb.append(",");
}
}
}
System.out.println(sb.toString());
dingDingUtil.getAttendanceReport(tokenBean.getAccess_token(), userIDBean_huyi.getUserid(), "168355738", StringUtils.parseDateTime("2021-02-01 00:00:00"), StringUtils.parseDateTime("2021-03-01 00:00:00"));
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>test</title>
<script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js"></script>
</head>
<body>
<div>测试免登陆code页面</div>
<button id="code" onclick="dd.ready()">获取授权码</button>
</body>
<script>
dd.ready(function() {
dd.channel.permission.requestAuthCode({
corpId: "dingf2686e63feb5696135c2f4657eb6378f",
onSuccess : function(result) {
var code = result.code;
alert('获取成功,你的免登code为:' + code);            //将code 发往后台处理
},
onFail : function(err) {
alert('出错了, 你获取了一个自定义错误' + err);
}
});
});
</script>
</html>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://g.alicdn.com/dingding/dingtalk-jsapi/2.10.3/dingtalk.open.js"></script>
</head>
<body>
<button id="code" onclick="dd.ready()">获取授权码</button>
<script>
dd.ready(function() {
dd.runtime.permission.requestOperateAuthCode({
corpId: "dingf2686e63feb5696135c2f4657eb6378f",
agentId:"1138235324",
onSuccess : function(result) {
var code = result.code;
alert('获取成功,你的免登code为:' + code);            //将code 发往后台处理
},
onFail : function(err) {
alert('出错了, 你获取了一个自定义错误' + err);
}
});
dd.getAuthCode({
success:function(res){
/*{
authCode: 'hYLK98jkf0m' //string authCode
}*/
alert('获取成功,你的免登res为:' + res);
},
fail:function(err){
}
});
});
</script>
</body>
</html>
\ No newline at end of file
package com.yqd.dingding;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class DingdingApplicationTests {
@Test
void contextLoads() {
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment