|
@@ -2,7 +2,9 @@
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
|
|
|
|
-use EasyWeChat\Factory;
|
|
|
|
|
|
|
+use App\Jobs\WxProcessDataJob;
|
|
|
|
|
+use App\Model\EnterpriseRecord;
|
|
|
|
|
+use App\Service\EnterpriseWechatService;
|
|
|
use Illuminate\Support\Facades\Http;
|
|
use Illuminate\Support\Facades\Http;
|
|
|
use Illuminate\Support\Facades\Log;
|
|
use Illuminate\Support\Facades\Log;
|
|
|
|
|
|
|
@@ -13,15 +15,8 @@ class EnterpriseWechatController extends BaseController
|
|
|
*/
|
|
*/
|
|
|
public function serve()
|
|
public function serve()
|
|
|
{
|
|
{
|
|
|
- $config = [
|
|
|
|
|
- 'corp_id' => 'ww83d8e358fe7f71b7',
|
|
|
|
|
- 'agent_id' => 1000007, // 自建应用的 AgentId
|
|
|
|
|
- 'secret' => '5kJcYML2kJ_ojLQ-1KuzXo_rsMs2T74M6RjQmJ5uG6A',
|
|
|
|
|
- 'token' => 'U0GQ5SI5RkOh5DA9wI',
|
|
|
|
|
- 'aes_key' => 'Ces99dugJYEGSgBfCFUg43lI1e1TGWh7HRSmboUiS5N',
|
|
|
|
|
- ];
|
|
|
|
|
-
|
|
|
|
|
- $app = Factory::work($config);
|
|
|
|
|
|
|
+ $service = new EnterpriseWechatService();
|
|
|
|
|
+ $app = $service->getApp();
|
|
|
|
|
|
|
|
// 1. 定义收到数据后的逻辑
|
|
// 1. 定义收到数据后的逻辑
|
|
|
$app->server->push(function ($message) use ($app) {
|
|
$app->server->push(function ($message) use ($app) {
|
|
@@ -33,22 +28,18 @@ class EnterpriseWechatController extends BaseController
|
|
|
$status = (int)$info['SpStatus']; // 强制转为整数防止类型判断坑
|
|
$status = (int)$info['SpStatus']; // 强制转为整数防止类型判断坑
|
|
|
$spNo = $info['SpNo'];
|
|
$spNo = $info['SpNo'];
|
|
|
|
|
|
|
|
- if ($status === 2) {
|
|
|
|
|
- // 【核心:二次查询】拿着单号去获取单据里的详细内容(请假天数、理由等)
|
|
|
|
|
-
|
|
|
|
|
- $detail = $app->oa->approvalDetail($spNo);
|
|
|
|
|
- Log::channel('apiLog')->info('企业微信结果', ['msg' => $detail]);
|
|
|
|
|
- // 情况 A:最终通过
|
|
|
|
|
- // 此时应该调用 $app->oa->approvalDetail($spNo) 获取详情并同步到你的数据库
|
|
|
|
|
-// \Log::info("审批单 [{$spNo}] 最终通过,准备发放福利/记录考勤");
|
|
|
|
|
-
|
|
|
|
|
- } elseif ($status === 3) {
|
|
|
|
|
- // 情况 B:最终驳回
|
|
|
|
|
- // 此时你可能需要更新本地单据状态为“已作废”
|
|
|
|
|
-// \Log::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);
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
- // 其他状态(如 1-审批中)直接忽略,不处理任何业务
|
|
|
|
|
}
|
|
}
|
|
|
});
|
|
});
|
|
|
|
|
|