mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-06-28 13:16:19 +08:00
#698 企业微信增加OA数据接口
This commit is contained in:
parent
2dfcd6acaa
commit
cf78cd52d2
@ -28,6 +28,11 @@ public interface WxCpChatService {
|
||||
*/
|
||||
String chatCreate(String name, String owner, List<String> users, String chatId) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* chatCreate 同名方法
|
||||
*/
|
||||
String create(String name, String owner, List<String> users, String chatId) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* 修改群聊会话.
|
||||
*
|
||||
@ -40,6 +45,11 @@ public interface WxCpChatService {
|
||||
*/
|
||||
void chatUpdate(String chatId, String name, String owner, List<String> usersToAdd, List<String> usersToDelete) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* chatUpdate 同名方法
|
||||
*/
|
||||
void update(String chatId, String name, String owner, List<String> usersToAdd, List<String> usersToDelete) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* 获取群聊会话.
|
||||
*
|
||||
@ -49,6 +59,11 @@ public interface WxCpChatService {
|
||||
*/
|
||||
WxCpChat chatGet(String chatId) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* chatGet 同名方法
|
||||
*/
|
||||
WxCpChat get(String chatId) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* 应用支持推送文本、图片、视频、文件、图文等类型.
|
||||
* 请求方式: POST(HTTPS)
|
||||
|
@ -0,0 +1,66 @@
|
||||
package me.chanjar.weixin.cp.api;
|
||||
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.cp.bean.WxCpApprovalDataResult;
|
||||
import me.chanjar.weixin.cp.bean.WxCpCheckinData;
|
||||
import me.chanjar.weixin.cp.bean.WxCpCheckinOption;
|
||||
import me.chanjar.weixin.cp.bean.WxCpDialRecord;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Element
|
||||
* @Package me.chanjar.weixin.cp.api
|
||||
* @date 2019-04-06 10:52
|
||||
* @Description: <pre>
|
||||
* 企业微信OA相关接口
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
public interface WxCpOAService {
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 获取打卡数据
|
||||
* API doc : https://work.weixin.qq.com/api/doc#90000/90135/90262
|
||||
* </pre>
|
||||
*
|
||||
* @param openCheckinDataType 打卡类型。1:上下班打卡;2:外出打卡;3:全部打卡
|
||||
* @param starttime 获取打卡记录的开始时间
|
||||
* @param endtime 获取打卡记录的结束时间
|
||||
* @param userIdList 需要获取打卡记录的用户列表
|
||||
*/
|
||||
List<WxCpCheckinData> getCheckinData(Integer openCheckinDataType, Date starttime, Date endtime, List<String> userIdList) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 获取打卡规则
|
||||
* API doc : https://work.weixin.qq.com/api/doc#90000/90135/90263
|
||||
* </pre>
|
||||
*
|
||||
* @param datetime 需要获取规则的当天日期
|
||||
* @param userIdList 需要获取打卡规则的用户列表
|
||||
* @return
|
||||
* @throws WxErrorException
|
||||
*/
|
||||
List<WxCpCheckinOption> getCheckinOption(Date datetime, List<String> userIdList) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* <pre>
|
||||
* 获取审批数据
|
||||
* 通过本接口来获取公司一段时间内的审批记录。一次拉取调用最多拉取10000个审批记录,可以通过多次拉取的方式来满足需求,但调用频率不可超过600次/分。
|
||||
* API doc : https://work.weixin.qq.com/api/doc#90000/90135/91530
|
||||
* </pre>
|
||||
*
|
||||
* @param starttime 获取审批记录的开始时间
|
||||
* @param endtime 获取审批记录的结束时间
|
||||
* @param nextSpnum 第一个拉取的审批单号,不填从该时间段的第一个审批单拉取
|
||||
* @return
|
||||
* @throws WxErrorException
|
||||
*/
|
||||
WxCpApprovalDataResult getApprovalData(Date starttime, Date endtime, Long nextSpnum) throws WxErrorException;
|
||||
|
||||
List<WxCpDialRecord> getDialRecord(Date starttime, Date endtime, Integer offset, Integer limit) throws WxErrorException;
|
||||
|
||||
}
|
@ -303,6 +303,8 @@ public interface WxCpService {
|
||||
|
||||
WxCpAgentService getAgentService();
|
||||
|
||||
WxCpOAService getOAService();
|
||||
|
||||
/**
|
||||
* http请求对象
|
||||
*/
|
||||
|
@ -45,6 +45,7 @@ public abstract class BaseWxCpServiceImpl<H, P> implements WxCpService, RequestH
|
||||
private WxCpOAuth2Service oauth2Service = new WxCpOAuth2ServiceImpl(this);
|
||||
private WxCpTagService tagService = new WxCpTagServiceImpl(this);
|
||||
private WxCpAgentService agentService = new WxCpAgentServiceImpl(this);
|
||||
private WxCpOAService oaService = new WxCpOAServiceImpl(this);
|
||||
|
||||
/**
|
||||
* 全局的是否正在刷新access token的锁
|
||||
@ -386,6 +387,11 @@ public abstract class BaseWxCpServiceImpl<H, P> implements WxCpService, RequestH
|
||||
return chatService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxCpOAService getOAService() {
|
||||
return oaService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RequestHttp<?, ?> getRequestHttp() {
|
||||
return this;
|
||||
|
@ -1,11 +1,5 @@
|
||||
package me.chanjar.weixin.cp.api.impl;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import com.google.gson.JsonParser;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.common.util.json.WxGsonBuilder;
|
||||
@ -14,6 +8,11 @@ import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.bean.WxCpAppChatMessage;
|
||||
import me.chanjar.weixin.cp.bean.WxCpChat;
|
||||
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 群聊服务实现.
|
||||
@ -52,6 +51,11 @@ public class WxCpChatServiceImpl implements WxCpChatService {
|
||||
return new JsonParser().parse(result).getAsJsonObject().get("chatid").getAsString();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String create(String name, String owner, List<String> users, String chatId) throws WxErrorException {
|
||||
return chatCreate(name, owner, users, chatId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void chatUpdate(String chatId, String name, String owner, List<String> usersToAdd, List<String> usersToDelete)
|
||||
throws WxErrorException {
|
||||
@ -75,6 +79,11 @@ public class WxCpChatServiceImpl implements WxCpChatService {
|
||||
this.cpService.post(APPCHAT_UPDATE, WxGsonBuilder.create().toJson(data));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(String chatId, String name, String owner, List<String> usersToAdd, List<String> usersToDelete) throws WxErrorException {
|
||||
chatUpdate(chatId, name, owner, usersToAdd, usersToDelete);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxCpChat chatGet(String chatId) throws WxErrorException {
|
||||
String result = this.cpService.get(APPCHAT_GET_CHATID + chatId, null);
|
||||
@ -82,6 +91,11 @@ public class WxCpChatServiceImpl implements WxCpChatService {
|
||||
.fromJson(JSON_PARSER.parse(result).getAsJsonObject().getAsJsonObject("chat_info").toString(), WxCpChat.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxCpChat get(String chatId) throws WxErrorException {
|
||||
return chatGet(chatId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendMsg(WxCpAppChatMessage message) throws WxErrorException {
|
||||
this.cpService.post("https://qyapi.weixin.qq.com/cgi-bin/appchat/send", message.toJson());
|
||||
|
@ -0,0 +1,165 @@
|
||||
package me.chanjar.weixin.cp.api.impl;
|
||||
|
||||
import com.google.gson.JsonArray;
|
||||
import com.google.gson.JsonElement;
|
||||
import com.google.gson.JsonObject;
|
||||
import com.google.gson.JsonParser;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.cp.api.WxCpOAService;
|
||||
import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.bean.WxCpApprovalDataResult;
|
||||
import me.chanjar.weixin.cp.bean.WxCpCheckinData;
|
||||
import me.chanjar.weixin.cp.bean.WxCpCheckinOption;
|
||||
import me.chanjar.weixin.cp.bean.WxCpDialRecord;
|
||||
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Element
|
||||
* @Package me.chanjar.weixin.cp.api.impl
|
||||
* @date 2019-04-06 11:20
|
||||
* @Description: TODO
|
||||
*/
|
||||
public class WxCpOAServiceImpl implements WxCpOAService {
|
||||
|
||||
private WxCpService mainService;
|
||||
|
||||
public WxCpOAServiceImpl(WxCpService mainService) {
|
||||
this.mainService = mainService;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WxCpCheckinData> getCheckinData(Integer openCheckinDataType, Date starttime, Date endtime, List<String> userIdList) throws WxErrorException {
|
||||
|
||||
if (starttime == null || endtime == null) {
|
||||
throw new RuntimeException("starttime and endtime can't be null");
|
||||
}
|
||||
|
||||
if (userIdList == null || userIdList.size() > 100) {
|
||||
throw new RuntimeException("用户列表不能为空,不超过100个,若用户超过100个,请分批获取");
|
||||
}
|
||||
|
||||
long endtimestamp = endtime.getTime() / 1000L;
|
||||
long starttimestamp = starttime.getTime() / 1000L;
|
||||
|
||||
if (endtimestamp - starttimestamp < 0 || endtimestamp - starttimestamp >= 30 * 24 * 60 * 60) {
|
||||
throw new RuntimeException("获取记录时间跨度不超过一个月");
|
||||
}
|
||||
|
||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckindata";
|
||||
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
JsonArray jsonArray = new JsonArray();
|
||||
|
||||
jsonObject.addProperty("opencheckindatatype", openCheckinDataType);
|
||||
jsonObject.addProperty("starttime", starttimestamp);
|
||||
jsonObject.addProperty("endtime", endtimestamp);
|
||||
|
||||
for (String userid : userIdList) {
|
||||
jsonArray.add(userid);
|
||||
}
|
||||
|
||||
jsonObject.add("useridlist", jsonArray);
|
||||
|
||||
String responseContent = this.mainService.post(url, jsonObject.toString());
|
||||
JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
|
||||
return WxCpGsonBuilder.create()
|
||||
.fromJson(
|
||||
tmpJsonElement.getAsJsonObject().get("checkindata"),
|
||||
new TypeToken<List<WxCpCheckinData>>() {
|
||||
}.getType()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WxCpCheckinOption> getCheckinOption(Date datetime, List<String> userIdList) throws WxErrorException {
|
||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/checkin/getcheckinoption";
|
||||
if (datetime == null) {
|
||||
throw new RuntimeException("datetime can't be null");
|
||||
}
|
||||
|
||||
if (userIdList == null || userIdList.size() > 100) {
|
||||
throw new RuntimeException("用户列表不能为空,不超过100个,若用户超过100个,请分批获取");
|
||||
}
|
||||
|
||||
JsonArray jsonArray = new JsonArray();
|
||||
for (String userid : userIdList) {
|
||||
jsonArray.add(userid);
|
||||
}
|
||||
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
jsonObject.addProperty("datetime", datetime.getTime() / 1000L);
|
||||
jsonObject.add("useridlist", jsonArray);
|
||||
|
||||
String responseContent = this.mainService.post(url, jsonObject.toString());
|
||||
JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
|
||||
|
||||
return WxCpGsonBuilder.create()
|
||||
.fromJson(
|
||||
tmpJsonElement.getAsJsonObject().get("info"),
|
||||
new TypeToken<List<WxCpCheckinOption>>() {
|
||||
}.getType()
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public WxCpApprovalDataResult getApprovalData(Date starttime, Date endtime, Long nextSpnum) throws WxErrorException {
|
||||
|
||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/corp/getapprovaldata";
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
jsonObject.addProperty("starttime", starttime.getTime() / 1000L);
|
||||
jsonObject.addProperty("endtime", endtime.getTime() / 1000L);
|
||||
if (nextSpnum != null) {
|
||||
jsonObject.addProperty("next_spnum", nextSpnum);
|
||||
}
|
||||
|
||||
String responseContent = this.mainService.post(url, jsonObject.toString());
|
||||
return WxCpGsonBuilder.create().fromJson(responseContent, WxCpApprovalDataResult.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<WxCpDialRecord> getDialRecord(Date starttime, Date endtime, Integer offset, Integer limit) throws WxErrorException {
|
||||
|
||||
String url = "https://qyapi.weixin.qq.com/cgi-bin/dial/get_dial_record";
|
||||
JsonObject jsonObject = new JsonObject();
|
||||
|
||||
if (offset == null) {
|
||||
offset = 0;
|
||||
}
|
||||
|
||||
if (limit == null || limit <= 0) {
|
||||
limit = 100;
|
||||
}
|
||||
|
||||
jsonObject.addProperty("offset", offset);
|
||||
jsonObject.addProperty("limit", limit);
|
||||
|
||||
if (starttime != null && endtime != null) {
|
||||
|
||||
long endtimestamp = endtime.getTime() / 1000L;
|
||||
long starttimestamp = starttime.getTime() / 1000L;
|
||||
|
||||
if (endtimestamp - starttimestamp < 0 || endtimestamp - starttimestamp >= 30 * 24 * 60 * 60) {
|
||||
throw new RuntimeException("受限于网络传输,起止时间的最大跨度为30天,如超过30天,则以结束时间为基准向前取30天进行查询");
|
||||
}
|
||||
|
||||
jsonObject.addProperty("start_time", starttimestamp);
|
||||
jsonObject.addProperty("end_time", endtimestamp);
|
||||
|
||||
|
||||
}
|
||||
|
||||
String responseContent = this.mainService.post(url, jsonObject.toString());
|
||||
JsonElement tmpJsonElement = new JsonParser().parse(responseContent);
|
||||
|
||||
return WxCpGsonBuilder.create()
|
||||
.fromJson(
|
||||
tmpJsonElement.getAsJsonObject().get("record"),
|
||||
new TypeToken<List<WxCpDialRecord>>() {
|
||||
}.getType()
|
||||
);
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@ import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.common.util.http.HttpType;
|
||||
import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder;
|
||||
import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder;
|
||||
import me.chanjar.weixin.cp.api.WxCpOAService;
|
||||
import me.chanjar.weixin.cp.config.WxCpConfigStorage;
|
||||
import org.apache.http.HttpHost;
|
||||
import org.apache.http.client.config.RequestConfig;
|
||||
|
@ -0,0 +1,69 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author Element
|
||||
* @Package me.chanjar.weixin.cp.bean
|
||||
* @date 2019-04-06 14:36
|
||||
* @Description: 企业微信 OA 审批数据
|
||||
*/
|
||||
@Data
|
||||
public class WxCpApprovalDataResult implements Serializable {
|
||||
private static final long serialVersionUID = -1046940445840716590L;
|
||||
|
||||
@SerializedName("errcode")
|
||||
private Integer errCode;
|
||||
|
||||
@SerializedName("errmsg")
|
||||
private String errMsg;
|
||||
|
||||
private Integer count;
|
||||
|
||||
private Integer total;
|
||||
|
||||
@SerializedName("next_spnum")
|
||||
private Long nextSpnum;
|
||||
|
||||
private WxCpApprovalData[] data;
|
||||
|
||||
|
||||
@Data
|
||||
public static class WxCpApprovalData implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = -3051785319608491640L;
|
||||
|
||||
private String spname;
|
||||
|
||||
@SerializedName("apply_name")
|
||||
private String applyName;
|
||||
|
||||
@SerializedName("apply_org")
|
||||
private String applyOrg;
|
||||
|
||||
@SerializedName("approval_name")
|
||||
private String[] approvalName;
|
||||
|
||||
@SerializedName("notify_name")
|
||||
private String[] notifyName;
|
||||
|
||||
@SerializedName("sp_status")
|
||||
private Integer spStatus;
|
||||
|
||||
@SerializedName("sp_num")
|
||||
private Long spNum;
|
||||
|
||||
@SerializedName("apply_time")
|
||||
private Long applyTime;
|
||||
|
||||
@SerializedName("apply_user_id")
|
||||
private String applyUserId;
|
||||
|
||||
@SerializedName("comm")
|
||||
private Map<String,String> comm;
|
||||
}
|
||||
}
|
@ -0,0 +1,51 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Element
|
||||
* @Package me.chanjar.weixin.cp.bean
|
||||
* @date 2019-04-06 11:01
|
||||
* @Description: 企业微信打卡数据
|
||||
*/
|
||||
@Data
|
||||
public class WxCpCheckinData implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1915820330847799605L;
|
||||
|
||||
@SerializedName("userid")
|
||||
private String userId;
|
||||
|
||||
@SerializedName("groupname")
|
||||
private String groupName;
|
||||
|
||||
@SerializedName("checkin_type")
|
||||
private String checkinType;
|
||||
|
||||
@SerializedName("exception_type")
|
||||
private String exceptionType;
|
||||
|
||||
@SerializedName("checkin_time")
|
||||
private Long checkinTime;
|
||||
|
||||
@SerializedName("location_title")
|
||||
private String locationTitle;
|
||||
|
||||
@SerializedName("location_detail")
|
||||
private String locationDetail;
|
||||
|
||||
@SerializedName("wifiname")
|
||||
private String wifiName;
|
||||
|
||||
@SerializedName("wifimac")
|
||||
private String wifiMAC;
|
||||
|
||||
private String notes;
|
||||
|
||||
@SerializedName("mediaids")
|
||||
private List<String> mediaIds;
|
||||
}
|
@ -0,0 +1,151 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Element
|
||||
* @Package me.chanjar.weixin.cp.bean
|
||||
* @date 2019-04-06 13:22
|
||||
* @Description: 企业微信打卡规则
|
||||
*/
|
||||
@Data
|
||||
public class WxCpCheckinOption implements Serializable {
|
||||
private static final long serialVersionUID = -1964233697990417482L;
|
||||
|
||||
@SerializedName("userid")
|
||||
private String userId;
|
||||
|
||||
private Group group;
|
||||
|
||||
|
||||
@Data
|
||||
public static class CheckinDate implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -5601722383347110974L;
|
||||
|
||||
private List<Integer> workdays;
|
||||
|
||||
@SerializedName("checkintime")
|
||||
private CheckinTime[] checkinTime;
|
||||
|
||||
@SerializedName("flex_time")
|
||||
private Long flexTime;
|
||||
|
||||
@SerializedName("noneed_offwork")
|
||||
private Boolean noneedOffwork;
|
||||
|
||||
@SerializedName("limit_aheadtime")
|
||||
private Long limitAheadtime;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class CheckinTime implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -8579954143265336276L;
|
||||
|
||||
@SerializedName("work_sec")
|
||||
private Long workSec;
|
||||
|
||||
@SerializedName("off_work_sec")
|
||||
private Long offWorkSec;
|
||||
|
||||
@SerializedName("remind_work_sec")
|
||||
private Long remindWorkSec;
|
||||
|
||||
@SerializedName("remind_off_work_sec")
|
||||
private Long remindOffWorkSec;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class Group implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = -5888406969613403044L;
|
||||
|
||||
@SerializedName("groupid")
|
||||
private Long id;
|
||||
|
||||
@SerializedName("groupname")
|
||||
private String name;
|
||||
|
||||
@SerializedName("grouptype")
|
||||
private Integer type;
|
||||
|
||||
@SerializedName("checkindate")
|
||||
private List<CheckinDate> checkinDate;
|
||||
|
||||
@SerializedName("spe_workdays")
|
||||
private List<SpeDay> speWorkdays;
|
||||
|
||||
@SerializedName("spe_offdays")
|
||||
private List<SpeDay> speOffdays;
|
||||
|
||||
@SerializedName("sync_holidays")
|
||||
private Boolean syncHolidays;
|
||||
|
||||
@SerializedName("need_photo")
|
||||
private Boolean needPhoto;
|
||||
|
||||
@SerializedName("note_can_use_local_pic")
|
||||
private Boolean note_can_use_local_pic;
|
||||
|
||||
@SerializedName("allow_checkin_offworkday")
|
||||
private Boolean allow_checkin_offworkday;
|
||||
|
||||
@SerializedName("allow_apply_offworkday")
|
||||
private Boolean allow_apply_offworkday;
|
||||
|
||||
@SerializedName("wifimac_infos")
|
||||
private List<WifiMACInfo> wifiMACInfos;
|
||||
|
||||
@SerializedName("loc_infos")
|
||||
private List<LocInfo> locInfos;
|
||||
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class WifiMACInfo implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = -4657809185716627368L;
|
||||
|
||||
@SerializedName("wifiname")
|
||||
private String name;
|
||||
|
||||
@SerializedName("wifimac")
|
||||
private String mac;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class LocInfo implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = -618965280668099608L;
|
||||
|
||||
private Long lat;
|
||||
private Long lng;
|
||||
|
||||
@SerializedName("loc_title")
|
||||
private String title;
|
||||
|
||||
@SerializedName("loc_detail")
|
||||
private String detail;
|
||||
|
||||
private Long distance;
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class SpeDay implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = -3538818921359212748L;
|
||||
|
||||
private Long timestamp;
|
||||
private String notes;
|
||||
|
||||
@SerializedName("checkintime")
|
||||
private List<CheckinTime> checkinTime;
|
||||
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,73 @@
|
||||
package me.chanjar.weixin.cp.bean;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Element
|
||||
* @Package me.chanjar.weixin.cp.bean
|
||||
* @date 2019-04-06 15:38
|
||||
* @Description: 公费电话拨打记录
|
||||
*/
|
||||
@Data
|
||||
public class WxCpDialRecord implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 4178886812949929116L;
|
||||
@SerializedName("call_time")
|
||||
private Long callTime;
|
||||
|
||||
/**
|
||||
* 总通话时长,单位为分钟
|
||||
*/
|
||||
@SerializedName("total_duration")
|
||||
private Integer totalDuration;
|
||||
|
||||
/**
|
||||
* 通话类型,1-单人通话 2-多人通话
|
||||
*/
|
||||
@SerializedName("call_type")
|
||||
private Integer callType;
|
||||
|
||||
private Caller caller;
|
||||
|
||||
private List<Callee> callee;
|
||||
|
||||
/**
|
||||
* 主叫信息
|
||||
*/
|
||||
@Data
|
||||
public static class Caller implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = 4792200404338145607L;
|
||||
|
||||
@SerializedName("userid")
|
||||
private String userId;
|
||||
|
||||
private Integer duration;
|
||||
}
|
||||
|
||||
/**
|
||||
* 被叫信息
|
||||
*/
|
||||
@Data
|
||||
public static class Callee implements Serializable{
|
||||
|
||||
private static final long serialVersionUID = 2390963671336179550L;
|
||||
|
||||
/**
|
||||
* 被叫用户的userid,当被叫用户为企业内用户时返回
|
||||
*/
|
||||
@SerializedName("userid")
|
||||
private String userId;
|
||||
|
||||
/**
|
||||
* 被叫用户的号码,当被叫用户为外部用户时返回
|
||||
*/
|
||||
private String phone;
|
||||
|
||||
private Integer duration;
|
||||
}
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
package me.chanjar.weixin.cp.api.impl;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.inject.Inject;
|
||||
import me.chanjar.weixin.common.error.WxErrorException;
|
||||
import me.chanjar.weixin.cp.api.ApiTestModule;
|
||||
import me.chanjar.weixin.cp.api.WxCpService;
|
||||
import me.chanjar.weixin.cp.bean.WxCpCheckinData;
|
||||
import me.chanjar.weixin.cp.bean.WxCpCheckinOption;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
import org.testng.annotations.Guice;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import java.text.ParseException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Element
|
||||
* @Package me.chanjar.weixin.cp.api.impl
|
||||
* @date 2019-04-20 13:46
|
||||
* @Description: TODO
|
||||
*/
|
||||
|
||||
@Guice(modules = ApiTestModule.class)
|
||||
public class WxCpOAServiceImplTest {
|
||||
|
||||
@Inject
|
||||
protected WxCpService wxService;
|
||||
|
||||
@Inject
|
||||
protected Gson gson;
|
||||
|
||||
@Test
|
||||
public void testGetCheckinData() throws ParseException, WxErrorException {
|
||||
Date starttime,endtime;
|
||||
List<String> userLists = new ArrayList<>();
|
||||
|
||||
starttime = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.parse("2019-01-01");
|
||||
endtime = DateFormatUtils.ISO_8601_EXTENDED_DATE_FORMAT.parse("2019-01-20");
|
||||
|
||||
userLists.add("1");
|
||||
userLists.add("2");
|
||||
userLists.add("3");
|
||||
|
||||
List<WxCpCheckinData> results = wxService.getOAService().getCheckinData(1, starttime,endtime,userLists);
|
||||
|
||||
System.out.println("results ");
|
||||
System.out.println(gson.toJson(results));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetCheckinOption() throws WxErrorException{
|
||||
|
||||
Date now = new Date();
|
||||
List<String> userLists = new ArrayList<>();
|
||||
|
||||
userLists.add("user@aliyun.com");
|
||||
|
||||
List<WxCpCheckinOption> results = wxService.getOAService().getCheckinOption(now,userLists);
|
||||
|
||||
System.out.println("results ");
|
||||
System.out.println(gson.toJson(results));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user