|
|
@@ -52,7 +52,13 @@ class WebhookDispatchService
|
|
|
$handlerClass = $this->getPackageHandler($packageName, $handlerRoute);
|
|
|
|
|
|
if (!$handlerClass) {
|
|
|
- throw new \Exception("包 {$packageName} 的处理器 {$handlerRoute} 不存在");
|
|
|
+ // 尝试重新注册处理器(防止静态变量被重置的情况)
|
|
|
+ $this->tryReregisterPackageHandlers($packageName);
|
|
|
+ $handlerClass = $this->getPackageHandler($packageName, $handlerRoute);
|
|
|
+
|
|
|
+ if (!$handlerClass) {
|
|
|
+ throw new \Exception("包 {$packageName} 的处理器 {$handlerRoute} 不存在");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// 检查处理器类是否存在
|
|
|
@@ -301,4 +307,35 @@ class WebhookDispatchService
|
|
|
static::$packageHandlers = [];
|
|
|
Log::info("清空所有包处理器");
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 尝试重新注册包处理器
|
|
|
+ *
|
|
|
+ * @param string $packageName 包名
|
|
|
+ */
|
|
|
+ protected function tryReregisterPackageHandlers(string $packageName): void
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ // 根据包名尝试重新触发服务提供者的注册
|
|
|
+ switch ($packageName) {
|
|
|
+ case 'urs':
|
|
|
+ // 重新注册URS包的处理器
|
|
|
+ if (class_exists('\ThirdParty\Urs\UrsServiceProvider')) {
|
|
|
+ $provider = new \ThirdParty\Urs\UrsServiceProvider(app());
|
|
|
+ $provider->boot();
|
|
|
+ Log::info("重新注册URS包处理器成功");
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ // 可以在这里添加其他包的重新注册逻辑
|
|
|
+ default:
|
|
|
+ Log::warning("未知包名,无法重新注册处理器", ['package_name' => $packageName]);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ Log::error("重新注册包处理器失败", [
|
|
|
+ 'package_name' => $packageName,
|
|
|
+ 'error' => $e->getMessage()
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|