1
0
Fork 0
internet-everythings-agricu.../app/Http/Controllers/Callback/LinkosCallbackController.php

62 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Callback;
use App\Http\Controllers\Controller;
use App\Models\Device;
use Illuminate\Http\Request;
class LinkosCallbackController extends Controller
{
public function __invoke(Request $request)
{
logger()->debug('linkos callback parameters -------->', $request->input());
if ($request->filled('notify_type')) {
switch ($request->notify_type) {
case 'online_state_change':
$this->handleDeviceStateNotify($request);
break;
}
} elseif ($request->filled('device_id')) {
Device::where('sn', $request->input('device_id'))->update(['state' => Device::STATE_ONLINE]);
}
return response()->json(['code' => 0, 'msg' => 'ok']);
}
/**
* 设备状态通知
*/
protected function handleDeviceStateNotify(Request $request): void
{
foreach ($request->input('data', []) as $item) {
if (! isset($item['device_id'])) {
continue;
}
$device = Device::where('sn', $item['device_id'])->first();
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;
}
}
}
}
}