1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- <?php
- namespace app\jobs;
- use app\admin\model\Device;
- use think\Exception;
- use think\queue\Job;
- class DeviceReportEvent
- {
- public function fire(Job $job, $data)
- {
-
- $topic = $data['topic'];
- $topicArray = explode('/', $topic);
- $device_id = $topicArray[2];
- $reportData = json_decode($data['message'], true);
- try {
- $this->eventRouter($device_id, $reportData);
- } catch (Exception $exception) {
-
- }
- $job->delete();
- }
- protected function eventRouter($device_id, $data)
- {
-
- if (!isset($data['TYPE'])) return false;
- switch ($data['TYPE']) {
- case "ONLINE":
- $this->online($device_id, $data['DATA']);
- break;
- }
- return true;
- }
- protected function online($device_id, $data)
- {
- $device = Device::where("device_sn", $device_id)->get();
- if (!$device) {
- return false;
- }
- $device->status = 1;
- $device->save();
- }
- }
|