cx_request_time = intval(microtime(true) * 1000); //用户请求时间 } /** * 返回json数据 * @param array|string $data 返回的数据 * return null */ public function renderJson($data = []) { if (is_array($data)) { if (!isset($data['code'])) $data['code'] = SysErrCode::$apiReturnSuccess; if (!isset($data['msg'])) $data['msg'] = ''; if (!isset($data['data'])) $data['data'] = (object)null; $data = json_encode($data, JSON_UNESCAPED_UNICODE); } if (is_object($data)) { if (!isset($data->code)) $data->code = SysErrCode::$apiReturnSuccess; if (!isset($data->msg)) $data->msg = ''; if (!isset($data->data)) $data->data = (object)null; $data = json_encode($data, JSON_UNESCAPED_UNICODE); } //输出内容检测 $is_let_out = $this->filter($data); if($is_let_out){ $data = $this->invaildRequest(); } $response = \Yii::$app->getResponse(); $response->clearOutputBuffers(); $response->setStatusCode(200); $response->format = Response::FORMAT_JSON; $response->content = $data; $response->send(); \Yii::$app->end(); } public function responseHandler($data = [],$render = false) { if($render){ $this->renderJson($data); } else { if (is_array($data)) { if (!isset($data['code'])) $data['code'] = SysErrCode::$apiReturnSuccess; if (!isset($data['msg'])) $data['msg'] = ''; if (!isset($data['data'])) $data['data'] = (object)null; } if (is_object($data)) { if (!isset($data->code)) $data->code = SysErrCode::$apiReturnSuccess; if (!isset($data->msg)) $data->msg = ''; if (!isset($data->data)) $data->data = (object)null; } //输出内容检测 $is_let_out = $this->filter($data); if($is_let_out){ $data = $this->invaildRequest(); } header("Content-type: application/json; charset=" . \Yii::$app->charset); \Yii::$app->response->format = Response::FORMAT_JSON; return $data; } } public function invaildRequest() { return [ 'code' => SysErrCode::$apiReturnFailed, 'msg' => 'Invaild Request' ]; } public function requestNotFound() { return [ 'code' => SysErrCode::$apiReturnFailed, 'msg' => 'Not Found' ]; } //检测输出的内容是否数据库泄漏 private function filter($data) { $is_pass = 1; //API日志记录 $user_id = \Yii::$app->user->isGuest ? 0 : \Yii::$app->user->identity->id; $res = ApiLog::logger($user_id, $this->cx_request_time, $is_pass, $this->cx_mch_id); if($res['code'] != 0 ){ \Yii::error("[ApiLog]".$res['msg']); } return false; } }