3步搭好企业微信审批超时提醒系统:EasyWeChat审批监控完整指南
3步搭好企业微信审批超时提醒系统:EasyWeChat审批监控完整指南
【免费下载链接】easywechat📦 一个 PHP 微信 SDK项目地址: https://gitcode.com/gh_mirrors/ea/easywechat
周五17:40,你刚提交一张报销单,审批人却已经下线,审批节点一卡就是一整晚,全组没人知道它多久能过。用EasyWeChat框架的企业微信模块做一套「企业微信审批超时提醒」,系统会自己找出卡住的单子、主动通知审批人,你不用一天盯3次手机。
读完你能得到什么:
- 10分钟内跑通「拉记录 → 判超时 → 发提醒」的完整链路
- 搞清楚超时阈值怎么设,不提前、不拖后、不误报
- 拿到一套可直接用的 crontab 定时方案,并避开重复提醒的坑
🧭 企业微信审批超时提醒的准备工作
环境门槛很低,确认3件事就行:
| 项目 | 要求 |
|---|---|
| PHP | 8.0.2 以上,启用 openssl、curl 扩展 |
| SDK | composer require w7corp/easywechat |
| 企业微信权限 | 准备好 corp_id、secret、agent_id;应用需被授予「OA审批」权限,否则拉不到数据 |
每个配置项从哪拿,见企业微信OA接口文档。
都齐了吗?那就直接写代码。
企业微信审批超时提醒最小可运行流程
第1步:初始化企业微信work应用
目标:拿到应用对象。配置塞进去、调一下工厂方法就完事。
$work = Factory::work([ 'corp_id' => 'ww1234567890abcdef', 'secret' => '你的应用密钥', 'agent_id' => 1000002, ]);预期:$work就是一个可用的企业微信应用实例,后续所有接口都从它身上取。
第2步:拉取指定时间段的审批记录
目标:拿到时间窗内所有审批单的原始数据。
$since = strtotime('2025-11-01'); $until = strtotime('2025-11-07'); $first = $work->oa->approvalRecords($since, $until);预期:返回数组里record_list每条记录都带sp_no(单号)、sp_status(1表示审批中)、apply_time(申请时间戳)。
第3步:判断超时并自动发提醒
目标:把「审批中」的单子挨个过一遍,超24小时的直接通知到审批人。
foreach ($first['record_list'] as $row) { if ($row['sp_status'] !== 1) { continue; } $waiting = time() - $row['apply_time']; if ($waiting > 86400) { $approver = $row['task_list'][0]['task_userid']; $work->messenger->toUser($approver) ->send("审批单{$row['sp_no']}已等待{$waiting / 3600}小时,请尽快处理"); } }预期:审批人立刻收到一条文本消息。发送的写法在消息发送文档里有完整说明。
三段代码加起来不到40行,链路就通了。它能再干点什么?
📌 三个真实场景延伸
多维度阈值:别用同一个阈值管所有单。按审批模板区分——请假单24小时、付款单4小时、出差申请8小时。怎么做:从记录里读模板名称做分支判断。带来的效果:付款这种急单不会再等到第二天才被处理。
提醒升级:首次提醒发出后24小时仍无人处理,自动通知申请人直属主管。怎么做:把提醒时间存进本地数据库,下次定时任务再判断一次。带来的效果:从「多催一次」变成「往上推一级」,单子里的老板级审批人也不得不看。
效率报表:按周统计卡单数量与平均等待时长,导出成表格。怎么做:监控脚本顺手把超时单写进一张表即可。带来的效果:跑一个月后,你能指出哪个审批节点是瓶颈,直接拿数据去推动流程改造。
⚠️ 避坑指南:五个最容易踩的坑
- 拉取不全。现象:单量明显少于管理后台。原因:一次调用只返回第一页数据。解法:用返回里的
next_spnum作为参数循环拉取,直到它为空。 - token 过期报 42001。现象:跑到一半 errcode 变成 42001。原因:access_token 有效期只有2小时。解法:框架内置了自动刷新与重试,参考可重试客户端源码;若自己接了缓存,确保缓存可用。
- 提醒发错人。现象:申请人收到「请处理」的提醒。原因:把申请人字段当成了审批人。解法:审批人 userid 在
task_list的每个任务项里,取当前处理中任务的那一条。 - 重复轰炸。现象:审批人每小时被提醒一遍。原因:同一张单每次执行都满足超时条件。解法:记录已提醒过的
sp_no(数据表或缓存),命中就跳过。 - 权限没开、数据为空。现象:不报 errcode,但
record_list永远是空。原因:应用没被授予「OA审批」权限。解法:去企业微信管理后台确认应用的接口权限范围。
收尾
大约40行代码,你就把企业微信审批超时提醒从「人肉催」升级成了「系统盯着」,平均处理时长通常能压掉一半。想进一步把提醒改成可点击的卡片消息、或者加回调服务接收审批变更,直接看企业微信消息文档和Server配置文档。
最后一句安全提醒:配置里的 corp_id 与 secret 不要提交进代码仓库,crontab 记得给日志加轮转。
【免费下载链接】easywechat📦 一个 PHP 微信 SDK项目地址: https://gitcode.com/gh_mirrors/ea/easywechat
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
