企业微信开发实战(四、OA审批之企业假期管理配置、获取成员假期余额、修改成员假期余额)

2023-11-07

7.获取企业假期管理配置

7.1概述

1、企业可通过审批应用或自建应用Secret调用本接口,获取可见范围内员工的“假期管理”配置,包括:各个假期的id、名称、请假单位、时长计算方式、发放规则等。
2、第三方应用可获取应用可见范围内员工的“假期管理”配置,包括:各个假期的id、名称、请假单位、时长计算方式、发放规则等。

**请求方式:**GET(HTTPS)

**请求地址:**https://qyapi.weixin.qq.com/cgi-bin/oa/vacation/getcorpconf?access_token=ACCESS_TOKEN

参数说明:

参数 必须 说明
access_token 调用接口凭证。必须使用审批应用或企业内自建应用的secret获取,获取方式参考:文档-获取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接口,可看到返回了系统中的所有与’"假期"相关的数据(字段解析传送门
在这里插入图片描述
错误说明:

错误码 说明
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接口,可看到返回了系统中当前用户假期相关数据(字段解析传送门
在这里插入图片描述

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、打开"应用"->“审批”->“假期管理”->“设置”->“年假”->“编辑”。
在这里插入图片描述
在这里插入图片描述

3、如下所示,时间刻度选择"按天",假期余额自动发放设置为每年01月01日发放20天,点击"保存"即可(注:这里可以按天也可以按小时,根据实际情况进行配置即可;这里有一个坑的,如果不做任何配置,默认"不限额",则在调用接口会失败,9.3试错将会介绍)。
在这里插入图片描述

4、运行项目,访问https://localhost:5001/api/SampleData/UpdateUserQuota?userid=你的userid,看到返回"ok"则表示修改成功,此时切换到"假期余额"Tab,可看到当前用户的年假为7天,原因是代码中leftduration设置的时间戳计算结果为7天。(注:这个接口是用来修改余额,也就是说,如果后续该用户如果请了两天年假,那么这里应该"获取剩余的假期"-“请假的天数”=“要修改的余额”)
在这里插入图片描述
在这里插入图片描述

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

赞赏

​ 如果您觉得文章还不错,那就请作者喝杯咖啡吧!
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

企业微信开发实战(四、OA审批之企业假期管理配置、获取成员假期余额、修改成员假期余额) 的相关文章

随机推荐