get()->toArray(); return $this->json(array_map(function ($item) { $_value = json_decode($item['value'], true); return [ 'name' => $item['name'], 'slug' => $item['slug'], 'value' => $_value, ]; }, $settings)); } public function updateRule(Request $request) { $slug = $request->input(['slug']); $ruleValue = $request->input(['value'], []); $rule = Setting::where('slug', $slug)->first(); //获取提交的规则 if ($rule) { $oldValue = json_decode($rule->value, true); foreach ($oldValue as $key => $value) { foreach ($value as $lv => $item) { if (isset($ruleValue[$key][$lv])) { $oldValue[$key][$lv] = $ruleValue[$key][$lv]; } } } $rule->update([ 'value' => json_encode($oldValue), ]); } return $this->success('更新成功'); } /** * 获取警报记录 * * @return void */ public function warningLog(Request $request) { $query = DeviceWarning::with(['base', 'device'])->filter($request->input())->orderBy('created_at', 'desc'); $list = $query->simplePaginate(Paginator::resolvePerPage('per_page', 20, 50)); return $this->json(DeviceWarningResource::collection($list)); } /** * 获取预警数量 */ public function warningLogNum(Request $request){ $list = DeviceWarning::filter($request->input()) ->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); } public function markWarning(DeviceWarning $deviceWarning) { $deviceWarning->update([ 'status' => 1 ]); return $this->success('处理成功'); } }