From 0e10085b6e2bde1c2d7fa93edf76c2e14bfdbd67 Mon Sep 17 00:00:00 2001 From: vine_liutk <961510893@qq.com> Date: Wed, 21 Jun 2023 15:58:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AD=A6=E6=8A=A5=E6=95=B0?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=EF=BC=8C=E8=AD=A6=E6=8A=A5=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Filters/WarningNoticeFilter.php | 17 ++++++++ app/Helpers/Paginator.php | 29 +++++++++++++ .../Api/WarningNoticeController.php | 43 +++++++++++++++++++ app/Http/Resources/WarningNoticeResource.php | 26 +++++++++++ app/Models/WarningNotice.php | 4 +- routes/api.php | 3 ++ 6 files changed, 120 insertions(+), 2 deletions(-) create mode 100644 app/Filters/WarningNoticeFilter.php create mode 100644 app/Helpers/Paginator.php create mode 100644 app/Http/Controllers/Api/WarningNoticeController.php create mode 100644 app/Http/Resources/WarningNoticeResource.php diff --git a/app/Filters/WarningNoticeFilter.php b/app/Filters/WarningNoticeFilter.php new file mode 100644 index 0000000..d9ff568 --- /dev/null +++ b/app/Filters/WarningNoticeFilter.php @@ -0,0 +1,17 @@ +where('lv', $lv); + } + + public function status($status) + { + return $this->where('status', $status); + } +} diff --git a/app/Helpers/Paginator.php b/app/Helpers/Paginator.php new file mode 100644 index 0000000..60f66d1 --- /dev/null +++ b/app/Helpers/Paginator.php @@ -0,0 +1,29 @@ +input($perPageName); + + if ($perPage >= 1) { + if ($max !== null && $max >= 1 && $perPage >= $max) { + return $max; + } + + return $perPage; + } + + return $default; + } +} diff --git a/app/Http/Controllers/Api/WarningNoticeController.php b/app/Http/Controllers/Api/WarningNoticeController.php new file mode 100644 index 0000000..1bbc173 --- /dev/null +++ b/app/Http/Controllers/Api/WarningNoticeController.php @@ -0,0 +1,43 @@ +input(), WarningNoticeFilter::class) + ->select(DB::raw('lv, count(1) as num')) + ->groupBy('lv') + ->get() + ->pluck('num', 'lv')->toArray(); + for($i = 1; $i <= 4; $i++) { + $data[$i] = $list[$i] ?? 0; + } + return $this->json($data); + } + + + /** + * 获取警报记录 + * + * @return void + */ + public function warningLog(Request $request) + { + $query = WarningNotice::with(['device.modes'])->filter($request->input(), WarningNoticeFilter::class)->orderBy('created_at', 'desc'); + $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)); + + return $this->json(WarningNoticeResource::collection($list)); + } +} diff --git a/app/Http/Resources/WarningNoticeResource.php b/app/Http/Resources/WarningNoticeResource.php new file mode 100644 index 0000000..35986f7 --- /dev/null +++ b/app/Http/Resources/WarningNoticeResource.php @@ -0,0 +1,26 @@ + $this->id, + 'lv' => $this->lv, + 'monitor_modes' => MonitorModeResource::collection($this->whenLoaded('device')->modes), + 'status' => $this->status, + 'content' => $this->content, + 'created_at' => strtotime($this->created_at) ?? 0, //录入时间 + ]; + } +} diff --git a/app/Models/WarningNotice.php b/app/Models/WarningNotice.php index e7ea0d4..112818c 100644 --- a/app/Models/WarningNotice.php +++ b/app/Models/WarningNotice.php @@ -2,12 +2,12 @@ namespace App\Models; -use Illuminate\Database\Eloquent\Factories\HasFactory; +use EloquentFilter\Filterable; use Illuminate\Database\Eloquent\Model; class WarningNotice extends Model { - use HasFactory; + use Filterable; protected $fillable = [ 'device_id', 'lv', 'content', 'status', 'remarks', diff --git a/routes/api.php b/routes/api.php index 8269f44..c91592c 100644 --- a/routes/api.php +++ b/routes/api.php @@ -42,6 +42,9 @@ Route::group(['middleware' => 'auth:sanctum'], function () { Route::get('monitor-modes/device-data', [MonitorModeController::class, 'getMonitorDeviceData'])->name('monitor_modes.device_data'); Route::get('static/base-data', [SettingController::class, 'staticBaseData'])->name('static.base_data'); + Route::get('warning-notices/nums', [WarningNoticeController::class, 'warningLogNum']); + Route::get('warning-notices/logs', [WarningNoticeController::class, 'warningLog']); + Route::prefix('users')->group(function () { Route::delete('logout', [UserController::class, 'logout']); });