getApp(); // 1. 定义收到数据后的逻辑 $app->server->push(function ($message) use ($app) { // 判断是否为审批状态变动通知 Log::channel('apiLog')->info('企业微信', ['msg' => $message]); if ($message['Event'] === 'sys_approval_change') { $info = $message['ApprovalInfo']; $templateId = $info['TemplateId']; // 拿到模板ID $status = (int)$info['SpStatus']; // 强制转为整数防止类型判断坑 $spNo = $info['SpNo']; // 仅在状态为 2 (通过) 或 3 (驳回) 时存入数据库 if ($status === 2 || $status === 3) { $array = [ 'sp_no' => $spNo, 'template_id' => $templateId, 'sp_status' => $status, 'crt_time' => now(), ]; $count = EnterpriseRecord::insertOrIgnore($array); if($count > 0 && $status == 2) WxProcessDataJob::dispatch($array)->onQueue(EnterpriseRecord::$job); } } }); // 核心逻辑:serve() 会自动判断请求类型 // 如果是 GET 请求,它会自动处理校验逻辑并返回明文 echostr // 如果是 POST 请求,它会进入消息处理流程 return $app->server->serve(); } }