7.获取企业假期管理配置
7.1概述
1、企业可通过审批应用或自建应用Secret调用本接口,获取可见范围内员工的“假期管理”配置,包括:各个假期的id、名称、请假单位、时长计算方式、发放规则等。
2、第三方应用可获取应用可见范围内员工的“假期管理”配置,包括:各个假期的id、名称、请假单位、时长计算方式、发放规则等。
**请求方式:**GET(HTTPS)
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/getcorpconf?access_token=ACCESS_TOKEN
参数说明:
接口频率限制 600次/分钟
7.2代码实战
1、代码如下:
#region 7、获取企业假期管理配置
/// <summary>
/// 获取企业假期管理配置
/// </summary>
/// <param name="sp_no"></param>
/// <returns></returns>
[Route("CorpConf")]
public async Task<IActionResult> CorpConf()
{
//request accessToken
var model = GetAccessToken();
string accessToken = "";
if (model != null)
accessToken = model.access_token;
//build request url
string url = "https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/getcorpconf?access_token=" + accessToken;
//request
using (HttpClient client = new HttpClient())
{
var response = await client.GetAsync(url);
//get result
var res = response.Content.ReadAsStringAsync().Result;
return Content(res);
}
}
#endregion
2、访问CorpConf
接口,可看到返回了系统中的所有与’"假期"相关的数据(字段解析传送门)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424205028357.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjAwMzc5,size_16,color_FFFFFF,t_70#pic_center)
错误说明:
错误码 |
说明 |
301062 |
没有假勤权限 |
301063 |
参数错误 |
301064 |
内部错误 |
8.获取成员假期余额
8.1概述
1、企业可通过审批应用或自建应用Secret调用本接口,获取可见范围内各个员工的假期余额数据。
2、第三方应用可获取应用可见范围内各个员工的假期余额数据。
**请求方式:**POST(HTTPS)
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/getuservacationquota?access_token=ACCESS_TOKEN
请求示例
{ "userid": "ZhangSan"}
参数说明:
参数 |
必须 |
类型 |
说明 |
access_token |
是 |
string |
调用接口凭证。必须使用审批应用或企业内自建应用的secret获取,获取方式参考:文档-获取access_token
|
userid |
是 |
string |
需要获取假期余额的成员的userid |
权限说明:
审批应用可获取所有成员的假期余额,自建应用仅可获取自建应用可见范围内成员的假期余额。
接口频率限制 600次/分钟
注:余额的时长单位都为秒,如果假期时间刻度为“按天”,需要除以86400,得到真实假期余额天数;如果假期时间刻度为“按小时”,需要除以3600得到真实假期余额小时数。
8.2代码实战
1、代码如下:
#region 8、获取成员假期余额
/// <summary>
/// 获取成员假期余额(POST)
/// </summary>
/// <param name="userid">用户id</param>
/// <returns></returns>
[Route("UserVacationQuota")]
public async Task<IActionResult> UserVacationQuota(string userid)
{
//request accessToken
var model = GetAccessToken();
string accessToken = "";
if (model != null)
accessToken = model.access_token;
//build request url
string url = "https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/getuservacationquota?access_token=" + accessToken;
//request
using (HttpClient client = new HttpClient())
{
var response = await client.PostAsync(url, new JsonContent(new { userid = userid }));
//get result
var res = response.Content.ReadAsStringAsync().Result;
return Content(res);
}
}
#endregion
2、访问UserVacationQuota
接口,可看到返回了系统中当前用户假期相关数据(字段解析传送门)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424205053774.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjAwMzc5,size_16,color_FFFFFF,t_70#pic_center)
8.3试错
1、如果访问上述接口时,没有添加"?userid=你的用户id",会出现如下所示的参数错误提示:
{
"errcode": 301063,
"errmsg": "param error, hint: [1619153916_169_39d417bcb0c3a4e749c05db5089f97f2], from ip: 61.144.144.239, more info at https://open.work.weixin.qq.com/devtool/query?e=301063",
"lists": []
}
错误说明:
错误码 |
说明 |
301062 |
没有假勤权限 |
301063 |
参数错误 |
301064 |
内部错误 |
9.修改成员假期余额
9.1概述
1、企业可通过审批应用或自建应用Secret调用本接口,修改可见范围内员工的“假期余额”。
2、第三方应用可通过应本接口修改应用可见范围内指定员工的“假期余额”。
**请求方式:**POST(HTTPS)
**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/setoneuserquota?access_token=ACCESS_TOKEN
请求示例:
{
"userid": "ZhangSan",
"vacation_id": 1,
"leftduration": 604800,
"time_attr": 1,
"remarks": "PLACE_HOLDER"
}
参数说明:
参数 |
必须 |
类型 |
说明 |
access_token |
是 |
string |
调用接口凭证。必须使用审批应用或企业内自建应用的secret获取,获取方式参考:文档-获取access_token
|
userid |
是 |
string |
需要修改假期余额的成员的userid |
vacation_id |
是 |
uint32 |
假期id |
leftduration |
是 |
uint32 |
设置的假期余额,单位为秒 不能大于1000天或24000小时,当假期时间刻度为按小时请假时,必须为360整倍数,即0.1小时整倍数,按天请假时,必须为8640整倍数,即0.1天整倍数 |
time_attr |
是 |
uint32 |
假期时间刻度:0-按天请假;1-按小时请假 主要用于校验,必须等于企业假期管理配置中设置的假期时间刻度类型 |
remarks |
否 |
string |
修改备注,用于显示在假期余额的修改记录当中,可对修改行为作说明,不超过200字符 |
注:余额的时长单位都为秒,如果假期时间刻度为“按天”,需要除以86400,得到真实假期余额天数;如果假期时间刻度为“按小时”,需要除以3600得到真实假期余额小时数。
权限说明:
审批应用可修改所有成员的假期余额,自建应用仅可修改自建应用可见范围内成员的假期余额。
返回结果:
{ "errcode": 0, "errmsg": "ok"}
参数说明:
参数 |
类型 |
说明 |
errcode |
int32 |
返回码 |
errmsg |
string |
错误码描述 |
接口频率限制 600次/分钟
错误说明:
错误码 |
说明 |
301062 |
没有假勤权限 |
301063 |
参数错误 |
301064 |
内部错误 |
9.2代码实战
1、代码如下(官方文档传送门):
#region 9、修改成员假期余额
/// <summary>
/// 修改成员假期余额(POST)
/// </summary>
/// <param name="userid">要被修改的成员id</param>
/// 注:企业微信有个坑,后台不能设置不限额,如果设置不限额就会一直提示参数错误
/// <returns></returns>
[Route("UpdateUserQuota")]
public async Task<IActionResult> UpdateUserQuota(string userid)
{
//request accessToken
var model = GetAccessToken();
string accessToken = "";
if (model != null)
accessToken = model.access_token;
//build request url
string url = "https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/setoneuserquota?access_token=" + accessToken;
//build request model
//注:余额的时长单位都为秒,如果假期时间刻度为“按天”,
//需要除以86400,得到真实假期余额天数;如果假期时间刻度为“按小时”,
//需要除以3600得到真实假期余额小时数。
UpdateUserQuotaModel requestModel = new UpdateUserQuotaModel()
{
userid=userid,
vacation_id =1,//假期id,1对应年假(可通过"7.获取企业假期管理配置"中获取)
leftduration = 604800,//请7天(604800/86400=7)
time_attr = 0,//假期时间刻度:0-按天请假;1-按小时请假,需要与后台设置的对应上,否则报301063
remarks = "企业后台调用修改成员假期余额接口"
};
//request
using (HttpClient client = new HttpClient())
{
var response = await client.PostAsync(url, new JsonContent(requestModel));
//get result
var res = response.Content.ReadAsStringAsync().Result;
return Content(res);
}
}
#endregion
2、打开"应用"->“审批”->“假期管理”->“设置”->“年假”->“编辑”。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424205114694.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424205130574.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjAwMzc5,size_16,color_FFFFFF,t_70#pic_center)
3、如下所示,时间刻度选择"按天",假期余额自动发放设置为每年01月01日发放20天,点击"保存"即可(注:这里可以按天也可以按小时,根据实际情况进行配置即可;这里有一个坑的,如果不做任何配置,默认"不限额",则在调用接口会失败,9.3试错将会介绍)。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424205146529.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjAwMzc5,size_16,color_FFFFFF,t_70#pic_center)
4、运行项目,访问https://localhost:5001/api/SampleData/UpdateUserQuota?userid=你的userid,看到返回"ok"则表示修改成功,此时切换到"假期余额"Tab,可看到当前用户的年假为7天,原因是代码中leftduration
设置的时间戳计算结果为7天。(注:这个接口是用来修改余额,也就是说,如果后续该用户如果请了两天年假,那么这里应该"获取剩余的假期"-“请假的天数”=“要修改的余额”)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424205210143.png#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210424205224710.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjAwMzc5,size_16,color_FFFFFF,t_70#pic_center)
9.3试错
1、回到"请假类型"Tab,可看到"事假"的余额发放是不限额,此时将代码中的UpdateUserQuotaModel
的代码做如下更改(以下代码的目的是请两个小时事假):
UpdateUserQuotaModel requestModel = new UpdateUserQuotaModel()
{
userid = userid,
vacation_id = 2,//假期id,2对应事假
leftduration = 7200,//请2小时(7200/3600=2)
time_attr = 1,//假期时间刻度:0-按天请假;1-按小时请假,需要与后台设置的对应上,否则报301063
remarks = "企业后台调用修改成员事假假期余额接口"
};
2、运行项目,并重新访问UpdateUserQuota
接口,会出现如下所示错误,其意思是"参数错误",出现这个错误的原因是设置了"不限额",这个官网没说,贼坑(问了客服才知道)。
{
"errcode": 301063,
"errmsg": "param error, hint: [1619156583_171_4699bf35d64019c5578db2bbfbbfb25b], from ip: 61.144.145.51, more info at https://open.work.weixin.qq.com/devtool/query?e=301063"
}
源码
地址:https://gitee.com/wusuoweixgy/QiYeWeiXinCode
克隆:git clone https://gitee.com/wusuoweixgy/QiYeWeiXinCode.git
赞赏
如果您觉得文章还不错,那就请作者喝杯咖啡吧!
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324131829533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNjAwMzc5,size_16,color_FFFFFF,t_70#pic_center)