🆕【企业微信】增加获取企业假期管理配置的接口

This commit is contained in:
Wong 2022-04-10 13:27:54 +00:00 committed by binarywang
parent 07c3545105
commit 7992ee0d3d
7 changed files with 118 additions and 10 deletions

View File

@ -10,7 +10,7 @@ import java.util.List;
/**
* 企业微信OA相关接口.
*
* @author Element
* @author Element & Wang_Wong
* @date 2019-04-06 10:52
*/
public interface WxCpOaService {
@ -107,6 +107,7 @@ public interface WxCpOaService {
*/
WxCpApprovalInfo getApprovalInfo(@NonNull Date startTime, @NonNull Date endTime) throws WxErrorException;
/**
* <pre>
* 获取审批申请详情
@ -122,6 +123,21 @@ public interface WxCpOaService {
*/
WxCpApprovalDetailResult getApprovalDetail(@NonNull String spNo) throws WxErrorException;
/**
* 获取企业假期管理配置
* 企业可通过审批应用或自建应用Secret调用本接口获取可见范围内员工的假期管理配置包括各个假期的id名称请假单位时长计算方式发放规则等
* 第三方应用可获取应用可见范围内员工的假期管理配置包括各个假期的id名称请假单位时长计算方式发放规则等
*
* 请求方式GET(HTTPS)
* 请求地址https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/getcorpconf?access_token=ACCESS_TOKEN
*
* @return
* @throws WxErrorException
*/
WxCpCorpConfInfo getCorpConf() throws WxErrorException;
/**
* 获取公费电话拨打记录
*

View File

@ -386,7 +386,7 @@ public interface WxCpService extends WxService {
WxCpMessageService getMessageService();
/**
* Gets oa service.
* 获取OA相关接口的服务类对象.
*
* @return the oa service
*/

View File

@ -9,11 +9,9 @@ import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.json.GsonParser;
import me.chanjar.weixin.cp.api.WxCpOaAgentService;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.living.WxCpLivingInfo;
import me.chanjar.weixin.cp.bean.oa.selfagent.WxCpOpenApprovalData;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Living.GET_USER_ALL_LIVINGID;
import static me.chanjar.weixin.cp.constant.WxCpApiPathConsts.Oa.GET_OPEN_APPROVAL_DATA;
/**

View File

@ -165,6 +165,13 @@ public class WxCpOaServiceImpl implements WxCpOaService {
return WxCpGsonBuilder.create().fromJson(responseContent, WxCpApprovalDetailResult.class);
}
@Override
public WxCpCorpConfInfo getCorpConf() throws WxErrorException {
final String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_CORP_CONF);
String responseContent = this.mainService.get(url, null);
return WxCpCorpConfInfo.fromJson(responseContent);
}
@Override
public List<WxCpDialRecord> getDialRecord(Date startTime, Date endTime, Integer offset, Integer limit)
throws WxErrorException {

View File

@ -0,0 +1,74 @@
package me.chanjar.weixin.cp.bean.oa;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import lombok.Getter;
import lombok.Setter;
import me.chanjar.weixin.cp.bean.WxCpBaseResp;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
import java.io.Serializable;
import java.util.List;
/**
* 企业假期管理配置信息.
*
* @author Wang_Wong
*/
@Data
public class WxCpCorpConfInfo extends WxCpBaseResp implements Serializable {
private static final long serialVersionUID = 7387181805254287157L;
@SerializedName("lists")
private List<CorpConf> lists;
@Getter
@Setter
public static class CorpConf implements Serializable {
private static final long serialVersionUID = -5696099236344075582L;
@SerializedName("id")
private Integer id;
@SerializedName("name")
private String name;
@SerializedName("time_attr")
private Integer timeAttr;
@SerializedName("duration_type")
private Integer durationType;
@SerializedName("quota_attr")
private QuotaAttr quotaAttr;
@SerializedName("perday_duration")
private Integer perdayDuration;
}
@Getter
@Setter
public static class QuotaAttr implements Serializable {
private static final long serialVersionUID = -5696099236344075582L;
@SerializedName("type")
private Integer type;
@SerializedName("autoreset_time")
private Integer autoresetTime;
@SerializedName("autoreset_duration")
private Integer autoresetDuration;
}
public static WxCpCorpConfInfo fromJson(String json) {
return WxCpGsonBuilder.create().fromJson(json, WxCpCorpConfInfo.class);
}
public String toJson() {
return WxCpGsonBuilder.create().toJson(this);
}
}

View File

@ -112,6 +112,11 @@ public interface WxCpApiPathConsts {
String APPLY_EVENT = "/cgi-bin/oa/applyevent";
String GET_APPROVAL_INFO = "/cgi-bin/oa/getapprovalinfo";
String GET_APPROVAL_DETAIL = "/cgi-bin/oa/getapprovaldetail";
String GET_APPROVAL_DATA = "/cgi-bin/oa/getapprovaldata";
String GET_CORP_CONF = "/cgi-bin/oa/vacation/getcorpconf";
String GET_USER_VACATION_QUOTA = "/cgi-bin/oa/vacation/getuservacationquota";
String SET_ONE_USER_QUOTA = "/cgi-bin/oa/vacation/setoneuserquota";
/**
* 公费电话

View File

@ -1,15 +1,12 @@
package me.chanjar.weixin.cp.api.impl;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.google.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.util.json.GsonParser;
import me.chanjar.weixin.cp.api.ApiTestModule;
import me.chanjar.weixin.cp.api.WxCpService;
import me.chanjar.weixin.cp.bean.oa.*;
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.testng.annotations.Guice;
import org.testng.annotations.Test;
@ -25,9 +22,9 @@ import static org.assertj.core.api.Assertions.assertThat;
/**
* 企业微信 OA数据接口 测试用例
*
* @author Element
* @author Element & Wang_Wong
*/
@Slf4j
@Guice(modules = ApiTestModule.class)
public class WxCpOaServiceImplTest {
@ -171,4 +168,15 @@ public class WxCpOaServiceImplTest {
@Test
public void testGetDialRecord() {
}
/**
* https://developer.work.weixin.qq.com/document/path/93375
* @throws WxErrorException
*/
@Test
public void testGetCorpConf() throws WxErrorException{
WxCpCorpConfInfo corpConf = this.wxService.getOaService().getCorpConf();
log.info(corpConf.toJson());
}
}