From 177b2cee2466ba22cf68193f0591acba32f164e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E9=9D=99?= Date: Thu, 4 May 2023 11:30:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20Linkos=20=E8=AE=BE?= =?UTF-8?q?=E5=A4=87=E4=B8=8A=E7=BA=BF=E3=80=81=E7=A6=BB=E7=BA=BF=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Callback/LinkosCallbackController.php | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/app/Http/Controllers/Callback/LinkosCallbackController.php b/app/Http/Controllers/Callback/LinkosCallbackController.php index e7f6f4a..6fcfa2a 100644 --- a/app/Http/Controllers/Callback/LinkosCallbackController.php +++ b/app/Http/Controllers/Callback/LinkosCallbackController.php @@ -11,7 +11,11 @@ class LinkosCallbackController extends Controller public function __invoke(Request $request) { if ($request->filled('notify_type')) { - $this->handleDeviceStateNotify($request); + switch ($request->notify_type) { + case 'online_state_change': + $this->handleDeviceStateNotify($request); + break; + } } return response()->json(['code' => 0, 'msg' => 'ok']); @@ -22,25 +26,31 @@ class LinkosCallbackController extends Controller */ protected function handleDeviceStateNotify(Request $request): void { - if ($request->notify_type !== 'online_state_change') { - return; - } - foreach ($request->input('data', []) as $item) { - if (is_null($device = Device::where('sn', $item['device_id'])->first())) { + if (! isset($item['device_id'])) { continue; } - if ($request->filled('online_state')) { - $state = match ((int) $request->online_state) { - 0 => Device::STATE_OFFLINE, - 1 => Device::STATE_ONLINE, - default => $device->state, - }; + $device = Device::where('sn', $item['device_id'])->first(); - $device->forceFill([ - 'state' => $state, - ])->save(); + if ($device === null) { + continue; + } + + if (isset($item['online_state'])) { + switch ($item['online_state']) { + case 0: + $device->forceFill([ + 'state' => Device::STATE_OFFLINE, + ])->save(); + break; + + case 1: + $device->forceFill([ + 'state' => Device::STATE_ONLINE, + ])->save(); + break; + } } } }