QQ-weixin-work/lib/QQ/weixin/work/oa/approval.pm
package QQ::weixin::work::oa::approval;
=encoding utf8
=head1 Name
QQ::weixin::work::oa::approval
=head1 DESCRIPTION
审批
=cut
use strict;
use base qw(QQ::weixin::work::oa);
use Encode;
use LWP::UserAgent;
use JSON;
use utf8;
our $VERSION = '0.10';
our @EXPORT = qw/ create_template update_template /;
=head1 FUNCTION
=head2 create_template(access_token, hash);
创建审批模板
最后更新:2024/01/16
=head2 SYNOPSIS
L<https://developer.work.weixin.qq.com/document/path/97437>
=head3 请求说明:
可以调用此接口创建审批模板。创建新模板后,管理后台及审批应用内将生成对应模板,并生效默认流程和规则配置。
=head4 请求包结构体为:
{
"template_name": [{
"text": "我的api测试模版",
"lang": "zh_CN"
}],
"template_content": {
"controls": [{
"property": {
"control": "Text",
"id": "Text-01",
"title": [{
"text": "控件名称",
"lang": "zh_CN"
}],
"placeholder": [{
"text": "控件说明",
"lang": "zh_CN"
}],
"require": 0,
"un_print": 1
},
"config":{
}
}]
}
}
=head4 参数说明:
参数 必须 说明
access_token 是 调用接口凭证
template_name 是 模版名称数组
└ text 是 模版名称。需满足以下条件:1-模版名称不得和现有模版名称重复;2-长度不得超过40个字符。
└ lang 是 显示语言,中文:zh_CN(注意不是zh-CN)
template_content 否 审批模版控件设置,由多个表单控件及其内容组成,其中包含需要对控件赋值的信息
└ controls 否 控件数组,模版中可以设置多个控件类型,排列顺序和管理端展示的相同
└└ property 是 控件的基础属性
└└└ control 是 控件类型:Text-文本;Textarea-多行文本;Number-数字;Money-金额;Date-日期/日期+时间;Selector-单选/多选;;Contact-成员/部门;Tips-说明文字;File-附件;Table-明细;Location-位置;RelatedApproval-关联审批单;DateRange-时长;PhoneNumber-电话号码;Vacation-假期;Attendance-外出/出差/加班;BankAccount-收款账户 。以上为目前可支持的控件类型
└└└ id 是 控件id。1-模版内控件id必须唯一;2-控件id格式:control-数字,如"Text-01"
└└└ title 是 控件名称
└└└└ text 是 控件名称。需满足以下条件:1-控件名称不得和现有控件名称重复;2-长度不得超过40个字符。
└└└└ lang 是 显示语言,中文:zh_CN(注意不是zh-CN)
└└└ placeholder 否 控件说明
└└└└ text 否 控件说明。需满足以下条件:长度不得超过80个字符。
└└└└ lang 否 显示语言,中文:zh_CN(注意不是zh-CN);若text填写,则该项为必填
└└└ require 否 控件是否必填。0-非必填;1-必填;默认为0
└└└ un_print 否 控件是否可打印。0-可打印;1-不可打印;默认为0
└└ config 是or否 控件配置。控件的类型不同,其中填的参数不相同,下方将为每一个控件配置进行详细说明
=head3 权限说明
应用类型 权限要求
自建应用 配置到「审批 - 可调用接口的应用」中
代开发应用 具有「审批」权限
第三方应用 暂不支持
1.第三方应用可以获取第三方应用添加的模板详情。
2.自建应用的Secret可获取企业自建模板的模板详情。
3.接口调用频率限制为600次/分钟。
注: 从2023年12月1日0点起,不再支持通过系统应用secret调用接口,存量企业暂不受影响 查看详情
注意:
1. 当模板的控件为必填属性时,表单中对应的控件必须有值。
2. 一个模版中只能拥有一类假勤控件类型,Vacation-假期;Attendance-外出/出差/加班 均为假勤控件类型。
=head3 RETURN 返回结果
{
"errcode":0,
"errmsg":"ok",
"template_id":"C4RbNKm731MCFVgk6XLq1Rs9W4aNXPJV2mmXT4qGy"
}
=head3 RETURN 参数说明
参数 说明
errcode 错误码,详情见错误码说明
errmsg 错误码对应的错误信息提示
template_id 模版创建成功后返回的模版id
=head3 附录:各控件config参数介绍
L<https://developer.work.weixin.qq.com/document/path/97437#附录:各控件config数介绍>
=head4 错误说明
错误码 说明
301088 无审批应用权限
301086 审批控件参数错误
301087 企业模版数超过上限
620004 服务器内部错误
-1 未知错误
=cut
sub create_template {
if ( @_ && $_[0] && ref $_[1] eq 'HASH' ) {
my $access_token = $_[0];
my $json = $_[1];
my $ua = LWP::UserAgent->new;
$ua->timeout(30);
$ua->env_proxy;
my $response = $ua->post("https://qyapi.weixin.qq.com/cgi-bin/oa/approval/create_template?access_token=$access_token",Content => to_json($json,{allow_nonref=>1}),Content_type =>'application/json');
if ($response->is_success) {
return from_json($response->decoded_content,{utf8 => 1, allow_nonref => 1});
}
}
return 0;
}
=head2 update_template(access_token, hash);
更新审批模板
最后更新:2024/01/16
=head2 SYNOPSIS
L<https://developer.work.weixin.qq.com/document/path/97438>
=head3 请求说明:
可调用本接口更新审批模板。更新模板后,管理后台及审批应用内将更新原模板的内容,已配置的审批流程和规则不变。
=head4 请求包结构体为:
{
"template_id": "C4RbNKm731MCFVgk6XLq1Rs9W4aNXPJV2mmXT4qGy",
"template_name": [{
"text": "我的api测试模版",
"lang": "zh_CN"
}],
"template_content": {
"controls": [{
"property": {
"control": "Text",
"id": "Text-01",
"title": [{
"text": "控件名称",
"lang": "zh_CN"
}],
"placeholder": [{
"text": "控件说明",
"lang": "zh_CN"
}],
"require": 0,
"un_print": 1
},
"config":{
}
}]
}
}
=head4 参数说明:
参数 必须 说明
access_token 是 调用接口凭证。必须使用审批应用或企业内自建应用的secret获取,获取方式参考:文档-获取access_token
template_id 是 模版id
template_name 是 模版名称数组
└ text 是 模版名称。需满足以下条件:1-模版名称不得和现有模版名称重复;2-长度不得超过40个字符。
└ lang 是 显示语言,中文:zh_CN(注意不是zh-CN)
template_content 否 审批模版控件设置,由多个表单控件及其内容组成,其中包含需要对控件赋值的信息
└ controls 否 控件数组,模版中可以设置多个控件类型,排列顺序和管理端展示的相同
└└ property 是 控件的基础属性
└└└ control 是 控件类型:Text-文本;Textarea-多行文本;Number-数字;Money-金额;Date-日期/日期+时间;Selector-单选/多选;;Contact-成员/部门;Tips-说明文字;File-附件;Table-明细;Location-位置;RelatedApproval-关联审批单;DateRange-时长;PhoneNumber-电话号码;Vacation-假期;Attendance-外出/出差/加班;BankAccount-收款账户。以上为目前可支持的控件类型
└└└ id 是 控件id。1-模版内控件id必须唯一;2-控件id格式:control-数字,如"Text-01"
└└└ title 是 控件名称
└└└└ text 是 控件名称。需满足以下条件:1-控件名称不得和现有控件名称重复;2-长度不得超过40个字符。
└└└└ lang 是 显示语言,中文:zh_CN(注意不是zh-CN)
└└└ placeholder 否 控件说明
└└└└ text 否 控件说明。需满足以下条件:长度不得超过80个字符。
└└└└ lang 否 显示语言,中文:zh_CN(注意不是zh-CN);若text填写,则该项为必填
└└└ require 否 控件是否必填。0-非必填;1-必填;默认为0
└└└ un_print 否 控件是否可打印。0-可打印;1-不可打印;默认为0
└└ config 是or否 控件配置。控件的类型不同,其中填的参数不相同,下方将为每一个控件配置进行详细说明
注意:
1. 当模板的控件为必填属性时,表单中对应的控件必须有值。
2. 一个模版中只能拥有一类假勤控件类型,Vacation-假期;Attendance-外出/出差/加班 均为假勤控件类型。
=head3 权限说明
应用类型 权限要求
自建应用 配置到「审批 - 可调用接口的应用」中
代开发应用 具有「审批」权限
第三方应用 暂不支持
仅能更新自身应用模板
注: 从2023年12月1日0点起,不再支持通过系统应用secret调用接口,存量企业暂不受影响 查看详情
=head3 RETURN 返回结果
{
"errcode": 0,
"errmsg": "ok"
}
=head3 RETURN 参数说明
参数 类型 说明
errcode int32 返回码
errmsg string 错误码描述
=head3 附录:各控件config参数介绍
L<https://developer.work.weixin.qq.com/document/path/97438#附录:各控件config数介绍>
=head3 错误说明:
错误码 说明
301088 无审批应用权限
301086 审批控件参数错误
301087 企业模版数超过上限
620004 服务器内部错误
-1 未知错误
=cut
sub update_template {
if ( @_ && $_[0] && ref $_[1] eq 'HASH' ) {
my $access_token = $_[0];
my $json = $_[1];
my $ua = LWP::UserAgent->new;
$ua->timeout(30);
$ua->env_proxy;
my $response = $ua->post("https://qyapi.weixin.qq.com/cgi-bin/oa/approval/update_template?access_token=$access_token",Content => to_json($json,{allow_nonref=>1}),Content_type =>'application/json');
if ($response->is_success) {
return from_json($response->decoded_content,{utf8 => 1, allow_nonref => 1});
}
}
return 0;
}
1;
__END__