|
|
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api;
|
|
|
|
|
|
use EasyWeChat\Factory;
|
|
|
use Illuminate\Support\Facades\Http;
|
|
|
+use Illuminate\Support\Facades\Log;
|
|
|
|
|
|
class EnterpriseWechatController extends BaseController
|
|
|
{
|
|
|
@@ -22,6 +23,34 @@ class EnterpriseWechatController extends BaseController
|
|
|
|
|
|
$app = Factory::work($config);
|
|
|
|
|
|
+ // 1. 定义收到数据后的逻辑
|
|
|
+ $app->server->push(function ($message) use ($app) {
|
|
|
+ // 判断是否为审批状态变动通知
|
|
|
+ Log::channel('apiLog')->info('企业微信', ['msg' => $message]);
|
|
|
+ if ($message['Event'] === 'sys_approval_change') {
|
|
|
+ $info = $message['ApprovalInfo'];
|
|
|
+ $status = (int)$info['SpStatus']; // 强制转为整数防止类型判断坑
|
|
|
+ $spNo = $info['SpNo'];
|
|
|
+
|
|
|
+ if ($status === 2) {
|
|
|
+ // 【核心:二次查询】拿着单号去获取单据里的详细内容(请假天数、理由等)
|
|
|
+
|
|
|
+// $detail = $app->oa->approvalDetail($spNo);
|
|
|
+
|
|
|
+ // 情况 A:最终通过
|
|
|
+ // 此时应该调用 $app->oa->approvalDetail($spNo) 获取详情并同步到你的数据库
|
|
|
+// \Log::info("审批单 [{$spNo}] 最终通过,准备发放福利/记录考勤");
|
|
|
+
|
|
|
+ } elseif ($status === 3) {
|
|
|
+ // 情况 B:最终驳回
|
|
|
+ // 此时你可能需要更新本地单据状态为“已作废”
|
|
|
+// \Log::info("审批单 [{$spNo}] 被驳回,流程结束");
|
|
|
+ }
|
|
|
+
|
|
|
+ // 其他状态(如 1-审批中)直接忽略,不处理任何业务
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
// 核心逻辑:serve() 会自动判断请求类型
|
|
|
// 如果是 GET 请求,它会自动处理校验逻辑并返回明文 echostr
|
|
|
// 如果是 POST 请求,它会进入消息处理流程
|