header_list = self::$default_header_list; $this->fzmCrossHeader(); } } public function fzmCrossHeader() { $this->lang = \Yii::$app->request->headers->get('lang') ?? 'zh-CN'; if ('en' == strtolower($this->lang)) { $this->lang = 'en-US'; } if (\Yii::$app->request->headers->get('FZM-PLATFORM-ID')) { $this->platform_id = \Yii::$app->request->headers->get('FZM-PLATFORM-ID'); } if (\Yii::$app->request->headers->get('FZM-CURRENCY-ID')) { $this->currency_id = \Yii::$app->request->headers->get('FZM-CURRENCY-ID'); } // $allow_list = array_unique(\Yii::$app->params['allow_options_domain']['allow_options_domain']); // // $origin = \Yii::$app->request->headers->get('Origin'); // if (!in_array($origin, $allow_list)) { // $origin = implode(',', $allow_list); // } // $this->header('Access-Control-Allow-Origin', $origin); $this->header('Access-Control-Allow-Methods', 'POST,GET,OPTIONS,PUT,DELETE'); $this->header('Access-Control-Allow-Credentials', 'true'); $this->header('Access-Control-Allow-Headers', 'Authorization,FZM-REQUEST-OS,FZM-USER-IP,FZM-REQUEST-UUID,FZM-PLATFORM-ID,Content-Type,Content-Length'); } public function beforeAction($action) { $request_controller = Yii::$app->controller->id; $request_action = Yii::$app->controller->action->id; if ('platform-coins' == $request_controller && 'air-drop' == $request_action) { $rawParams = Yii::$app->request->post(); if (isset($rawParams['key'])) { $DES = Yii::$app->des; $params = $DES->decrypt($rawParams['key']); if ($params == false) { return ['code' => -1, 'data' => null, 'msg' => '缺少必要的参数']; } $rawBodyParams = json_decode($params, true); Yii::$app->request->setBodyParams($rawBodyParams); } } // if ('ticker' == $request_controller && 'hot-ticker' == $request_action) { // $realip = Tools::getUserIp(); // $ip_list = file_get_contents('http://172.16.0.230:8080/wallet_interface_ip_limit.txt'); // $ip_arr = explode("\n", $ip_list); // foreach ($ip_arr as $key => $ip) { // if ($ip == $realip) { // return false; // } // } // } $this->start = microtime(true); return parent::beforeAction($action); // TODO: Change the autogenerated stub } public function afterAction($action, $result) { $this->end = microtime(true); return parent::afterAction($action, $result); // TODO: Change the autogenerated stub } /** * 返回成功结果,附加成功code * @param type $data * @return array */ public static function formatSuccessResult($data = null) { return self::formatResult(0, 'ok', $data); } /** * 返回结果,附加部分信息 * @param int $errcode * @param string $errmsg * @param array $data */ public static function formatResult($errcode, $errmsg, $data = null) { $callback = Yii::$app->request->get('callback'); $result = [ 'errcode' => $errcode, 'errmsg' => $errmsg, ]; if ($data !== null) { $result['data'] = Yii::createObject('yii\rest\Serializer')->serialize($data); } $response = Yii::$app->response; $response->format = Response::FORMAT_JSON; //jsonp数据格式 if (!is_null($callback)) { Yii::$app->getResponse()->format = Response::FORMAT_JSONP; $result = [ 'data' => $result, 'callback' => $callback, ]; } return $result; } protected function addPaginationHeaders($pagination) { $links = []; foreach ($pagination->getLinks(true) as $rel => $url) { $links[] = "<$url>; rel=$rel"; } Yii::$app->getResponse()->getHeaders() ->set('X-Pagination-Total-Count', $pagination->totalCount) ->set('X-Pagination-Page-Count', $pagination->getPageCount()) ->set('X-Pagination-Current-Page', $pagination->getPage() + 1) ->set('X-Pagination-Per-Page', $pagination->pageSize) ->set('Link', implode(', ', $links)); } protected function getRequestedFields() { $fields = Yii::$app->request->get('fields'); $expand = Yii::$app->request->get('expand'); return [ preg_split('/\s*,\s*/', $fields, -1, PREG_SPLIT_NO_EMPTY), preg_split('/\s*,\s*/', $expand, -1, PREG_SPLIT_NO_EMPTY), ]; } protected function serializeModels(array $models) { list ($fields, $expand) = $this->getRequestedFields(); foreach ($models as $i => $model) { if ($model instanceof Arrayable) { $models[$i] = $model->toArray($fields, $expand); } elseif (is_array($model)) { $models[$i] = ArrayHelper::toArray($model); } } return $models; } public function header($key, $value) { $this->header_list[$key] = $value; } public function getHeaders() { return $this->header_list; } }