添加警报数获取,警报记录获取
parent
4816a77d7f
commit
0e10085b6e
|
|
@ -0,0 +1,17 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Filters;
|
||||||
|
|
||||||
|
use EloquentFilter\ModelFilter;
|
||||||
|
|
||||||
|
class WarningNoticeFilter extends ModelFilter
|
||||||
|
{
|
||||||
|
public function lv($lv){
|
||||||
|
return $this->where('lv', $lv);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function status($status)
|
||||||
|
{
|
||||||
|
return $this->where('status', $status);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Helpers;
|
||||||
|
|
||||||
|
class Paginator
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 解析每页显示的条数
|
||||||
|
*
|
||||||
|
* @param string $perPageName
|
||||||
|
* @param int $default
|
||||||
|
* @param int|null $max
|
||||||
|
* @return int
|
||||||
|
*/
|
||||||
|
public static function resolvePerPage(string $perPageName = 'per_page', int $default = 20, ?int $max = null): int
|
||||||
|
{
|
||||||
|
$perPage = (int) request()->input($perPageName);
|
||||||
|
|
||||||
|
if ($perPage >= 1) {
|
||||||
|
if ($max !== null && $max >= 1 && $perPage >= $max) {
|
||||||
|
return $max;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $perPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,43 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\Api;
|
||||||
|
|
||||||
|
use App\Helpers\Paginator;
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\WarningNotice;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use App\Filters\WarningNoticeFilter;
|
||||||
|
use App\Http\Resources\WarningNoticeResource;
|
||||||
|
use DB;
|
||||||
|
|
||||||
|
class WarningNoticeController extends Controller
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 获取警报数量
|
||||||
|
*/
|
||||||
|
public function warningLogNum(Request $request){
|
||||||
|
$list = WarningNotice::filter($request->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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Resources;
|
||||||
|
|
||||||
|
use Illuminate\Http\Resources\Json\JsonResource;
|
||||||
|
|
||||||
|
class WarningNoticeResource extends JsonResource
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Transform the resource into an array.
|
||||||
|
*
|
||||||
|
* @param \Illuminate\Http\Request $request
|
||||||
|
* @return array|\Illuminate\Contracts\Support\Arrayable|\JsonSerializable
|
||||||
|
*/
|
||||||
|
public function toArray($request)
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'id' => $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, //录入时间
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -2,12 +2,12 @@
|
||||||
|
|
||||||
namespace App\Models;
|
namespace App\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
use EloquentFilter\Filterable;
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class WarningNotice extends Model
|
class WarningNotice extends Model
|
||||||
{
|
{
|
||||||
use HasFactory;
|
use Filterable;
|
||||||
|
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'device_id', 'lv', 'content', 'status', 'remarks',
|
'device_id', 'lv', 'content', 'status', 'remarks',
|
||||||
|
|
|
||||||
|
|
@ -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('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('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::prefix('users')->group(function () {
|
||||||
Route::delete('logout', [UserController::class, 'logout']);
|
Route::delete('logout', [UserController::class, 'logout']);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue