app = $app; $this->request = $this->app->request; $this->module = strtolower(app('http')->getName()); $this->controller = strtolower($this->request->controller()); $this->action = strtolower($this->request->action()); $this->uid = 0; // 控制器初始化 $this->initialize(); } // 初始化 protected function initialize() { // 调用 Auth 中间件 $this->app->middleware->add(\app\api\middleware\Auth::class); // 检测权限 $this->checkLogin(); // 每页显示数据量 $this->pageSize = Request::param('page_size', \think\facade\Config::get('app.page_size')); // 显示当前登录账户权限 // $this->showLoginUserInfo(); } /** * 显示当前登录账户信息 */ protected function showLoginUserInfo() { $session_admin = get_config('app.session_admin'); if (Session::has($session_admin)) { $loginUser = Session::get($session_admin); // 输出当前登录账户信息 // echo '当前登录账户信息:' . $loginUser['username']; } } /** * 验证用户登录 */ protected function checkLogin() { // 检查当前方法是否在无需登录列表中 if (in_array($this->action, $this->noNeedLogin)) { return; // 跳过登录验证 } $session_admin = get_config('app.session_admin'); if (!Session::has($session_admin)) { $this->apiError('请先登录'); } else { $this->uid = Session::get($session_admin)['id']; View::assign('login_user', $this->uid); } } /** * Api处理成功结果返回方法 * @param $message * @param null $redirect * @param null $extra * @return mixed * @throws ReturnException */ protected function apiSuccess($msg = 'success', $data = []) { return $this->apiReturn($data, 0, $msg); } /** * Api处理结果失败返回方法 * @param $error_code * @param $message * @param null $redirect * @param null $extra * @return mixed * @throws ReturnException */ protected function apiError($msg = 'fail', $data = [], $code = 1) { return $this->apiReturn($data, $code, $msg); } /** * 返回封装后的API数据到客户端 * @param mixed $data 要返回的数据 * @param integer $code 返回的code * @param mixed $msg 提示信息 * @param string $type 返回数据格式 * @param array $header 发送的Header信息 * @return Response */ protected function apiReturn($data, int $code = 0, $msg = '', string $type = '', array $header = []): Response { $result = [ 'code' => $code, 'msg' => $msg, 'time' => time(), 'data' => $data, ]; $type = $type ?: 'json'; $response = Response::create($result, $type)->header($header); throw new HttpResponseException($response); } }