service = $service; } public function index(Request $request): JsonResponse { try { // 进入自动已读 $this->service->readModel($this->adminUserId); $query = AdminNotice::query(); if ($request->has('alarm_type')) { $alarm_type = $request->input('alarm_type'); if ($alarm_type) { $query->where('alarm_type', $alarm_type); } } if ($request->has('msg_type')) { $msg_type = $request->input('msg_type'); if ($msg_type) { $query->where('msg_type', $msg_type); } } if ($request->has('start_time') && $request->has('end_time')) { $start_time = $request->input('start_time'); $end_time = $request->input('end_time'); if ($start_time && $end_time) { $query->whereBetween('alarm_time', [$start_time, $end_time] ); } } // 分页 $page = $request->input('page', 1); $perPage = $request->input('per_page', 10); $columns = [ 'id', 'alarm_time', 'alarm_type', 'camera_ip', 'msg_type', 'space_id' ]; $total = $query->count(); $items = $query->latest()->forPage($page, $perPage)->select( $columns )->get()->each(function ($item) { $item['alarm_type_index'] = $item['alarm_type']; $item['msg_type_index'] = $item['msg_type']; return $this->service->getItem($item); }); return $this->responseService->success([ 'items' => $items, 'total' => $total, 'page' => $page, 'per_page' => $perPage, 'last_page' => ceil($total / $perPage), ]); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } public function search(): JsonResponse { try { $msgTypeArr = AdminNoticeService::getMsgType(); $data = [ 'alarm_type_list' => get_select_data( AdminNoticeService::getAlarmType() ), 'msg_type_list' => [ 1 => get_select_data([ 1 => $msgTypeArr[1], 2 => $msgTypeArr[2], 3 => $msgTypeArr[3] ]), 2 => get_select_data([ 4 => $msgTypeArr[4], 5 => $msgTypeArr[5] ]) ], 'msg_type_all_list' => [ get_select_data($msgTypeArr) ] ]; return $this->responseService->success($data); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } public function create(): JsonResponse { try { $config = AdminConfigs::query()->where( 'name', 'information_setting' )->first(); $data = [ 'setting_list' => $config['content'] ]; return $this->responseService->success($data); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } public function setting(Request $request): JsonResponse { try { $data = $request->all(); $rules = [ 'close_alert' => 'required|in:0,1', 'close_all_alert' => 'required|in:0,1', ]; $messages = [ 'close_alert.required' => __( 'validation.notice.c_empty' ), 'close_alert.numeric' => __( 'validation.notice.c_in' ), 'close_all_alert.required' => __( 'validation.notice.c_empty' ), 'close_all_alert.numeric' => __( 'validation.notice.c_in' ), ]; $validator = Validator::make($data, $rules, $messages); if ($validator->fails()) { throw new ValidationException($validator); } $this->service->updateConfig($data, $this->adminUserId); return $this->responseService->success([], __('admin.operation_successful')); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } public function show(string $id): JsonResponse { try { $columns = [ 'id', 'alarm_time', 'alarm_type', 'camera_ip', 'msg_type', 'space_id', 'floor_id', 'camera_id', 'pattern_id' ]; $data = AdminNotice::query()->find($id, $columns)->toArray(); $data['parking_space_id'] = $data['space_id']; $data = $this->service->getItem($data); return $this->responseService->success($data); } catch (Exception $e) { return $this->responseService->systemError( __('exception.get_data_failed') . ':' . $e->getMessage() ); } } /** * @return BinaryFileResponse */ public function export(): BinaryFileResponse { return Excel::download( new AdminNoticeExport(), __('exports.notice.list') . time() . '.xlsx' ); } public function message(): JsonResponse { try { $where = [ 'user_id' => $this->adminUserId, 'is_read' => 0 ]; $data = [ 'notice_count' => AdminNotice::query()->where($where)->count() ]; return $this->responseService->success($data); } catch (Exception $e) { $m_prefix = __('exception.exception_handler.resource'); return $this->responseService->systemError( $m_prefix . ':' . $e->getMessage() ); } } }