logConfig = \config('log'); $this->request = $r; $this->adminLogModel = new AdminLog; } /** * 路由配置文件 * // @基本设置 * Route::group('sys', function () { * * * } * 自动识别@参数 * @param $path * @return AdminLogUtils */ public function path($path): AdminLogUtils { $this->_path = $path; return $this; } /** * 记录日志 */ public function log(): void { $pathinfo = $this->request->pathinfo(); //禁用访问 if ($this->logConfig['LOG_TYPE'] == 1 && in_array($pathinfo, $this->logConfig['LOG_DISABLE'])) { return; } //部分记录 if ($this->logConfig['LOG_TYPE'] == 2 && !in_array($pathinfo, $this->logConfig['LOG_ALLOW'])) { return; } $ip = get_client_ip(); if(empty($ip)){ $ip = $this->request->ip(); } $title = $this->getRoule($pathinfo); $save = []; $save['admin_username'] = $this->request->adminInfo['username']; $save['time'] = time(); $save['ip'] = $ip; $save['action'] = $pathinfo; if ($this->logConfig['LOG_PARAM']) { $post = array_filter($this->request->post(), function ($item) { if (empty($item)) return false; return true; }); $get = array_filter($this->request->get(), function ($item) { if (empty($item)) return false; return true; }); $save['post'] = json_encode($post, \JSON_UNESCAPED_UNICODE); $save['get'] = json_encode($get, \JSON_UNESCAPED_UNICODE); } $save['title'] = empty($title) ? '-无-' : $title; $this->adminLogModel->insert($save); } /** * 获取路由参数 * @param $pathinfo */ private function getRoule($pathinfo) { $expAr = explode('/', $pathinfo); if (empty($expAr)) return ''; $strAr = []; //路由一级 $content = @file_get_contents($this->_path . "/{$expAr[0]}.php"); preg_match("/\/\/\@(.*?)Route::group/is", $content, $match); if (!empty($match)) { $strAr[] = trim($match[1]); } //路由二级 if (count($expAr) > 1) { $ruleName = $expAr[1]; preg_match("/\/\/\@(.[^Route::group]*?)Route::(post|get|rule)(\(\'{$ruleName}\'|\(\"{$ruleName}\")/s", $content, $match); if (!empty($match)) { $strAr[] = trim($match[1]); } } return empty($strAr) ? '' : join('-', $strAr); } }